discord.py开发:如何给支持角色配置工单文本频道的查看权限
修改方法
你只需要调整on_reaction_add事件中工单频道的权限覆盖配置逻辑,给MDA角色开放对应权限即可,具体修改内容如下:
- 在定义
overwrites字典前,先获取服务器内的MDA角色 - 将MDA角色添加到权限覆盖列表,开放可见、发消息等必要权限
修改后的完整对应代码段:
@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) # 新增:获取MDA支持角色 mda_role = discord.utils.get(guild.roles, name="MDA") overwrites = { guild.default_role: discord.PermissionOverwrite(read_messages=False), user: discord.PermissionOverwrite(read_messages=True, send_messages=True, read_message_history=True) } # 新增:如果MDA角色存在,添加对应权限 if mda_role: overwrites[mda_role] = discord.PermissionOverwrite( read_messages=True, send_messages=True, read_message_history=True, attach_files=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角色时报错
- 除了可见权限外,额外给MDA角色开放了发消息、看历史记录、传附件的常用支持权限,如果你不需要可以自行删除对应参数
- 如果你的MDA角色名带有特殊符号、大小写和
MDA不一致,把name="MDA"里的内容改成你实际的角色名即可
内容的提问来源于stack exchange,提问作者Candy Cat
相关产品推荐
相关产品推荐

