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

Node.js编写的Discord Bot可正常运行但不响应命令,求问题排查

Discord Bot 不响应指令问题修复方案

核心问题1:事件API已废弃

discord.js v13及更高版本已经废弃了message监听事件,替换为messageCreate事件,你当前监听的旧事件不会被触发,因此无法响应消息。

核心问题2:缺少必要的网关意图

Discord API要求开发者显式声明Bot需要使用的权限意图,你当前仅声明了GUILDS意图,缺少两个必须的权限:

  • GUILD_MESSAGES:允许Bot接收服务器频道内的消息
  • MESSAGE_CONTENT:允许Bot读取消息的文本内容

注意:MESSAGE_CONTENT属于特权意图,除了代码中声明外,还需要登录Discord开发者后台,进入对应Bot的管理页面,在「Privileged Gateway Intents」区域手动开启对应开关,否则无法生效。

核心问题3(仅discord.js v14+版本适用):意图枚举写法变更

v14以上版本移除了Intents.FLAGS的写法,改为使用GatewayIntentBits枚举,需要同步调整导入和初始化逻辑。

修复后的完整代码(兼容discord.js v13版本)

const { Client, Intents } = require('discord.js');
const config = require('./config.json');
const client = new Client({ 
  intents: [
    Intents.FLAGS.GUILDS,
    Intents.FLAGS.GUILD_MESSAGES,
    Intents.FLAGS.MESSAGE_CONTENT
  ] 
});

client.once('ready', () => {
  console.log('Ready!');
});

// 替换为新版消息事件名
client.on('messageCreate', message=>{
  if(!message.content.startsWith(config.prefix) || message.author.bot) return;

  const args = message.content.slice(config.prefix.length).split(/ +/);
  const command = args.shift().toLowerCase();

  if(command === 'ping'){
      message.channel.send('pong!');
  }
})

client.login(config.token);

v14版本适配调整说明

如果你的discord.js依赖版本为v14及以上,仅需要修改代码前两行的导入和意图声明部分即可:

// 替换导入语句
const { Client, GatewayIntentBits } = require('discord.js');
// 替换意图声明部分
const client = new Client({ 
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent
  ] 
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:24:03