Автомут в голосовом канале дискорда
Хочу произвести выдачу мута всем сидящим со мной в войсе. Что тут не так? Подскажите, пожалуйста. И как правильнее будет сделать?
@Bot.command()
async def all_mute(ctx):
a = []
channel = ctx.author.voice.channel
for member in channel.members:
await member.edit(mute = True)
await ctx.send("Исполнено")
Ответы (2 шт):
Автор решения: xZartsust
→ Ссылка
Попробуйте вот такой код:
@Bot.command()
async def all_mute(ctx):
channel = ctx.author.voice.channel
for member in channel.members:
await channel.set_permissions(member, speak = False)
await ctx.send("Исполнено")
Автор решения: LeonidM
→ Ссылка
Дело заключается в том, что channel.members всегда возвращает пустой список (новое обновление на серверах дискорда). Вместо этого надо делать так:
async for member in channel.fetch_members():
await channel.set_permissions(member, speak = False)
И, если что, когда человеку убираются права на использование микрофона, то ему надо перезайти, иначе он сможет дальше говорить и его будет слышно.