You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.py开发:如何给支持角色配置工单文本频道的查看权限

修改方法

你只需要调整on_reaction_add事件中工单频道的权限覆盖配置逻辑,给MDA角色开放对应权限即可,具体修改内容如下:

  1. 在定义overwrites字典前,先获取服务器内的MDA角色
  2. 将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:45:03