Discord防滥用命令报错:无法读取null的permissions属性
问题解决方法
1. 先处理message.member为null的报错
报错的核心原因是message.member为null——这种情况通常发生在私信频道触发命令时,私信环境里不存在服务器成员(member)对象,只有用户(user)对象。所以要先判断命令是否在服务器频道内执行:
// 非服务器频道直接终止执行 if (!message.guild) return;
2. 修正权限判断的写法
你之前把PermissionFlagsBits.Administrator放在数组里传给permissions.has()是错误的,这个方法只接受单个权限枚举值或权限位,不支持数组。正确写法如下:
// 检测到管理员则跳过后续逻辑 if (message.member.permissions.has(PermissionFlagsBits.Administrator)) return;
完整修正后的代码片段
// 先验证是否在服务器频道内,同时跳过管理员 if (!message.guild || message.member.permissions.has(PermissionFlagsBits.Administrator)) return; // 在这里编写你的防滥用命令逻辑 // ...
补充说明
- 若你使用的是Discord.js v12及更早版本,需将
PermissionFlagsBits.Administrator替换为Permissions.FLAGS.ADMINISTRATOR - 合并判断逻辑可以让代码更简洁,同时解决两个问题:非服务器环境的报错、管理员跳过逻辑
内容的提问来源于stack exchange,提问作者Nikhıł
相关产品推荐
相关产品推荐

