【发布时间】:2020-03-13 01:35:58
【问题描述】:
我有一个 Discord 机器人。我正在编写警告命令,但我需要一个代码来比较两个成员的(角色)排名。示例:A 人高于 B 人。如果 B 人试图警告 A 人,机器人会说“你不能警告这个人。”。如果 A 人试图警告 B 人,bot 会警告 B 人。
怎么做?
【问题讨论】:
标签: node.js discord.js
我有一个 Discord 机器人。我正在编写警告命令,但我需要一个代码来比较两个成员的(角色)排名。示例:A 人高于 B 人。如果 B 人试图警告 A 人,机器人会说“你不能警告这个人。”。如果 A 人试图警告 B 人,bot 会警告 B 人。
怎么做?
【问题讨论】:
标签: node.js discord.js
因此,您最初需要设置一个计数系统来计算他们的权限,也许它可能是基于角色的。您可以将其存储在一个简单的 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
}
让我知道你过得怎么样。
【讨论】:
获取每个成员的最高角色并比较他们的计算位置
通过得到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 会返回一个整数,数值越大排名越高。【讨论】:
Guild.ownerID 的文档以帮助您完成这项额外任务