Discord.js消息监听失效求助:无法检测消息并回复
问题排查:Discord机器人无法监听消息事件
核心原因分析
restMode导致无法接收实时事件
你配置了restMode: true,该选项会让机器人仅使用Discord REST API,不建立网关连接。而消息监听这类实时事件完全依赖网关推送,开启后自然无法触发message事件回调。缺少消息类网关意图
当前仅声明了guilds意图,要监听服务器内的消息,需要补充消息相关意图(比如guildMessages,若使用Eris库;或是GuildMessages+MessageContent,若使用Discord.js)。其中MessageContent属于特权意图,需要在Discord开发者后台手动开启。事件名称可能不匹配
部分Discord库(如Discord.js v14+、Eris新版本)已将消息事件名称从message改为messageCreate,旧事件名无法触发回调。
修复后的代码示例
// 调整配置:关闭restMode,补充必要意图 const bot = new CommandClient(`Bot ${token}`, { intents: ['guilds', 'guildMessages', 'messageContent'], // 根据使用的库调整意图名称 maxShards: 'auto', restMode: false // 必须关闭才能接收网关事件 }) // 使用正确的事件名称,此处以messageCreate为例 bot.on('messageCreate', (message) => { message.reply('This is a reply!') .then(() => console.log("test")) .catch(console.error); })
额外检查项
- 登录Discord开发者门户,进入你的机器人应用页面,在「Privileged Gateway Intents」中开启
Message Content Intent并保存。 - 确认机器人的邀请链接包含必要权限(如
SendMessages、ReadMessageHistory等)。
内容的提问来源于stack exchange,提问作者MushroomFX
相关产品推荐
相关产品推荐

