如何授予角色查看文本频道的权限 discord.py

How to give a role the permission to see a text channel discord.py

我正在为我的机器人制作票证命令。它工作正常,但是只有获得票证的人和具有管理员权限的成员才能看到该频道。如何为其添加支持角色? 这是我当前的代码:

rickroll 警报不要在下面的代码中转到 youtube link

@bot.event
async def on_ready():
  voteRemind.start()
  print('Bot is ready')
  await bot.change_presence(status=discord.Status.online, activity=discord.Streaming(name="Minecraft", url="https://www.youtube.com/watch?v=dQw4w9WgXcQ"))

  for channel in getTicketChannels():
    embed = discord.Embed(title='Support', description="""
    To create a ticket react with  

    <:Rules:910406026543652895> **RULES:**
      Tell The Problem The Second You Open 
      Don't Wait For Us To Ask
    """)
    guild = bot.get_guild(channel[0])
    channel = guild.get_channel(channel[1])
    await channel.purge()
    msg = await channel.send(embed=embed)
    await msg.add_reaction('')

@bot.event
async def on_reaction_add(reaction, user):
    if user == bot.user:
      return
    guild = reaction.message.guild
    if reaction.message.channel == guild.get_channel(getTicketChannel(guild.id)):
      await reaction.remove(user)
      if discord.utils.get(guild.channels, name=f"ticket-{user.display_name.lower()}"):
        return
      category = guild.get_channel(getTicketChannel(guild.id)).category
      embed = discord.Embed(title='Welcome to your ticket!', description="Support will be with you shortly.\n\n<:Rules:910406026543652895> \nTell The Problem The Second You Open \nDon't Wait For Us To Ask", color=0x1ff44d)

      overwrites = {
        guild.default_role: discord.PermissionOverwrite(read_messages=False),
        user: discord.PermissionOverwrite(read_messages=True)
      }
      ticket = await category.create_text_channel(name=f'┃{user.display_name}', topic=f"{user.display_name}'s Support Channel", overwrites=overwrites)
      await ticket.send(user.mention)
      await ticket.send(embed=embed)

如果您知道要对频道进行任何更改或添加 @MDA(支持角色的名称),请告诉我。 :)

您还需要为辅助角色添加 PermissionOverwrite。它看起来像这样:

support_role = discord.utils.get(guild.roles, name='MDA')
overwrites = {
    guild.default_role: discord.PermissionOverwrite(read_messages=False),
    user: discord.PermissionOverwrite(read_messages=True),
    support_role: discord.PermissionOverwrite(read_messages=True) # or whatever permissions the role should have
}
ticket = await category.create_text_channel(name=f'┃{user.display_name}', topic=f"{user.display_name}'s Support Channel", overwrites=overwrites)