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

Discord.py 制作指定消息触发授身份组机器人遇Unknown Role报错如何解决

排查解决步骤
  • 优先检查机器人的角色层级与权限:首先确认机器人已经被授予管理角色权限,其次在服务器的角色列表中,机器人自身的角色排序必须高于你想要分配的目标角色排序,Discord的角色权限规则不允许低层级角色对高层级角色执行任何操作,这是触发未知角色报错的最常见原因。
  • 修正代码的参数错误:你当前调用add_roles方法时传参有误,add_roles是用户对象的内置方法,不需要额外传入用户对象作为第一个参数,将原代码的await message.author.add_roles(message.author, role)修改为await message.author.add_roles(role)即可。
  • 补充角色获取的空值校验逻辑:get方法没有找到对应角色时会返回None,你当前的代码没有做校验,建议补充判断逻辑,方便排查问题,参考修改后的代码:
@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content == 'give me admin':
        # 此处替换为你实际的角色名称
        role = get(message.guild.roles, name='role')
        if not role:
            await message.channel.send("未找到匹配的角色")
            return
        await message.author.add_roles(role)
  • 替换为角色ID获取角色:如果确认角色名称完全一致还是获取失败,可以改用角色ID获取,避免名称包含不可见字符、大小写识别偏差的问题。开启Discord开发者模式后右键对应角色复制ID,使用role = message.guild.get_role(你复制的角色ID)来获取角色即可。

内容的提问来源于stack exchange,提问作者John Persuro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:54:00