Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if a specific user has a role? Discord js

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?

like image 469
Edwin Avatar asked Oct 22 '25 03:10

Edwin


1 Answers

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

like image 198
Vitulus Avatar answered Oct 24 '25 15:10

Vitulus



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!