JS开发Discord bot报CLIENT_MISSING_INTENTS错误如何解决?
错误原因
你遇到的CLIENT_MISSING_INTENTS报错是discord.js v13及以上版本的强制规则:Discord网关要求开发者明确声明机器人需要使用的权限类别(即Intents),才能正常接收对应事件、调用对应功能。
修复步骤
- 先明确你当前功能需要的Intents:
Guilds:服务器基础权限,所有机器人必开GuildMembers:服务器成员变动权限,对应你用到的guildMemberAdd新成员加入事件
- 修正代码(同时修复你原代码变量名混乱、重复登录的问题),修改后完整代码如下:
// 引入需要的模块,v14版本用GatewayIntentBits,v13版本替换为Intents.FLAGS const { Client, GatewayIntentBits } = require('discord.js'); const config = require("./config.json") // 初始化客户端时传入intents配置 const bot = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers, ] }); // 就绪事件 bot.once('ready', () => { console.log(`Bot online: ${bot.user.tag}!`); }); // 新成员加入事件 bot.on("guildMemberAdd", member => { member.send(`Seja bem vindo! Siga as regras do servidor e divirta-se 😀`) }); // 用配置文件里的token登录 bot.login(config.token);
- 开启Discord后台特权权限
GuildMembers属于特权Intent,需要手动在开发者后台开启:登录Discord开发者平台,进入你的机器人应用的「Bot」设置页,下拉到「Privileged Gateway Intents」区域,打开Server Members Intent的开关即可。
注意事项
如果后续你新增了其他功能,需要对应补充Intents:比如需要接收用户发的消息,就要额外添加GatewayIntentBits.GuildMessages和GatewayIntentBits.MessageContent,同时也要在开发者后台打开对应特权开关。
内容的提问来源于stack exchange,提问作者Arthur Jhonathas
相关产品推荐
相关产品推荐

