Discord.js启动报错TypeError [CLIENT_MISSING_INTENTS]如何解决
报错根因
discord.js v13及以上版本初始化Client时强制要求传入合法的intents配置,你的代码存在两个核心问题:
- 重复导入discord.js、重复创建了两个Client实例
- 第一个
client实例虽然传了intents配置,但全程没有被使用;第二个bot实例初始化时没传任何配置参数,缺少必填的intents字段,且你最终调用登录方法用的就是这个有问题的bot实例,直接触发CLIENT_MISSING_INTENTS报错。
修复步骤
- 删除冗余的重复导入、重复实例化代码,只保留一个配置了正确intents的Client实例
- 确认本地安装的discord.js版本和你参考的教程版本一致:v12及以前版本不需要传intents,v13+强制要求,版本不匹配会连续出现兼容性问题。可在项目目录执行
npm ls discord.js查看本地安装版本 - 如果你需要机器人读取消息内容,除了在代码里添加
MESSAGE_CONTENTintent,还要去Discord开发者门户的机器人配置页,打开「Message Content Intent」的开关,否则机器人无法接收普通用户发送的消息内容。
修正后可运行代码
const { Client, Intents } = require('discord.js'); // 单个Client实例,传入需要的intents const client = new Client({ intents: [ Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.MESSAGE_CONTENT // 需要读消息内容就加这个配置 ] }); const token = '替换为你自己的机器人Token'; const PREFIX = ''; client.on('ready', () => { console.log('SEBot is online.') }) // 用配置完成的client实例登录 client.login(token)
注意事项
- 绝对不要把机器人Token泄露给其他人,持有Token的用户可以完全控制你的机器人执行任意操作
- 如果参考的教程发布时间早于2021年8月,大概率是基于discord.js v12编写的,和当前最新版本语法差异极大,建议找对应你本地安装版本的官方文档或匹配教程参考。
内容的提问来源于stack exchange,提问作者Tratt
相关产品推荐
相关产品推荐

