Reputation: 29
I'm looking to see if you can check if you can test for a specific user having a role. Only problem is that I'm fairly new to Discord.js and everything I searched up was either outdated, was something I couldn't fully understand or only showed how to test if the author of the message has the role, which is not what I'm trying to find out. What should I change in my current coding?
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!`);
}
}
}
};
Upvotes: 2
Views: 5786
Reputation: 562
To check for a role you can do the code:
if (member.roles.cache.has("ROLE_ID"))
If you wanted to check if the sender has the role you could do:
if (message.member.roles.cache.has("ROLE_ID")) {
console.log(true);
} else {
console.log(false);
}
If you wanted to check if someone else has a role you could do:
if (memberTarget.roles.cache.has("ROLE_ID")) {
console.log(true);
} else {
console.log(false);
}
To get a member you could do it in many different ways, one method would be to get them by mentions:
// This will get the first mention who is a member in the server
const memberTarget = message.mentions.members.first()
Read about guild member roles here
Upvotes: 0
Reputation: 9041
All you have to do is check if the GuildMember.roles.cache
has the role. Also, the reason your code isn’t working is because you are using the role object. You need to use the role ID.
if (memberTarget.roles.cache.has(role.id))
More related things:
Getting role by any property
if (memberTarget.roles.cache.some(r => r.name === 'role-name'))
//does not need to be the name
Getting message author's roles
if (message.member.roles.cache.has(role.id))
Upvotes: 1