使用Nextcord开发Bot时,photo指令失效但on_message事件可正常运行的问题
问题原因与解决方案
核心原因:当你自定义
on_message事件处理函数时,Nextcord会默认跳过内置的命令解析流程。也就是说,如果你不在on_message里显式调用await bot.process_commands(message),所有用@bot.command()定义的指令都会失效;而你自己在on_message里写的文本匹配逻辑不受这个机制影响,这就是两种实现出现差异的根本原因。修复方法:修改你的
on_message代码,添加命令处理的调用,让内置命令系统恢复工作:
@bot.event async def on_message(message): if not message.author.bot: if '/photo' in message.content: await message.channel.send(message.author.avatar.url) # 必须添加这一行,确保命令解析器正常处理@bot.command()定义的指令 await bot.process_commands(message)
如果不需要同时保留两种实现,建议只保留一种:要么用@bot.command()的官方命令方式(可以删掉on_message里的对应判断逻辑),要么继续用on_message的自定义匹配方式,但这种方式需要自己处理命令前缀、参数解析等细节,不如官方命令系统便捷。
内容的提问来源于stack exchange,提问作者mhnd
相关产品推荐
相关产品推荐

