运行GitHub下载的discord.js代码报CLIENT_MISSING_INTENTS错误
错误原因
discord.js v13及更高版本对接Discord v8+ API时,强制要求开发者在初始化客户端时明确声明网关意图(Intents),意图决定了机器人可接收的网关事件范围和可访问的数据权限。你的代码中初始化Discord.Client时未传入intents参数,因此触发CLIENT_MISSING_INTENTS报错。
解决方法
第一步:确认需要的权限
你使用的是音乐类机器人,通常需要以下核心意图:
- 服务器基础权限:
GUILDS - 消息读取权限:
GUILD_MESSAGES、DIRECT_MESSAGES - 语音控制权限:
GUILD_VOICE_STATES - 消息反应权限:
GUILD_MESSAGE_REACTIONS - 若使用discord.js v14且需要读取消息内容,还需添加
MESSAGE_CONTENT特权意图
第二步:修改初始化配置
若使用discord.js v13版本,修改index.js中客户端初始化代码如下:
const client = new Discord.Client({ fetchAllMembers: false, restTimeOffset: 0, shards: "auto", restWsBridgetimeout: 100, disableEveryone: true, partials: ['MESSAGE', 'CHANNEL', 'REACTION'], // 新增intents配置 intents: [ Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES, Discord.Intents.FLAGS.GUILD_VOICE_STATES, Discord.Intents.FLAGS.GUILD_MESSAGE_REACTIONS, Discord.Intents.FLAGS.DIRECT_MESSAGES ] });
若使用discord.js v14版本,调整写法如下:
// 头部导入调整 const { Client, GatewayIntentBits, Partials } = require("discord.js"); const colors = require("colors"); const Enmap = require("enmap"); const fs = require("fs"); // 客户端初始化调整 const client = new Client({ fetchAllMembers: false, restTimeOffset: 0, shards: "auto", restWsBridgetimeout: 100, disableEveryone: true, partials: [Partials.Message, Partials.Channel, Partials.Reaction], intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates, GatewayIntentBits.GuildMessageReactions, GatewayIntentBits.DirectMessages, GatewayIntentBits.MessageContent ] });
第三步:开启特权意图(可选,按需操作)
如果用到GUILD_MEMBERS、MESSAGE_CONTENT这类特权意图,需要先登录Discord开发者后台,进入对应机器人的管理页面,找到「Privileged Gateway Intents」板块,手动开启对应意图的开关,否则运行时会触发权限报错。
内容的提问来源于stack exchange,提问作者bigblackfootman
相关产品推荐
相关产品推荐

