Discord机器人antiswear.js报错:FLAGS属性读取失败且管理员排除失效
问题修复:Discord反脏话模块管理员排除失效及报错解决
报错信息
ERROR: Unhandled exception: Cannot read properties of undefined (reading 'FLAGS')
问题描述
在Discord机器人的antiswear.js代码中,尝试将管理员排除在反脏话模块外,但该功能无法正常工作,同时触发上述报错。
原因分析
报错核心是Discord.js v13+版本已废弃Permissions.FLAGS写法,需改用PermissionsBitField.Flags调用权限常量;同时原判断逻辑可优化,减少冗余的层级判断。
修复后的代码
const { PermissionsBitField } = require('discord.js'); const badWords = require('@src/badwords.json'); const warnedMessages = new Set(); function checkMessage(message) { const content = message.content.toLowerCase(); // 检查是否为管理员,v13+版本标准写法 if (message.member?.permissions.has(PermissionsBitField.Flags.Administrator)) { return; // 跳过管理员的反脏话检测 } // 后续脏话检测逻辑... }
关键修改点
- 替换导入对象:将
Permissions改为PermissionsBitField,这是Discord.js v13及以上版本的标准权限类 - 修正权限常量写法:
Permissions.FLAGS.ADMINISTRATOR→PermissionsBitField.Flags.Administrator(遵循新版本首字母大写的命名规范) - 简化判断逻辑:使用可选链操作符
?.替代多层&&判断,代码更简洁安全
内容的提问来源于stack exchange,提问作者just_straight
相关产品推荐
相关产品推荐

