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

Discord.py on_message事件无限循环发消息问题修复咨询

问题原因

死循环的核心是对机器人自身消息的拦截判断错误。你现有代码中if message.author == client:的判断逻辑永远不成立:client是Discord客户端实例,而message.author是用户对象,二者不可能相等。这就导致机器人自己在指定频道发送的bgmi、news消息也会触发on_message事件,进而反复发送新消息形成死循环。

修正方案

将自身消息拦截的判断改为匹配client.user即可,修正后代码如下:

@client.event
async def on_message(message):
    # 正确拦截机器人自身发送的消息,避免触发循环
    if message.author == client.user:
        return
    if message.channel.id == 885569828436447254:
        await message.channel.send(bgmi)
        await message.channel.send(news)
补充注意事项
  • 如果你后续添加了前缀指令相关功能,需要在on_message函数末尾加上await client.process_commands(message),否则所有指令会被事件拦截无法正常触发。
  • 如果需要缩小触发范围避免误发,可在频道ID判断后追加额外校验逻辑,比如仅响应包含指定关键词的消息、仅响应特定权限组用户的消息等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:06:03