获得提及的成员的最高角色
Posted
技术标签:
【中文标题】获得提及的成员的最高角色【英文标题】: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]
【问题讨论】:
你能分享更多代码吗?例如您的user
和message
对象的示例?
我编辑了它......它没有帮助,但我只需要一个代码来检查用户的最高等级
您评论中提到的两个对象都是由 Discord.JS 引入的,它是 Discord API 的包装器
我的意思是当我尝试 -ban @player
时,机器人会检查 @player
是否比机器人具有更高的角色
@PascalStockert wdym ?
【参考方案1】:
你可以做的是:
获取用户的最高角色:
-
从Mention 内部的Message 中获取UserId
从发送消息的Guild 的RoleManager 中获取Cache
(不知道RoleCache中的角色是不是按位置排序的,需要的话再排序)
遍历 RoleCache 中的角色和 check if the UserId is contained inside 特定角色
获取position of the role
获取机器人的最高角色:
-
为您的机器人重复步骤 2-5(或将它们集成到 RoleCache 的上一个迭代中)
然后比较两个数字,看看机器人的“角色编号”是否高于用户的。
【讨论】:
以上是关于获得提及的成员的最高角色的主要内容,如果未能解决你的问题,请参考以下文章