discord.py引入Cogs后命令重复执行、出现Unknown Message等报错求助
问题根因
命令重复执行及关联报错的核心原因是你在embed_command.py的Cog中额外添加了on_message监听,并且手动调用了await self.client.process_commands(message)。discord.py的Bot实例本身默认会执行一次命令解析逻辑,额外手动调用就会导致每条命令被解析执行两次。
而你看到的Unknown Message报错是因为第一次命令执行已经触发了消息删除操作,第二次执行同个命令时要删除的消息已经不存在;Already playing audio报错是因为两次调用播放指令,第一次已经启动了音频播放,第二次调用时播放器处于正在运行状态。
解决方案
- 直接删除
embed_command.py中以下冗余代码即可:
@commands.Cog.listener() async def on_message(self, message): if message.author == self.client.user: return await self.client.process_commands(message)
不需要在Cog中手动处理命令解析,Bot实例会自动完成这一步骤。
2. 你当前已经注释掉了main.py中直接调用cogs setup的循环,使用load_extension加载Cog的逻辑是正确的,不需要修改。
修改后重启机器人即可解决命令重复执行、关联报错的问题。
内容的提问来源于stack exchange,提问作者Witalik Zarscikov
相关产品推荐
相关产品推荐

