Discord机器人启动报错BitFieldInvalid:GUILDS无效求助
解决Discord.js的BitFieldInvalid错误(GUILDS无效)
核心原因
这个错误是因为你使用的Discord.js版本(大概率是v14及以上)中,Intent常量的命名规则发生了变化:原来的全大写GUILDS改成了首字母大写的Guilds,同时Intent的导入方式也有调整,导致代码中的旧写法无法被当前版本识别。
修复步骤
1. 确认Discord.js版本
先查看当前安装的Discord.js版本:
npm list discord.js
如果版本显示为v14.x及以上,按以下步骤修改代码;如果是v13及以下,跳过步骤2,直接检查权限设置。
2. 修正代码中的Intent写法
找到main.js中创建Client实例的代码(对应报错信息里的第4行),将旧的Intent写法替换为v14兼容的格式:
错误示例:
const { Client, Intents } = require('discord.js'); const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
修正后代码:
const { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [GatewayIntentBits.Guilds] });
注意:v14开始,Intent常量从
Intents.FLAGS迁移到了GatewayIntentBits,同时常量名改为驼峰式(首字母大写)。
3. 开启机器人权限
登录Discord开发者平台,进入你的机器人应用页面:
- 切换到「Bot」标签
- 在「Privileged Gateway Intents」区域,确保你需要的Intent(比如
Server Members Intent、Message Content Intent)已开启 - 保存设置后重启机器人
4. 版本回退(可选)
如果不想修改代码,可以回退到Discord.js v13版本:
npm uninstall discord.js npm install discord.js@13.16.0
回退后可继续使用Intents.FLAGS.GUILDS的旧写法。
内容的提问来源于stack exchange,提问作者Morgan
相关产品推荐
相关产品推荐

