【问题标题】:Get highest role of a member with mentions获得提及的成员的最高角色
【发布时间】:2021-04-26 05:05:09
【问题描述】:

如何获得提及成员的最高角色名称?我尝试过这样的事情,但它不起作用。谢谢! :) 顺便说一句,这是一个禁止命令,我需要这个,因为当有人试图禁止比机器人等级更高的用户时,我的机器人崩溃了。

if(message.member.hasPermission('BAN_MEMBERS')){
    const user = message.mentions.users.first()
    console.log(user.roles.highest.name)
    if(!user) return console.log("test1")
    if(!args[2]) return console.log("test2")
    const ddays = args[1]

【问题讨论】:

  • 你能分享更多代码吗?例如您的usermessage 对象的示例?
  • 我编辑了它......它没有帮助,但我只需要一个代码来检查用户的最高等级
  • 您评论中提到的两个对象都是由 Discord.JS 引入的,它是 Discord API 的包装器
  • 我的意思是当我尝试 -ban @player 时,机器人会检查 @player 是否比机器人具有更高的角色
  • @PascalStockert wdym ?

标签: node.js discord.js


【解决方案1】:

你可以做的是:

获取用户的最高角色:

  1. Mention 内部的Message 中获取UserId
  2. 从发送消息的GuildRoleManager 中获取Cache
  3. (不知道RoleCache中的角色是不是按位置排序的,需要的话再排序)
  4. 遍历 RoleCache 中的角色和 check if the UserId is contained inside 特定角色
  5. 获取position of the role

获取机器人的最高角色:

  1. 为您的机器人重复步骤 2-5(或将它们集成到 RoleCache 的上一个迭代中)

然后比较两个数字,看看机器人的“角色编号”是否高于用户的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-14
    • 2021-06-21
    • 2021-09-05
    • 2011-10-20
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多