如何使机器人创建一个文本通道,具有命令用户和有权访问通道的特定角色?(重写)



我正在制作服务器,我想要私人票证。您如何使角色"支持"和命令用户是唯一访问频道的人?(机器人也可以(。

当前代码:

@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={}
它需要目标的字典,因此您必须通过utils.get()功能获得"支持"角色:


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