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!`);
            }
        }
    }
};

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

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()

了解公会成员角色here

您所要做的就是检查 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))