You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 16:04:52