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

Discord.py邀请奖励Cog的on_message致命令重复响应问题

问题原因与解决方案

根本原因

你的InviteReward cog中的on_message监听器调用了await self.bot.process_commands(message),而Discord.py的Bot类默认已在自身的on_message方法中执行命令处理逻辑。当你的cog注册额外的on_message监听器后,每次收到消息时命令处理会被执行两次:一次由Bot默认的on_message触发,另一次由你的cog监听器中的process_commands调用触发,这直接导致所有命令出现重复响应。

解决方案

移除cog的on_message监听器中的await self.bot.process_commands(message)语句即可。Bot的默认行为会自动处理命令的解析与执行,无需在自定义监听器中重复调用。

修改后的on_message方法示例:

@commands.Cog.listener()
async def on_message(self, message: discord.Message):
    # 保留你的消息处理逻辑
    # processing
    
    # 移除以下重复调用的代码
    # await self.bot.process_commands(message)

额外说明

如果你的主Bot类重写了on_message方法且未调用process_commands,则需要确保在某个位置(比如主Bot的on_message中)仅调用一次process_commands,避免重复执行。但根据你的描述,移除cog的监听器后功能恢复正常,说明你的Bot默认命令处理逻辑是正常运行的,因此只需移除重复调用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 15:33:11