Discord.py Mute Командный канал Разрешения - PullRequest
0 голосов
/ 02 марта 2020

У меня есть команда >>setup mute, она создает отключенную роль, и мне нужно, чтобы она создавала разрешения для каждого канала для этой роли, но она устанавливает только разрешения для канала, в котором я запускаю >>setup mute, и устанавливает разрешения канала для роли @everyone, а не для отключенной. Может кто-нибудь помочь? Вот мой код

  elif command.lower() == 'mute':
    role = discord.utils.get(ctx.guild.roles, name='Muted')
    if role in ctx.guild.roles:
      await ctx.send('Already Setup')
    else:
      perms = discord.Permissions(send_messages=False, read_messages=True)
      role = await ctx.guild.create_role(name='Muted', permissions=perms)
      muted = discord.utils.get(ctx.guild.roles, name='Muted')
      for muted in ctx.guild.roles:
        await ctx.channel.set_permissions(muted, send_messages=False, read_messages=True, read_message_history=True)
      await ctx.send('Muted Role Created')

1 Ответ

1 голос
/ 04 марта 2020

Причина, по которой это не работает. Это то, что вы перебираете каждую роль и используете один и тот же канал. Затем установите разрешение отключить кого-то со всеми ролями на сервере, с тем же каналом. Это приводит к тому, что каждая роль отключается в одном канале:

muted = discord.utils.get(ctx.guild.roles, name='Muted')
for muted in ctx.guild.roles:
    await ctx.channel.set_permissions(muted, send_messages=False, read_messages=True, read_message_history=True)

Другая проблема заключается в том, что переменная muted скрыта от переменной muted, созданной для l oop. Из-за этого затенения первая строка не будет использоваться. Таким образом, полученная вами приглушенная роль вообще не используется.

В следующий раз вам нужно будет выбрать роль. Но затем выполните итерации по каждому каналу гильдии вместо ролей сервера (затем примените разрешения этой роли ко всем каналам.):

for channel in ctx.guild.channels:
    channel.set_permissions(muted, send_messages=False, read_messages=True, read_message_history=True)
...