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

Discord.js机器人无消息响应问题排查及解决方案咨询

Discord.js message 事件过时问题及替代方案

1. 代码是否过时?

是的,Discord.js v14 及更高版本已完全移除 message 事件,该事件在 v13 版本中就已被标记为废弃,当前代码无法触发消息监听逻辑。

2. 替代方案

基础文本命令实现

使用 messageCreate 事件替代原 message 事件,同时需确保机器人配置了必要权限:

client.on('messageCreate', message => {
    // 忽略机器人自身消息,避免触发循环
    if (message.author.bot) return;
    
    if (message.content === 'test') {
        message.author.send('tested1');
    }
});

机器人无法读取消息的解决

核心原因通常是未启用Message Content Intent权限:

  • 登录Discord开发者平台,进入你的应用页面
  • 切换到「Bot」标签页,在「Privileged Gateway Intents」区域开启「Message Content Intent」
  • 重新生成机器人邀请链接,确保勾选「View Channels」「Read Message History」「Send Messages」等必要权限

官方推荐方案:斜杠命令

Discord 官方建议使用斜杠命令替代传统文本命令,无需依赖消息内容权限,交互体验更规范:

// 在机器人就绪时注册斜杠命令(仅需执行一次)
client.on('ready', async () => {
    // 可指定服务器注册(替换为你的服务器ID),或移除guild参数实现全局注册
    const targetGuild = client.guilds.cache.get('你的服务器ID');
    await targetGuild.commands.create({
        name: 'test',
        description: '发送测试私信'
    });
});

// 监听斜杠命令交互
client.on('interactionCreate', async interaction => {
    if (!interaction.isChatInputCommand()) return;
    
    if (interaction.commandName === 'test') {
        // 发送仅用户可见的回复
        await interaction.reply({ content: '已发送测试私信', ephemeral: true });
        await interaction.user.send('tested1');
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:20:24