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