如何让机器人创建一个文本通道,命令用户和特定角色可以访问该通道? (改写)

How to make it so that the bot creates a text channel, with the command user and a certain role with access to the channel? (Rewrite)

我正在做服务器,我想要私人门票。你如何做到只有角色 "Support" 和命令用户才能访问频道?(机器人也可以)。

当前代码:

@client.command()
async def ticket(ctx):
    global ticketNumber
    ticketNumber = str(ticketNumber)
    name = 'Tickets'
    category = discord.utils.get(ctx.guild.categories, name=name)
    guild = ctx.message.guild
    await guild.create_text_channel(f'Ticket-{ticketNumber}', category=category)
    ticketNumber = int(ticketNumber) + 1

要创建具有权限的文本频道,您可以添加参数 overwrites={}
它需要一个 Dictonary 的目标,因此您必须使用 utils.get() 函数获得 "Support" 角色:


support_role = discord.utils.get(ctx.guild.roles, name="Support")

overwrites = {
   ctx.guild.default_role: discord.PermissionOverwrite(read_messages=False),
   ctx.guild.me: discord.PermissionOverwrite(read_messages=True, send_messages=True),
   support_role: discord.PermissionOverwrite(read_messages=True, send_messages=True),
   ctx.author: discord.PermissionOverwrite(read_messages=True, send_messages=True)
}

await ctx.guild.create_text_channel(f'Ticket-{ticketNumber}', category=category, overwrites=overwrites)

字典 overwrites 需要一个成员或角色。在这个例子中:

  1. ctx.guild.default_role 给@everyone
  2. ctx.guild.me 对于机器人本身
  3. support_role 支持角色
  4. ctx.author 命令用户