Rapptz / discord.py

An API wrapper for Discord written in Python.
http://discordpy.rtfd.org/en/latest
MIT License
14.9k stars 3.77k forks source link

Enable Bot to Mute another Member without using the Server Mute #6567

Closed marpy closed 3 years ago

marpy commented 3 years ago

Summary

Bot should be able to "self_mute" or soft mute another user

What is the feature request for?

The core library

The Problem

When a user joins a channel meant for generally quiet time, there is no way to automatically mute them without allowing them to unmute afterward unless they have admin permissions. If there's a channel that's meant for more quiet/study times that anyone can join, they can potentially disrupt an ongoing conversation. Utilizing the current mute functionality by the bot is a Server Mute, which would prevent the user from unmuting themselves unless they have proper permissions to do so.

The Ideal Solution

Discord allows server admins and others with the mute permission to mute a user that's equivalent to a self mute. I'd like for the Member.edit() function to include self_mute/soft_mute and self_deafen/soft_deafen to be new options to facilitate this. This will allow the user to unmute themselves in the normal fashion, which will require a deliberate action on their part, thereby reducing the disruption/interruption on a fresh join.

The Current Solution

There really isn't one at the moment, save manually muting people. But the reaction time of humans is much slower than that of computers, so it's basically a moot point.

lmaotrigine commented 3 years ago

Self-mute/deaf cannot be done through the API. This can only by done by the user themselves.

Phxntxm commented 3 years ago

Discord allows server admins and others with the mute permission to mute a user that's equivalent to a self mute.

I'm quite certain this does not exist, there are only two mutes... a server mute, and a "personal mute" for lack of a better word. The latter mutes the person for only the person who muted them

xSetrox commented 3 years ago

As others have said, this isn't possible. You can't force users to client-side mute themselves. If you need to have a "quiet" channel I suggest restricting the "voice activity" permission from everyone in it so that they may only talk with push to talk. That should have around the same effect as what you are proposing.

Rapptz commented 3 years ago

You can't self-mute another member through the API.

If you want to mute them yourself as a moderator movement then there's Member.edit. If you want to self-mute or self-deafen the bot for whatever reason there's Guild.change_voice_state.

Anything else is not possible via the API.

marpy commented 3 years ago

Thanks @Rapptz, you're right that the API doesn't enable that, I should have checked there first.

The functionality does exist in the client UI, so I thought it was possible via API. Thanks!