Discord.js无法获取消息内容,仅返回空字符如何解决?
解决Discord.js机器人message.content返回空的问题
- 检查机器人服务器权限:确保机器人在目标服务器中拥有「查看频道」「读取消息历史」权限,缺少这些权限会导致无法读取消息内容。
- 配置正确的Gateway Intent:Discord.js v14及后续版本要求显式启用消息相关Intent。创建Client实例时必须包含
GuildMessages和MessageContent这两个Intent,示例代码:
const { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent ] }); client.on('messageCreate', async (message) => { console.log(message.content); }); client.login('你的机器人令牌');
- 排查特殊消息类型:嵌入消息、系统通知消息(如成员加入提示)或仅含附件的消息,本身
message.content就是空值,属于正常情况。可通过message.embeds或message.attachments判断这类消息。 - 开启开发者门户的特权Intent:登录Discord开发者后台,找到你的机器人应用,在「Privileged Gateway Intents」板块开启「Message Content Intent」,这个开关不开启的话,代码里配置的Intent不会生效。
内容的提问来源于stack exchange,提问作者Nepzerox
相关产品推荐
相关产品推荐

