我有一个Discord机器人。我正在编写警告命令,但是我需要一个代码来比较两个成员(角色)的排名。示例:一个人高于B个人。如果B人试图警告A人,则漫游器会说“您不能警告此人”。如果A人试图警告B人,则机器人会警告B人。
该怎么做?
答案 0 :(得分:1)
获得每个成员的最高职位,并比较其计算出的职位
通过获取GuidMember的Highest Role并获取Role的Calculated 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
}
让我知道您是如何相处的。