Discord机器人已登录但不响应消息,请求排查故障
问题原因及解决方案
问题出在机器人的意图(Intents)配置不完整,导致无法触发messageCreate事件。
具体原因
discord.js v14及以上版本要求明确声明机器人所需的权限意图,你当前仅配置了数值为8的Guilds意图——这个权限仅能让机器人登录并识别服务器,但没有权限接收服务器内的消息、读取消息内容,所以messageCreate事件完全不会被触发。
修复步骤
修正代码中的意图配置
替换原有的intents配置,添加接收消息和读取内容所需的意图。推荐使用枚举值而非硬编码数字,避免记错数值:require('dotenv').config(); const Discord = require('discord.js'); const client = new Discord.Client({ intents: [ Discord.IntentsBitField.Flags.Guilds, Discord.IntentsBitField.Flags.GuildMessages, Discord.IntentsBitField.Flags.MessageContent ] }); client.on('ready', () => { console.log("Logged in as bot!"); // client.user.setActivity(`Locating new targets for synthesis.`, { type: "WATCHING" }); }) client.on('messageCreate', msg => { if (msg.content === 'ping') { msg.channel.send('pong') } }) client.login(process.env.TOKEN);对应的数值配置也可以写成
[1, 32, 1024],但枚举值可读性更强。开启Discord开发者后台的特权意图
MessageContent属于特权意图,需要手动在Discord开发者平台开启:- 进入你的机器人应用页面,切换到「Bot」标签页
- 找到「Privileged Gateway Intents」区域
- 开启「Message Content Intent」并保存设置
完成以上两步后,重启机器人,发送ping就能收到pong响应了。
内容的提问来源于stack exchange,提问作者DANser
相关产品推荐
相关产品推荐

