【问题标题】:How do I know the user's highest permission? Discord.js怎么知道用户的最高权限?不和谐.js
【发布时间】:2021-01-18 01:11:40
【问题描述】:

你好我想知道bot是否可以注册用户的最高权限?知道是否可以这样做会很有帮助。

【问题讨论】:

    标签: discord.js


    【解决方案1】:

    您可以使用GuildMemberroleManager#highest获取成员的最高角色:

    const highestRole = member.roles.highest
    

    Discord.js 还可以为您计算成员的权限,使用 permissionspermissionsIn

    // The permissions for a member (all the permissions of their roles)
    const permissions = member.permissions
    // The permissions for a member, taking into account the permission overwrites
    // for a channel
    const permissionsInChannel = member.permissionsIn(channel)
    

    【讨论】:

    • 好的!谢谢!!
    • @LuísFernando 如果此答案或任何其他答案解决了您的问题,请单击复选标记考虑accepting it。这样,这个问题就会被标记为已解决,其他用户可以很容易地看到哪个答案有帮助。它也给了提问者和回答者一些声誉!
    【解决方案2】:

    您可以使用GuildMemberRoleManager.highest 查看任何成员的最高角色。如果您要比较位置,可以使用Role.position 属性。

    // example ban command
    const target = message.mentions.members.first();
    
    if (message.member.roles.highest.position <= target.roles.highest.permission)
      return message.channel.send('The target has a higher position than you.');
    

    另一种更简单的方法是使用Role.comparePositionTo()

    if (target.roles.highest.comparePositionTo(message.member.roles.highest) < 1)
      return message.channel.send('The target has a higher position than you');
    

    要查看成员的权限,您可以使用GuildMember.permissions。如果只想查看用户是否有一定的权限,可以使用GuildMember.hasPermissions

    if (!message.member.hasPermission('KICK_MEMBERS'))
      return message.channel.send('You do not have sufficient permissions.');
    

    如果您只想考虑一个具有特定权限覆盖的频道,您也可以使用GuildMember.permissionsIn()

    const channel = message.client.channels.cache.find(channel => channel.name === 'hammer-time');
    if (!message.member.permissionsIn(channel).has('KICK_MEMBERS'))
      return message.channel.send('You do not have sufficient permissions.');
    

    您可以查看权限标志的完整列表(如KICK_MEMBERSBAN_MEMBERS 等)here

    【讨论】:

    • 不是这样,我正在做一个用户信息,我希望它显示所提到用户的最高权限是什么
    • 很遗憾,Discord API 的权限没有顺序,因此除非您考虑到某个角色,否则这是不可能的。
    猜你喜欢
    • 2023-04-07
    • 2021-05-04
    • 2020-05-07
    • 2020-08-10
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    相关资源
    最近更新 更多