Discord.py中如何获取消息内容?message.content返回空值问题
解决Discord.py中message.content返回空值的问题
核心原因
Discord API 后续版本调整了权限策略,消息内容读取权限不再默认开放,必须手动开启相关网关意图(Intent)才能获取message.content的值。
解决步骤
1. 在Discord开发者平台开启消息内容意图
- 登录Discord开发者平台,找到你的机器人应用
- 进入「Bot」页面,下滑到「Privileged Gateway Intents」区域
- 开启「Message Content Intent」选项,保存更改
2. 在代码中启用消息内容意图
初始化机器人客户端时,必须显式传入包含消息内容权限的意图配置,示例代码如下:
import discord from discord.ext import commands # 初始化基础意图,并开启消息内容权限 intents = discord.Intents.default() intents.message_content = True # 传入意图创建Bot实例 bot = commands.Bot(command_prefix='!', intents=intents) @bot.event async def on_message(message: discord.Message): print(message.content) print(message.author.name) print(message.channel.name) # 如果使用命令框架,必须添加该行,否则自定义命令会失效 await bot.process_commands(message) # 替换为你的机器人令牌 bot.run('YOUR_BOT_TOKEN')
额外注意
- 若使用
discord.Client而非commands.Bot,初始化时同样需要传入配置好的intents参数:client = discord.Client(intents=intents) - 确保机器人的令牌与开发者平台中开启权限的应用对应,避免权限不匹配
内容的提问来源于stack exchange,提问作者Comthefox2486
相关产品推荐
相关产品推荐

