运行node .时出现[ClientMissingIntents]错误的技术求助
解决Discord.js的[ClientMissingIntents]错误及代码修复方案
这个错误的核心原因很明确——你创建了两个Discord Client实例,其中带正确intents配置的client完全没被使用,反而用了没有配置任何intents的bot实例来启动机器人,这必然触发ClientMissingIntents错误。另外你的代码还存在Discord.js v14的API适配问题,一起给你修复:
关键修复点
- 删除无用的
client实例,统一使用一个配置了intents的Client实例 - 把废弃的
message事件替换为messageCreate(Discord.js v14起已移除原message事件) - 把
message.channel.sendMessage()替换为message.channel.send()(v14已移除该方法) - 补充必要的
MessageContentintent(需在开发者平台开启,否则无法读取消息内容) - 确保调用
login方法启动机器人
修复后的完整代码
const { Client, GatewayIntentBits } = require('discord.js'); const TOKEN = "[MY TOKEN]"; const PREFIX = "."; // 只创建一个配置了完整intents的Client实例 const bot = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, // 读取消息内容必须的intent,需在开发者平台开启 GatewayIntentBits.MessageContent ] }); bot.on("ready", function() { console.log("Ready"); }); // 使用v14兼容的messageCreate事件 bot.on("messageCreate", function (message) { if (message.author.equals(bot.user)) return; if (!message.content.startsWith(PREFIX)) return; var args = message.content.substring(PREFIX.length).split(" "); switch (args[0]) { case "ping": // 使用v14兼容的send方法 message.channel.send("Pong!"); break; } }); // 启动机器人 bot.login(TOKEN);
额外注意事项
- 登录Discord开发者平台,进入你的机器人页面,在「Privileged Gateway Intents」下开启「Message Content Intent」,否则机器人无法读取消息内容
- 确保你的discord.js版本为v14,可通过
npm list discord.js查看版本,若不是最新版,执行npm install discord.js@latest升级
内容的提问来源于stack exchange,提问作者Sebastian Stobart
相关产品推荐
相关产品推荐

