有没有办法比较两个成员的排名?

时间:2019-11-17 14:56:32

标签: node.js discord.js

我有一个Discord机器人。我正在编写警告命令,但是我需要一个代码来比较两个成员(角色)的排名。示例:一个人高于B个人。如果B人试图警告A人,则漫游器会说“您不能警告此人”。如果A人试图警告B人,则机器人会警告B人。

该怎么做?

2 个答案:

答案 0 :(得分:1)

获得每个成员的最高职位,并比较其计算出的职位

通过获取GuidMemberHighest Role并获取RoleCalculated Position,我们可以使用此值与其他成员的最高角色的计算职位进行比较根据服务器的角色管理器,谁会更高。

// I'll assume you already have the data for both members (memberA and memberB)
let rankingA = memberA.highestRole.calculatedPosition;
let rankingB = memberB.highestRole.calculatedPosition;

if (rankingA > rankingB) {
  // apply warning
} else {
  // reject warning
}

注意:

  • .highestRole将返回角色对象本身。
  • .calculatedPosition将返回一个整数,值越高表示排名越高。

答案 1 :(得分:0)

因此,您最初需要设置一个计数系统来计算其权限,也许它可能是基于角色的。您可以将其存储在简单的SQL DB或数组等中。相对简单。假设我担任x角色,我将得到x分。这可以通过if (user.role === 'blah') points = x或类似的简单方法来完成。

如果您不想使用计数系统,请查看 Role#calculatedPosition -这将返回Discord服务器上角色列表中的高度。例如;

const roleX = message.role.calculatedPosition()

const otherRole = message.role.calculatedPosition()

您需要寻找调用角色及其ID的方法。

完成后,执行类似

的操作

if (points.a > points.b) {

// do something here like  allow/reject it
message.channel.send('warn stuff')
} else {
  //reject it here, for example
  message.channel.send('no')
  return
}

让我知道您是如何相处的。