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

Discord机器人如何仅在用户回复自身消息时触发自动回复

Discord机器人仅响应回复自身消息的逻辑调整方案

问题根源

原有代码只判断了消息是否携带引用结构,没有校验引用的目标消息发送者身份,导致用户引用任意对象的消息只要匹配关键词就会触发机器人响应。
原有问题代码:

if message.reference:
    if "How are" in message.content.lower():
        await asyncio.sleep(3)
        await message.channel.send(random.choice(list4), reference=message)

修复方法

补充一层身份校验:获取被引用的原消息对象,判断原消息的发送者是否为机器人本身,只有校验通过才执行回复逻辑。
带容错的修复后完整代码:

if message.reference:
    if "How are" in message.content.lower():
        try:
            # 根据引用存储的频道ID获取对应频道实例
            target_channel = client.get_channel(message.reference.channel_id)
            # 拉取被引用的原消息完整内容
            replied_msg = await target_channel.fetch_message(message.reference.message_id)
        except:
            # 拉取失败场景(原消息已删除、无频道历史权限等)直接跳过,不触发响应
            return
        # 核心校验:原消息作者不是机器人自身则直接终止逻辑
        if replied_msg.author.id != client.user.id:
            return
        await asyncio.sleep(3)
        await message.channel.send(random.choice(list4), reference=message)

注意事项

  • 需提前给机器人开通对应频道的查看消息历史权限,否则拉取原消息的接口会调用失败
  • 上述判断逻辑完全兼容Discord全场景引用规则,不会误触发普通公屏发言、@机器人、引用其他用户消息的场景,也不会漏掉合法的回复机器人的消息
  • 如果需要更细粒度的控制,还可以在校验逻辑里补充判断被引用的机器人消息ID、消息内容等,实现指定机器人消息才触发对应回复的效果

内容的提问来源于stack exchange,提问作者Salih Erdem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:42:28