【问题标题】:Is there a way to compare two members' rankings?有没有办法比较两个成员的排名?
【发布时间】:2020-03-13 01:35:58
【问题描述】:

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

怎么做?

【问题讨论】:

    标签: node.js discord.js


    【解决方案1】:

    因此,您最初需要设置一个计数系统来计算他们的权限,也许它可能是基于角色的。您可以将其存储在一个简单的 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
    }

    让我知道你过得怎么样。

    【讨论】:

      【解决方案2】:

      获取每个成员的最高角色并比较他们的计算位置

      通过得到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 会返回一个整数,数值越大排名越高。

      【讨论】:

      • 谢谢,它对我和我的机器人都有效。但我有一个问题。如果A人是公会的主人,这段代码能用吗?
      • 此代码不检查,因为它只查看角色。查看Guild.ownerID 的文档以帮助您完成这项额外任务
      猜你喜欢
      • 1970-01-01
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      相关资源
      最近更新 更多