簡體   English   中英

Discord.py 靜音命令通道權限

[英]Discord.py Mute Command Channel Permissions

我有一個>>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')

它不起作用的原因。 是您迭代每個角色並使用相同的頻道。 然后設置權限以將服務器中所有角色的人靜音,並使用相同的頻道。 這導致每個角色在單個通道中被靜音:

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 變量被 for 循環創建的 muted 變量遮蔽。 由於這種陰影,第一行不會被使用。 因此,您獲得的靜音角色根本沒有使用。

下次需要做的是選擇一個角色。 但是然后遍歷公會的每個頻道而不是服務器的角色(然后在所有頻道中應用該角色的權限。):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM