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

Discord.js bot 修改intent后出现BITFIELD_INVALID错误该如何解决?

错误原因

你当前的报错是因为Intents下不存在message、channel、reaction这三个属性,所有合法的网关意图枚举值都必须从Intents.FLAGS下选取,非法值会触发位字段校验失败的报错。

修正步骤

  • 修正意图配置,补充必须的基础意图,删除非法的意图值。Discord.js v13及以上版本要读取消息内容,还需新增Intents.FLAGS.MESSAGE_CONTENT权限。
  • 替换废弃的message监听事件,v13版本开始该事件已被移除,替换为messageCreate才能正常触发消息回调。
  • 修正登陆参数,你已经引入了dotenv,需要从环境变量中读取TOKEN,直接写TOKEN会触发变量未定义报错。
  • 前往Discord开发者后台的Bot设置页,开启Privileged Gateway Intents下的Message Content Intent开关,否则无法读取服务器内的消息内容。

修正后完整代码(适用于Discord.js v13)

require('dotenv').config();
const { Client, Intents } = require('discord.js');
const client = new Client({ 
  intents: [
    Intents.FLAGS.GUILDS, // 服务器基础访问权限,必须开启
    Intents.FLAGS.GUILD_MESSAGES, // 服务器消息访问权限
    Intents.FLAGS.MESSAGE_CONTENT // 读取消息内容权限,v13+必须开启
  ] 
});

client.on('ready', () => {
  console.log(`It's welcome time`);
});

// 替换为v13+支持的messageCreate事件
client.on('messageCreate', msg => {
  // 跳过机器人自身发送的消息,避免触发无限循环
  if (msg.author.bot) return;
  if (msg.content === 'Hi') {
    msg.reply('Welcome wallet warrior!');
    msg.channel.send('Welcome wallet warrior!');
  } else {
    msg.channel.send('Hi, please introduce yourself');
  }
});

// 从环境变量读取TOKEN
client.login(process.env.TOKEN);

如果你使用的是Discord.js v14版本,引入和配置方式需要调整为:

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

其余逻辑和v13版本完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:06:04