You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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('******');

最后执行以下步骤确保生效:

  1. 登录Discord开发者门户,找到你的机器人应用
  2. 进入"Bot"页面,在"Privileged Gateway Intents"下开启"Message Content Intent"
  3. 重启你的机器人程序

内容的提问来源于stack exchange,提问作者R4pt0r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:54:52