Discord bot无法识别用户消息 新手开发消息触发回复功能故障求助
问题排查与修复
- 事件函数拼写错误:你定义的消息处理函数名为
on_messsage,比正确的事件名on_message多了一个s,导致Discord事件触发时无法调用到你的处理逻辑,这是最直接的不响应原因。 - 缺少消息内容意图配置:discord.py v1.5及以上版本强制要求显式声明消息内容意图,你需要同时在代码和Discord开发者后台开启该权限,否则无法读取用户发送的消息文本。
- 触发词匹配不匹配需求:你预期用户发
hi就触发问候,但当前代码仅匹配了hello,所以发送hi不会触发对应回复。
修复后代码
import os import discord # 显式声明并开启消息内容意图 intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print("We are {0.user} and we are on a cruise".format(client)) # 修正函数名拼写 @client.event async def on_message(message): username = str(message.author).split('#')[0] user_message = str(message.content) channel = str(message.channel.name) print(f'{username}: {user_message} ({channel})') if message.author == client.user: return if channel == 'general': # 新增hi的匹配规则 if user_message.lower() in ['hello', 'hi']: await message.channel.send(f'Hello {username}') return elif user_message.lower() == 'bye': await message.channel.send(f'Bye {username}') return client.run(os.environ['taisho-secret'])
操作校验项
- 登录Discord开发者平台,进入对应机器人的设置页,在「Privileged Gateway Intents」分类下开启
Message Content Intent开关 - 确认你测试消息的频道名称确实为
general,若频道名不同可修改代码中的匹配规则
内容的提问来源于stack exchange,提问作者Meteo Serpent
相关产品推荐
相关产品推荐

