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

Discord.js机器人无法响应消息的排查求助

问题排查与修复方案

1. 开启Discord开发者门户的消息内容特权

这是导致messageCreate事件不触发的最常见原因:

  • 登录Discord开发者门户,进入你的机器人应用
  • 切换到「Bot」标签页,找到「Privileged Gateway Intents」区域
  • 开启「Message Content Intent」选项
  • 保存设置后重启机器人

2. 适配discord.js版本的Intent配置

如果使用discord.js v14及以上版本,Intent写法已更新,需替换为GatewayIntentBits并显式添加消息内容权限:

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ 
  intents: [
    GatewayIntentBits.Guilds, 
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent
  ] 
});

若为v13版本,确保代码中已包含Intents.FLAGS.GUILD_MESSAGES,同时必须在开发者后台开启上述消息内容特权。

3. 修复代码中的潜在问题

  • 修正拼写错误:将permision改为permission,避免后续权限判断逻辑出错
  • 优化机器人消息判断:用if (msg.author.bot) return;替代用户名匹配,避免重名导致的误判

修复后的消息事件代码示例:

client.on('messageCreate', async msg => {
    // 跳过所有机器人发送的消息,判断更可靠
    if (msg.author.bot) return;

    // 权限检查修正拼写
    const permission = msg.channel.permissionsFor(client.user);
    const permissionArray = permission.toArray();

    // 命令逻辑保持不变
    if(msg.content.includes("!playwordle")) {
        Wordle.LoadNewWordle(msg);
    }
    if(msg.content.includes("!guess")) {
        Wordle.PlayWordle(msg);
    }
    if(msg.content.includes("!wordlestats")) {
        Wordle.ShowWordleStats(msg);
    }
});

4. 验证服务器权限

确保机器人在目标服务器中拥有「读取消息历史」「发送消息」等必要权限,可在服务器设置的「角色」面板中检查机器人角色的权限配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:52:14