我知道如何检查邮件发件人是否具有角色:
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变量都是正确的。
我这里缺少什么吗?
message.member.roles
被认为是GuildMemberRoleManager(Documentation),要访问角色的集合,必须访问属性.cache
(它是一个集合)。然后,此集合具有.has(...)
方法功能。 (Documentation)
因此,您改为访问message.member.roles.cache.has(...)