繁体   English   中英

Discord.js:如何检查特定用户是否具有角色?

[英]Discord.js: How can you check if a specific user has a role?

我想看看您是否可以检查是否可以测试具有角色的特定用户。 唯一的问题是我对 Discord.js 还很陌生,我搜索的所有内容要么已经过时,要么是我无法完全理解的内容,要么仅展示了如何测试消息作者是否具有该角色,这不是什么我试图找出答案。 我应该在当前的编码中改变什么?

if (message.member.permissions.has("MANAGE_ROLES")) {

            const member = message.mentions.users.first();
            const memberTarget = message.guild.members.cache.get(member.id);
            const role = message.guild.roles.cache.find(role => role.name === "Awesome Role Name");

            if (memberTarget.roles.cache.has(role)) {
                message.channel.send(`${memberTarget} has the role!`);

            } else {
                message.channel.send(`${memberTarget} does not have the role!`);
            }
        }
    }
};

您所要做的就是检查GuildMember.roles.cache是否具有该角色。 此外,您的代码无法正常工作的原因是您正在使用角色对象。 您需要使用角色 ID。

if (memberTarget.roles.cache.has(role.id))

更多相关内容:

通过任何属性获取角色

if (memberTarget.roles.cache.some(r => r.name === 'role-name'))
//does not need to be the name

获取消息作者的角色

if (message.member.roles.cache.has(role.id))

要检查角色,您可以执行以下代码:

if (member.roles.cache.has("ROLE_ID"))

如果您想检查发件人是否具有您可以执行的角色:

if (message.member.roles.cache.has("ROLE_ID")) {
    console.log(true);
} else {
    console.log(false);
}

如果您想检查其他人是否有角色,您可以执行以下操作:

if (memberTarget.roles.cache.has("ROLE_ID")) {
    console.log(true);
} else {
    console.log(false);
}

要获得会员,您可以通过多种不同的方式获得,一种方法是通过提及来获得:

// This will get the first mention who is a member in the server
const memberTarget = message.mentions.members.first()

在此处阅读公会成员角色

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM