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

时间:2020-04-07 19:49:45

标签: javascript bots discord discord.js roles

我知道如何检查邮件发件人是否具有角色:

if(message.member.roles.has(role.id)) {
  console.log(`Yay, the author of the message has the role!`);
} else {
  console.log(`Nope, noppers, nadda.`);
}

但是,如何检查特定用户(使用用户ID)是否具有特定角色?

    var authorID = "111111111111111111"

    //Find role
    var role = message.guild.roles.find(role => role.name === "Private Splash Ping");
    //Find member
    let member = message.guild.members.get(authorID);

    console.log(member.roles.has(role))
    if(member.roles.has(role)) {
        roleadded = "User already has Private spalsh role."
    } else {
        message.member.addRole(role);
        roleadded = "Added private splash role."
    }

member.roles.has(role)始终返回false,并且我已经通过断点确认member和role变量都是正确的。

这里有什么我想念的吗?

2 个答案:

答案 0 :(得分:3)

message.member.roles被认为是GuildMemberRoleManager(Documentation),要访问角色集合,必须访问属性.cache,它是一个集合。然后,此集合具有.has(...)方法功能。 (Documentation

因此,您想访问message.member.roles.cache.has(...)

答案 1 :(得分:0)

v12.0.x(当前的v12.1.1)中还有更多更改。主要的是message.channel.send命令和缓存。

其中之一是这个。

对不起,我来晚了。