Discord机器人可检测消息但无法读取消息内容的问题求助
Discord机器人无法读取消息内容的问题解决
问题情况
开发的Discord机器人能检测到消息事件,但无法读取消息的具体内容,message.content输出为空。
代码示例
import discord import os client = discord.Client(intents=discord.Intents.default()) @client.event async def on_ready(): print("This is user {0.user}".format(client)) @client.event async def on_message(message): print(message) print(message.content) if message.author == client.user: return if message.content.startswith("$hello"): await message.channel.send("Hello!") my_secret = os.environ['TOKEN3'] client.run(my_secret)
运行输出
<Message id=1089613042033111062 channel= type=<MessageType.default: 0> author=<Member id=1029808272267550740 name='l_programmer' discriminator='1926' bot=False nick=None guild=> flags=>
相关设置截图
URL配置界面:

机器人基础设置:

权限意图设置:

解决方法
1. 修改代码中的Intents配置
Discord的message_content权限不在默认Intents集合内,需手动开启:
import discord import os # 初始化默认Intents并开启消息内容权限 intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print("This is user {0.user}".format(client)) @client.event async def on_message(message): print(message) print(message.content) if message.author == client.user: return if message.content.startswith("$hello"): await message.channel.send("Hello!") my_secret = os.environ['TOKEN3'] client.run(my_secret)
2. 在Discord开发者后台开启对应权限
进入Discord开发者门户的机器人应用页面:
- 切换到「Bot」标签页
- 在「Privileged Gateway Intents」区域,开启Message Content Intent权限(对应第三个截图中的开关)
完成以上两步后,机器人即可正常读取消息内容。
内容的提问来源于stack exchange,提问作者Test000
相关产品推荐
相关产品推荐

