2017-02-05 6 views
0

Я кодирую бомбу Discord с discord.js/node (я довольно новый). Я попытался настроить систему разрешений, где вам понадобится определенная роль, чтобы оператор if возвращал true и позволял пользователю использовать команду или что-то еще. Я пытался (это только часть):Права доступа к API Discord.js?

if(message.author.roles.includes('role_id') { 
    COMMANDS 
    } 

Но это просто дает мне ошибки в консоли (очевидно)

Если какой-либо из вас знают, как правильно установить систему разрешений в эффективный способ, который будет оценен!

+0

Discord.js '' message.author'' объект делает не содержать член '' role''. См. Https://discord.js.org/#/docs/main/stable/class/User – Crowes

+0

Да, я просмотрел документацию снова, и я попробовал '.member' (который представляет класс' GuildMember', который имеет ' role') вместо '.author'. Однако он все еще не работает. – Meh

+0

Роли выглядят как коллекция, поэтому вам нужно будет использовать их метод '.exists()' '. Я не думаю, что это массив по умолчанию, но не цитируйте меня на нем. https://discord.js.org/#/docs/main/stable/class/Collection?scrollTo=exists – Crowes

ответ

0

Для достижения этой цели используя условное if: if(message.member.roles.has([role_id])) где [ROLE_ID] является строкой (в противном случае он всегда будет возвращать ложь)

0

Существует hasRole метод на пользователей: http://discordjs.readthedocs.io/en/8.2.0/docs_user.html

hasRole (роль)

Контекстное client.memberHasRole (член, роль)

См client.memberHasRole

Какой ссылкой на это: http://discordjs.readthedocs.io/en/8.2.0/docs_client.html#memberhasrole-member-role

memberHasRole (член, роль)

Возвращает, если пользователь имеет роль

+0

Это только разрешения, но я ищу, если у пользователя есть роли. Если есть способ использовать оператор 'if' с этим для проверки ролей с' hasPermission' – Meh

+0

@UNOriginalName, как насчет моего обновления? –

+0

Это не работает, это просто сбой моего бота с ошибкой. Спасибо, хотя. РЕДАКТИРОВАТЬ: Выяснилось, как это сделать с разрешения/роли. – Meh

0

ли вы попробовать сделать что-нибудь подобное?

if (!message.member.roles.some(r=>["role_name"].includes(r.name))) 
    return; 

Это не позволит всем пользователям использовать эту конкретную команду, если у них нет указанной роли.

Смежные вопросы