Closed fixator10 closed 2 years ago
To clarify, is this audio muting or text muting? Like did you mute their mic or their ability to type?
This is caused by [p]mute
when no mute role is set up. The bot is currently calling channel_mute_user
for every channel in the server, and that function moves the user to that channel after applying the overrides if it has permissions to do so.[1] This is due to some legacy code from the old mutes cog, as when the bot attempted to mute a user in voice it wouldn't actively mute them until they rejoined the channel, so it moved them in and out of the channel to actually mute the person.[2] It seems like somewhere along the way that got changed to moving the user to every voice channel. I can confirm that this is still an issue, a speak
override only update when the user rejoins the voice channel. I would be inclined to believe that simply kicking the user from their current voice channel is the easiest fix to this issue.
[1] https://github.com/Cog-Creators/Red-DiscordBot/blob/008fb0f04219204e79cac981fe278da179f5c5bd/redbot/cogs/mutes/mutes.py#L1816-L1818 [2] https://discord.com/channels/133049272517001216/718148684629540905/1010645412908113992
I would be inclined to believe that simply kicking the user from their current voice channel is the easiest fix to this issue.
While it is an easy way to "fix" this, it's not really a proper fix. We intentionally chose this method over kicking a user when this functionality was implemented, see #4028.
A proper way to fix this would be to verify that the channel we're muting the user in is the channel the user is in and only move them in such a scenario. It shouldn't really be more complicated than the proposed solution and it actually fixes the problem instead of removing functionality.
What Red version are you using?
3.4.9
Cog name
Mutes
Command name
mute
What did you expect to happen?
Mute moves user from one channel to another, and then back.
Or through all channels, and then back.
What actually happened?
Mute moved user from one channel to another, moving through all channels in progress.
Final channel was not same as initial channel.
How can we reproduce this error?
Anything else?
Before mute: After mute: Audit log: