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

Discord机器人CommandNotFound报错及消息监听器无响应问题

问题原因及解决方案

核心问题1:自定义on_message阻塞命令处理

在Cog中自定义on_message监听器后,会覆盖Discord.py默认的消息处理逻辑,导致bot无法解析命令,这就是black命令提示找不到的原因。必须手动触发命令处理流程,才能让命令被识别。

核心问题2:未启用message_content意图(Discord.py v2.x+ 强制要求)

Discord.py 2.0及以上版本需要显式开启message_content意图,否则无法读取消息内容,监听器里的message.content == "hello"判断永远不成立,自然不会触发响应。


修复步骤:

  1. 启用消息内容意图
    创建Bot实例时添加意图配置:

    import discord
    from discord.ext import commands
    
    # 启用默认意图+消息内容意图
    intents = discord.Intents.default()
    intents.message_content = True
    
    # 替换成你实际使用的命令前缀
    bot = commands.Bot(command_prefix="!", intents=intents)
    
  2. 修改on_message监听器,补充命令处理
    在监听器函数末尾添加命令处理调用,确保bot能同时处理自定义消息逻辑和命令:

    @commands.Cog.listener()
    async def on_message(self, message):
        if message.content == "hello":
            await message.channel.send("HI!")
        # 关键:让bot处理命令
        await self.bot.process_commands(message)
    
  3. 确保命令调用格式正确
    调用命令时必须加上你设置的前缀,比如前缀是!,则发送!black而非直接发black,否则bot会将其视为普通消息,无法识别为命令。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:50:32