已开启消息意图但discord.py的message.content返回空值的问题排查
问题原因与解决方案
你的问题核心在于代码中未启用message_content意图——尽管你在开发者门户开启了该权限,但discord.py v2.0+版本要求必须在代码中显式声明启用这个意图,否则无法获取消息内容,进而导致机器人无响应。
修复步骤:
- 再次确认Discord开发者门户中,机器人的
Privileged Gateway Intents下的Message Content Intent已处于开启状态(你已完成此操作,可快速核对)。 - 修改代码中的intents配置部分,添加
message_content意图的启用:
import discord from random import choice TOKEN = "你的令牌" # 修改intents配置,新增message_content启用 intents = discord.Intents.default() intents.members = True intents.message_content = True # 关键新增行 client = discord.Client(intents=intents) # 其余代码保持不变 with open('answers.txt','r') as f: word = choice(f.readlines()) @client.event async def on_ready(): print('Logged in as {0.user}'.format(client)) @client.event async def on_message(message): username = str(message.author).split('#')[0] user_message = str(message.content) print(username,user_message) if message.author == client.user: return if message.content.startswith('hi'): await message.channel.send(f'Hi {username}, you said {user_message}') return client.run(TOKEN)
补充说明:
discord.py从v2.0版本开始,将message_content列为特权意图,必须同时满足两个条件才能正常获取消息内容:
- 开发者门户中开启对应意图
- 代码中显式设置
intents.message_content = True
缺少任一条件,message.content都会返回空字符串,机器人也就无法触发消息响应逻辑。
内容的提问来源于stack exchange,提问作者Zacurnia Tate
相关产品推荐
相关产品推荐

