discord.js报错CLIENT_MISSING_INTENTS 添加意图时提示client已声明如何解决
discord.js
CLIENT_MISSING_INTENTS 错误修复方案 错误原因
你遇到的问题核心来源有三点:
- discord.js v13及以上版本强制要求初始化Client实例时必须传入intents参数,用于指定机器人需要访问的网关事件权限,你原代码中
new Discord.Client()未传任何配置,所以触发缺少intents的报错。 - 你定义intents变量的时机在Client初始化之后,完全没有生效,同时你尝试修改代码时重复声明了
client变量,才会出现「client已声明」的报错。 - 你没有从discord.js中导入
Intents类,直接写new Intents()会触发未定义报错。
修复后的完整代码
const Discord = require('discord.js') // 先定义intents,32767是全权限位域,代表开启所有官方支持的intents const allIntents = new Discord.Intents(32767); // 初始化Client时传入intents配置,不要重复声明client变量 const client = new Discord.Client({ intents: allIntents }); client.on('ready', () => { console.log("Bot is online!") }); // 补充你的机器人令牌即可启动 client.login('你的机器人令牌')
按需指定intents(更安全的写法)
如果不需要全权限,你可以按需指定需要的intents,示例如下:
const client = new Discord.Client({ intents: [ Discord.Intents.FLAGS.Guilds, // 服务器相关权限 Discord.Intents.FLAGS.GuildMessages, // 服务器消息相关权限 Discord.Intents.FLAGS.MessageContent // 读取消息内容权限 ] })
v14版本适配
如果你使用的是discord.js v14版本,Intents类更名为IntentBits,写法调整为:
const { Client, IntentBits } = require('discord.js') const client = new Client({ intents: [ IntentBits.Flags.Guilds, IntentBits.Flags.GuildMessages, IntentBits.Flags.MessageContent ] })
额外注意事项
如果需要使用MessageContent等特权intent,你需要先进入Discord开发者后台的机器人管理页面,在「Privileged Gateway Intents」板块下手动开启对应权限开关,否则代码中配置了也无法正常使用。
内容的提问来源于stack exchange,提问作者Amaan
相关产品推荐
相关产品推荐

