获得提及的成员的最高角色

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]

【问题讨论】:

你能分享更多代码吗?例如您的usermessage 对象的示例? 我编辑了它......它没有帮助,但我只需要一个代码来检查用户的最高等级 您评论中提到的两个对象都是由 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 的上一个迭代中)

然后比较两个数字,看看机器人的“角色编号”是否高于用户的。

【讨论】:

以上是关于获得提及的成员的最高角色的主要内容,如果未能解决你的问题,请参考以下文章

如何获取@everyone 角色ID?

使用 SQL Server 2005 通过 LDAP 访问 Active Directory 角色成员资格

Argo 错误:对成员“咖喱”的含糊提及

如何在文本中提及成员?不和谐机器人 python

Discord bot 不返回角色成员

活动成员角色更新