如何用Discord.js判断用户是否拥有管理员角色或服务器所有者权限
Discord.js v14 权限检查问题修复
问题原因
message.member在私信(DM)场景下会返回undefined,直接访问其属性会触发报错- 原代码错误检查了机器人自身的权限,而非消息发送者的权限
- Discord.js v14 已弃用
hasPermission方法,权限检查API有更新
修复后的代码
module.exports = (client, message) => { // 仅处理服务器内消息,跳过私信场景 if (!message.inGuild()) return; const member = message.member; // 判断用户是否为服务器所有者,或拥有管理员权限 if (member.guild.ownerId === member.id || member.permissions.has('Administrator')) { console.log("The user has the role"); } };
关键说明
message.inGuild()用于过滤非服务器内消息,避免message.member为undefined的情况- 通过
member.guild.ownerId === member.id直接判断用户是否是服务器所有者 - v14中使用
member.permissions.has('Administrator')替代旧的hasPermission方法完成权限校验
内容的提问来源于stack exchange,提问作者Hehehehaw
相关产品推荐
相关产品推荐

