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

Python开发Discord机器人关键词触发后无限重复回复该如何解决?

问题原因

on_message事件监听器会捕获当前服务器所有可见的新消息,包含机器人自身发送的内容。你设置的触发规则是消息内容包含abc,而机器人回复的内容abc def本身就命中触发条件,所以机器人每发一次回复都会再次触发监听逻辑,陷入无限循环。

修复方法

在监听器逻辑最前端增加过滤规则,直接跳过机器人账号发送的所有消息即可,修改后的代码如下:

@commands.Cog.listener()
async def on_message(self, message):
    # 过滤所有机器人发送的消息,避免循环触发
    if message.author.bot:
        return
    if "abc" in message.content.lower():
        await message.channel.send('abc def')

如果你的使用场景存在多个机器人共存、且需要响应其他机器人发送的含abc的消息,可以替换成仅过滤自身ID的写法:

@commands.Cog.listener()
async def on_message(self, message):
    # 仅跳过当前机器人自身发送的消息
    if message.author.id == YOUR_BOT_USER_ID:
        return
    if "abc" in message.content.lower():
        await message.channel.send('abc def')

只需把代码中的YOUR_BOT_USER_ID替换为你自己的机器人账号数字ID即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 09:00:04