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

discord.py中使用on_raw_reaction_add时如何检测机器人添加了消息反应

检测反应添加者是否为机器人的实现方法

on_raw_reaction_add 事件触发时会传入 RawReactionActionEvent 类型的 payload 对象,其中携带了添加反应的用户ID,你只需要通过该ID拉取用户对象,判断内置的bot属性即可完成区分。

核心实现代码

你可以直接在事件函数开头加入判断逻辑,匹配机器人触发的场景后走对应处理分支即可:

@client.event # 如果你用的是Bot实例就替换为@bot.event
async def on_raw_reaction_add(payload):
    # 拉取添加反应的用户完整对象
    reaction_user = await client.fetch_user(payload.user_id)
    
    # 判断是否为机器人
    if reaction_user.bot:
        # 此处编写机器人添加反应后的处理逻辑
        print(f"检测到机器人{reaction_user.name}添加了反应:{payload.emoji}")
        return
    
    # 下方编写普通用户添加反应后的处理逻辑

注意事项

  • 如果你已经开启了members网关意图,也可以用client.get_user(payload.user_id)替代fetch_user,不需要异步等待性能更高,但如果用户不在本地缓存中会返回None,通用性弱于fetch_user。
  • 不要直接通过payload.member判断身份,如果反应添加在私聊消息中,payload.member会返回None,通过用户ID拉取用户对象的方式兼容所有场景。

内容的提问来源于stack exchange,提问作者Shlok Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:15:02