【问题标题】:Discord.js: How can you check if a specific user has a role?Discord.js:如何检查特定用户是否具有角色?
【发布时间】:2021-10-25 16:58:58
【问题描述】:

我正在寻找您是否可以检查是否可以测试具有角色的特定用户。唯一的问题是我对 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!`);
            }
        }
    }
};

【问题讨论】:

标签: javascript discord.js roles


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 非常感谢您,非常感谢您的帮助!我开始厌倦了寻找答案,我不敢相信这仅仅是因为我需要添加“.id”!
    • 如果有帮助,请将答案标记为正确! (使用upvote/downvote按钮下的复选标记)
    • 感谢您告诉我!我立即勾选了:)
    猜你喜欢
    • 2023-03-03
    • 2020-12-25
    • 1970-01-01
    • 2010-12-22
    • 2019-06-16
    • 2021-07-07
    • 2021-10-10
    • 1970-01-01
    相关资源
    最近更新 更多