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

discord.py使用cogs后命令重复执行及Unknown Message报错如何解决

问题原因分析

指令重复执行原因

discord.ext.commands.Bot 实例默认会自动调用process_commands解析执行用户指令,你在Embed cog中自定义的on_message监听器内额外手动调用了一次await self.client.process_commands(message),导致每条用户消息都会触发两次指令解析,最终指令重复执行两次。

错误码10008 Unknown Message原因

你的clear指令第一行逻辑为删除触发指令的用户消息await ctx.message.delete(),由于指令重复执行,第二次运行到该逻辑时,目标消息已经被第一次执行的流程删除,调用删除不存在的Discord消息就会抛出该404错误。后续你取消embed指令内删除相关代码的注释后,也会出现同样的报错。

修复方案
  1. 直接删除Embed cog内的整个on_message监听器代码即可,无需手动调用指令解析逻辑,Bot实例会默认处理。
  2. (可选优化)删除main.py内冗余的cog导入代码:你已经实现了遍历cogs目录自动加载所有py文件的逻辑,上方注释的手动导入embed_command、music、定义cogs数组的代码无实际作用,可直接删除,避免后续误操作取消注释导致cog重复加载。
  3. (可选容错)如果需要避免后续其他场景下删除不存在的消息导致报错,可以给删除逻辑加异常捕获:
try:
    await ctx.message.delete()
except discord.NotFound:
    # 消息已被删除,无需处理
    pass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:48:03