Discord Bot 报错 ReferenceError: Intents is not defined 如何解决?
报错解决与代码调整方案
报错原因
ReferenceError: Intents is not defined报错源自discord.js v13及以上版本的强制要求:必须显式配置网关意图(Intents)才能初始化客户端,同时旧版的message事件已被弃用,需要替换为新版事件。
调整步骤
- 引入所需的意图类
IntentsBitField,初始化客户端时传入监听消息必备的三类意图 - 将废弃的
message监听事件替换为新版可用的messageCreate事件 - 额外操作:进入Discord开发者后台的对应Bot应用设置页,在「Privileged Gateway Intents」分区开启
Message Content Intent开关,否则无法正常读取消息内容触发事件
修复后完整可运行代码
const { Client, IntentsBitField } = require('discord.js'); // 初始化客户端并配置所需意图 const bot = new Client({ intents: [ IntentsBitField.Flags.Guilds, // 服务器基础必填意图 IntentsBitField.Flags.GuildMessages, // 监听服务器消息的意图 IntentsBitField.Flags.MessageContent // 读取消息内容的特权意图 ] }); // 替换为你自己的Bot Token bot.login('TOKENcode'); // 监听消息发送事件 bot.on("messageCreate", (message) => { // 可选择过滤Bot自身发送的消息,不需要可删除该行 if (message.author.bot) return; console.log('hello world!'); })
调整完成后,在Bot加入的Discord服务器内发送任意消息,VS Code控制台就会输出对应内容。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

