在Replit用discord.js创建机器人时遇TypeError [ClientMissingIntents]错误
解决Discord.js的TypeError [ClientMissingIntents]错误
错误原因
Discord.js从v13版本开始,要求创建Client实例时必须显式指定网关意图(Intents),用来限定机器人能接收的事件类型。你的代码中new Discord.Client()没有传入任何intents配置,因此触发该错误。
解决步骤
1. 确定所需的Intents
你的代码需要处理消息事件,至少需要以下两个核心意图:
Guilds:基础服务器相关事件权限GuildMessages:服务器内消息事件权限
另外,Discord.js v14及以上版本默认屏蔽消息内容读取,还需要开启消息内容特权(Message Content Intent),这一步需在Discord开发者后台操作。
2. 修改代码
针对Discord.js v14+版本
const { Client, IntentsBitField } = require('discord.js'); // 声明需要的意图集合 const intents = new IntentsBitField() .add(IntentsBitField.Flags.Guilds) .add(IntentsBitField.Flags.GuildMessages) .add(IntentsBitField.Flags.MessageContent); // 消息内容读取权限 const client = new Client({ intents: intents }); client.on('ready', () => { console.log('Logged in!'); }); // 注意:v14中原message事件已更名为messageCreate client.on('messageCreate', msg => { if (msg.content === 'ping') { msg.reply('Pong!'); } }); const mySecret = process.env['TOKEN']; client.login(mySecret);
针对Discord.js v13版本
const { Client, Intents } = require('discord.js'); const client = new Client({ intents: [ Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES ] }); client.on('ready', () => { console.log('Logged in!'); }); client.on('message', msg => { if (msg.content === 'ping') { msg.reply('Pong!'); } }); const mySecret = process.env['TOKEN']; client.login(mySecret);
3. 开启消息内容特权(仅v14+需要)
登录Discord开发者门户,找到你的机器人应用:
- 进入「Bot」页面
- 滚动到「Privileged Gateway Intents」区域
- 开启「Message Content Intent」开关
内容的提问来源于stack exchange,提问作者Muhammad Bin Saleem
相关产品推荐
相关产品推荐

