discord.py消息检测失效:代码无法识别特定单词,求排查错误
问题排查与修复方案
代码里的核心错误有3处:
- 事件名称拼写错误:把
on_message写成了on_messge,少了字母s,discord.py无法识别这个错误命名的事件,导致消息检测逻辑根本不会触发。 - 参数与属性调用错误:
on_message事件的参数是message对象(不是ctx);另外content是对象的属性,不是方法,不能加括号调用,正确写法是message.content。 - 消息内容权限缺失(针对discord.py v2.x+):如果用的是discord.py 2.0及以上版本,必须在Discord开发者门户开启消息内容意图(Message Content Intent),同时代码里初始化客户端时要指定开启该意图,否则机器人读不到消息内容。
修正后的完整代码
import discord # 初始化客户端,开启消息内容意图 intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_message(message): # 跳过机器人自己发的消息,避免循环触发 if message.author == client.user: return msg = message.content.lower() # 转小写实现不区分大小写的匹配 words_list = ["check", 'for', 'any', 'word', 'from', 'list'] if any(word in msg for word in words_list): await message.channel.send("message here") # 替换成你的机器人令牌 client.run("YOUR_BOT_TOKEN")
内容的提问来源于stack exchange,提问作者b00walk3r
相关产品推荐
相关产品推荐

