所以我一直在努力寻找一个更好的方法来检查我的discord机器人上的命令的多个角色,到目前为止,我可以做的最好的是}else{。
run(message) {
if(message.member.roles.find("name", "Pheonix")){
return message.say('These are dark times. . .', {files: ["./resources/videos/darktimes.mp4"]});
}else{
if(message.member.roles.find("name", "Renowned Wizard")){
return message.say('These are dark times. . .', {files: ["./resources/videos/darktimes.mp4"]});
}else{
return message.say('*Patreon restricted.*');
我想知道是否有一些方法可以将其夹在一个数组中,并使用数组中的任何东西作为角色的检查器,是否有任何方法可以做到这一点?
var morsmordreRoles = [
'Dev',
'Renowned Wizard',
'Pheonix',
'Moderator'
]
if(message.member.roles.find("name", morsemordreRoles)){
return message.say('*You mark the sky with the presence of The Dark Lord* ', {files: ["./resources/gifs/morsmordre.gif"] });
}else{
return message.say('*Death Eater restricted.*');
}
}
}
如果你想使用一个数组,你可以使用foreach和bool检查来检查用户是否有 任何 中的角色,也应该使用 .cache.some
而不是 find
在discord.js v12中,可以看到 此处
例如:
var morsmordreRoles = [
'Dev',
'Renowned Wizard',
'Pheonix',
'Moderator'
]
var hasRole = false;
morsmordreRoles.forEach(findrole =>{
if(message.member.roles.cache.some(role => role.name === findrole)) hasRole = true; //if user has role, sets bool to true
})
if(hasRole === true){
//code when has role
}
else{
//code when has no role
}