使用Node.js开发Discord Bot时无法接收消息的问题
问题解决:Discord Bot无法接收消息
核心问题分析
你的Bot收不到消息主要是两个原因:
- 网关意图配置错误:当前只启用了
AutoModerationConfiguration,这个权限和消息读取无关,必须添加消息相关的意图才能获取消息事件。 - 事件名称过时:Discord.js v13及以上版本已废弃
message事件,需改用messageCreate事件监听新消息。
修正步骤
配置正确的网关意图
需要添加以下必要意图:Guilds:基础服务器访问权限,多数Bot功能依赖它GuildMessages:读取服务器内的消息DirectMessages(可选):读取Bot收到的私信MessageContent:特权意图,需在Discord开发者门户手动开启,用于读取消息内容
替换为正确的事件名称
把client.on('message', ...)改成client.on('messageCreate', ...)
修正后的完整代码
const Discord = require("discord.js"); const client = new Discord.Client({ intents: [ "Guilds", "GuildMessages", "DirectMessages", "MessageContent" ] }); client.on('ready', () => { console.log(`Logged in as ${client.user.tag}!`); }); client.on('messageCreate', msg => { console.log('Message received:', msg.content); if (msg.content === 'ping') { msg.reply('Pong!'); } }); client.login('你的Bot令牌');
额外操作
登录Discord开发者门户,找到你的Bot应用,进入「Bot」页面,在「Privileged Gateway Intents」区域开启Message Content Intent,保存后重启Bot即可生效。
内容的提问来源于stack exchange,提问作者Joelbu
相关产品推荐
相关产品推荐

