使用Discord.js v14开发机器人时遇FLAGS未定义TypeError错误
解决Discord.js v14中TypeError: Cannot read properties of undefined (reading 'FLAGS')错误
错误原因
你使用的是discord.js v14.0.3,但代码沿用了v13及更早版本的Intents写法。v14中,Intents.FLAGS已被移除,取而代之的是IntentsBitField,同时意图常量的命名规则也发生了变化(比如Guild改为Guilds、Guild_Members改为GuildMembers)。
修复步骤
- 更新导入语句:将
Intents替换为IntentsBitField - 修正意图常量:使用v14对应的意图名称
- (可选)移除重复事件监听:代码中重复注册了
ready事件,可删除其中一个避免冗余
修改后的完整代码
const { Client, IntentsBitField, } = require('discord.js'); const bot = new Client({ intents: [ IntentsBitField.Flags.Guilds, IntentsBitField.Flags.GuildMembers, IntentsBitField.Flags.GuildMessages ] }); bot.on('ready', () => { console.log(`Bot ${bot.user.tag} is logged in!`); }); bot.login('OTk5MTQ0NjU3ODgxNjc3ODY1.GvMgQX.dz3r43fDHi6nqB_cO55gSHhO2jJJ-zBKQIjF5k');
补充说明
- discord.js v14的意图系统基于
IntentsBitField实现,所有意图常量都在IntentsBitField.Flags对象下 - 意图名称采用驼峰命名(原下划线分隔改为首字母大写的驼峰),比如
Guild_Messages→GuildMessages - 如果你偏好使用数值形式的意图,也可以直接传入对应数值,比如
0x00000001对应Guilds,但使用枚举常量可读性更强
内容的提问来源于stack exchange,提问作者Nick Patel
相关产品推荐
相关产品推荐

