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

nextcord.py中on_raw_reaction_add反应角色功能失效求助

问题排查与修复方案

核心问题1:表情匹配逻辑错误

payload.emoji.name返回的是自定义表情的名称(即hi),但你代码里用了带ID的完整表情格式<:hi:999730650087165993>做匹配,这会导致条件永远不成立,自然不会执行获取角色的逻辑。

核心问题2:Guild对象冗余嵌套

你写了guild_user = user.guild,这已经是正确的Guild对象,但后续又用guild_user.guild.roles,相当于多了一层无意义的嵌套,应该直接用user.guild.roles或者guild_user.roles。

额外需要注意的问题

  • 权限与角色层级:确保机器人拥有管理角色权限,并且机器人的角色位置要高于你要添加的目标角色,否则无法执行添加角色操作。
  • 空角色判断:如果nextcord.utils.get找不到对应名称的角色,会返回None,直接调用add_roles会抛出错误,建议增加判断逻辑。

修复后的代码示例

@client.event
async def on_raw_reaction_add(payload):
    message_id = 999984925216358470

    if payload.message_id == message_id:
        user = payload.member
        guild = user.guild
        emoji = payload.emoji.name

        if emoji == "hi":
            role = nextcord.utils.get(guild.roles, name="the role")
            print(role)
            if role is not None:
                await user.add_roles(role)
            else:
                print("目标角色不存在")
    else:
        print("Not a reaction roles message")

内容的提问来源于stack exchange,提问作者Komrade FMX

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:48:20