Discord.js机器人报错TypeError [ClientMissingIntents]求助
解决Discord.js的ClientMissingIntents错误
这个错误是因为Discord.js从v13版本开始,要求创建机器人客户端时必须显式指定网关意图(Intents),用来声明你的机器人需要接收哪些类型的平台事件数据,比如消息、成员变动等。你的代码里创建Discord.Client()时没有传入任何意图配置,所以触发了这个报错。
修复步骤
- 给
Discord.Client()添加必要的意图参数:你的机器人用到了消息事件,至少需要Guilds(服务器基础数据)和GuildMessages(服务器内消息)这两个意图 - 修正代码里的两处小问题:
- 原代码中
!message.content.startsWith("prefix")写错了,应该引用prefix变量而非字符串"prefix" - 最后那个非ping指令的判断逻辑有问题,会导致所有非ping指令都返回错误提示,改成else分支更合理
- Discord.js v14版本中
message事件已改名为messageCreate,需要同步修改
- 原代码中
修改后的完整代码
const Discord = require("discord.js"); // 创建Client时传入意图配置 const bot = new Discord.Client({ intents: [ Discord.IntentsBitField.Flags.Guilds, Discord.IntentsBitField.Flags.GuildMessages, // 如需接收私信消息,可添加以下行 // Discord.IntentsBitField.Flags.DirectMessages ] }); const token = "你的机器人令牌"; const prefix = "t/"; bot.once("ready", () => { console.log("BOT WENT ONLINE"); }); bot.on("messageCreate", (message) => { if (message.author.bot) return; if (!message.content.startsWith(prefix)) return; const command = message.content.slice(prefix.length).trim().toLowerCase(); if (command === "ping") { message.channel.send("PONG"); } else { message.channel.send("WRONG COMMANDS!"); } }); bot.login(token);
额外说明
- 若你使用的是Discord.js v13版本,意图的写法为
Discord.Intents.FLAGS.GUILDS、Discord.Intents.FLAGS.GUILD_MESSAGES,注意命名差异 - 要确保你的机器人在Discord开发者平台的「Bot」页面中,开启了对应的特权网关意图(比如消息内容意图,现在需要手动开启才能正常接收消息内容)
内容的提问来源于stack exchange,提问作者IBANG0495
相关产品推荐
相关产品推荐

