如何让机器人创建一个文本通道,命令用户和特定角色可以访问该通道? (改写)
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
需要一个成员或角色。在这个例子中:
ctx.guild.default_role
给@everyone
ctx.guild.me
对于机器人本身
support_role
支持角色
ctx.author
命令用户
我正在做服务器,我想要私人门票。你如何做到只有角色 "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
需要一个成员或角色。在这个例子中:
ctx.guild.default_role
给@everyonectx.guild.me
对于机器人本身support_role
支持角色ctx.author
命令用户