Discord.js机器人无法触发消息事件求助
问题解决
你的机器人未触发消息事件存在两个核心问题:
1. 事件名称错误
Discord.js v13及以上版本中,消息创建事件的正确名称是messageCreate(小写开头,而非你使用的Message)。旧版v12及更早版本使用message,但新版本已废弃该旧事件名,必须使用messageCreate才能正常触发。
2. 缺少必要的消息监听意图
你当前仅启用了GUILD_MEMBERS(十六进制0x0000000000000008)意图,而监听服务器内消息需要GUILD_MESSAGES意图(对应十六进制0x0000000000000040)。若需要监听私信消息,还需追加DIRECT_MESSAGES(十六进制0x0000000000000800)。
修正后的代码
const Discord = require('discord.js'); // 启用GUILD_MESSAGES意图,如需监听私信可追加 | 0x0000000000000800 const bot = new Discord.Client({ disableEveryone: false, intents: [0x0000000000000040] }); bot.on('ready', () => { console.log('Loaded!'); bot.user.setActivity('Running a test, hopefully.'); }); // 使用正确的事件名messageCreate bot.on("messageCreate", (message) => { console.log('Message!'); }); bot.login("bot token");
补充说明:如果你的机器人需要使用GUILD_MEMBERS这类特权网关意图,需在Discord开发者门户的机器人页面手动开启对应权限;但GUILD_MESSAGES不属于特权意图,无需额外操作。
内容的提问来源于stack exchange,提问作者Максим Чуб
相关产品推荐
相关产品推荐

