Discord. js проверка нескольких ролей - PullRequest
1 голос
/ 17 июня 2020

так что я пытался найти лучший способ проверить несколько ролей для команд на моем боте 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.*');

И мне было интересно, есть ли какой-нибудь способ я мог бы забросить это в массив и использовать все, что есть в массиве, как средство проверки ролей, есть ли какие-нибудь способы go по этому поводу? хорошо, поэтому я попытался добавить массив, но я не могу заставить его работать

    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.*');
}



}
}

1 Ответ

1 голос
/ 17 июня 2020

Если вы хотите использовать массив, вы можете использовать проверки foreach и bool, чтобы проверить, есть ли у пользователя любые ролей в массиве, также вы должны использовать .cache.some вместо find в разногласиях. 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
    }
...