admin管理员组

文章数量:1293049

I know how to check if the message sender has a role:

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

However, how can I check if specific user (using user id) has a specific role?

    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) always returns false and I've confirmed both member and role variables are correct via breakpoints.

Is there something I'm missing here?

I know how to check if the message sender has a role:

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

However, how can I check if specific user (using user id) has a specific role?

    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) always returns false and I've confirmed both member and role variables are correct via breakpoints.

Is there something I'm missing here?

Share Improve this question asked Apr 7, 2020 at 19:49 EdwinEdwin 731 gold badge1 silver badge7 bronze badges 2
  • Not familiar with discord.js, but if roles is an array, could you use member.roles.indexOf(role) instead of the .has method? – R Greenstreet Commented Apr 7, 2020 at 19:52
  • Are you receiving any errors? What version of discord.js are you using? – Syntle Commented Apr 7, 2020 at 19:56
Add a ment  | 

1 Answer 1

Reset to default 6

message.member.roles is considered a GuildMemberRoleManager (Documentation), to access the collection of roles you must access the property .cache which is a collection. This collection then has the .has(...) method function. (Documentation)

Thus, you instead want to access message.member.roles.cache.has(...)

本文标签: javascriptHow to check if a specific user has a role Discord jsStack Overflow