Discord.js 14.1消息处理器无响应问题求助
问题分析与解决方法
你的代码里有几个关键问题导致消息处理器无法触发:
- 事件名称错误:Discord.js v14及以上版本中,
message事件已被废弃,取而代之的是messageCreate事件。你仍然使用旧的事件名,所以永远不会触发消息检测逻辑。 - 需确认MessageContent权限状态:虽然你在代码中声明了
GatewayIntentBits.MessageContent,但必须在Discord开发者门户的机器人设置页面,手动开启"Message Content Intent"开关。这个权限默认是关闭的,仅在代码中声明不会生效。 - 提及判断逻辑存在隐患:你用
message.mentions.has(client.user.displayName)来检测是否被提及,但这个方法的正确用法是传入用户对象而非用户名——用户名可能重复,且mentions.has对用户对象的判断更准确。
修正后的代码如下:
import { Client, Message, GatewayIntentBits } from 'discord.js'; const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, ], }); client.on('ready', () => { console.log('ready!'); }); // 替换为messageCreate事件 client.on('messageCreate', async (message) => { console.log("Message Detected"); await message_handler(message); }); async function message_handler(message: Message) { if (client.user && message.mentions.has(client.user, { ignoreEveryone: true })) { console.log("Mention Rule Triggered") await message.channel.send(`Hello ${message.author.displayName}, I'm the new Community Manager!`) } } client.login('******');
最后执行以下步骤确保生效:
- 登录Discord开发者门户,找到你的机器人应用
- 进入"Bot"页面,在"Privileged Gateway Intents"下开启"Message Content Intent"
- 重启你的机器人程序
内容的提问来源于stack exchange,提问作者R4pt0r
相关产品推荐
相关产品推荐

