Изменение ролей
Действие выдает или снимает роли бота — тому, кто вызвал команду или нажал кнопку, либо участнику, которого упомянули.
Что такое роли бота
Роли бота — это роли, которые вы создаете в разделе «Роли бота»: у них есть название, цвет, эмодзи и приоритет. Их используют в правах команд, наградах за уровни и иммунитете к автомодерации. Если включить у роли «Тег участника», бот покажет ее название рядом с именем участника в чате.
Настройки
| Поле | Описание |
|---|---|
| Выдать | Роли, которые нужно добавить |
| Снять | Роли, которые нужно убрать |
| Кому | Вызвавшему — тому, кто написал команду или нажал кнопку. Упомянутому — участнику из аргументов команды: на чье сообщение ответили или кого упомянули |
Как бот находит упомянутого участника — см. Аргументы команды.
Пример: роль по кнопке
Сообщение с кнопкой «Хочу в турнир», которая выдает роль «Участник турнира».
Действие 1 — «Анонс» (по умолчанию), тип Отправка сообщения:
# Турнир в субботу
Нажми кнопку, чтобы получить роль участника и доступ к топику турнира.
{% do button('SUCCESS', 'join', 'Хочу в турнир', '🏆', '3c8d7f2e-9a41-4b6e-8f0d-2e5b7c1a9d44') %}Действие 2 — «Выдать роль», тип Изменение ролей: выдать «Участник турнира», кому — вызвавшему. UUID этого действия подставлен в кнопку выше.
Турнир в субботу
Нажми кнопку, чтобы получить роль участника и доступ к топику турнира.
После нажатия бот выдаст роль тому, кто нажал кнопку.
Роли из шаблона
Если набор ролей зависит от условий, используйте методы участника в шаблоне действий типа «Отправка сообщения» или «Выполнение кода»:
{% if member.rank.level >= 20 %}
{% do member.addRole('r_veteran') %}
Ты получил роль «Ветеран»!
{% endif %}| Метод | Что делает |
|---|---|
member.addRole(роль) | Выдать роль |
member.removeRole(роль) | Снять роль |
member.addRoles([роль, роль]), member.removeRoles([…]) | Несколько ролей сразу |
member.modifyRoles(выдать, снять) | Выдать и снять одним вызовом |
member.addTempRole(роль, срок) | Выдать на время: срок в миллисекундах или дата, не меньше 15 секунд |
member.hasRole(роль) | Проверить, есть ли роль |
Роль указывается ее ID (виден в разделе «Роли бота») или объектом роли — например, chat.getRole('r_veteran').
Ограничения
- Бот учитывает иерархию ролей относительно того, кто вызвал команду: через команду нельзя выдать роль выше своей. Так хелпер не выдаст себе роль администратора.
- За одно выполнение — не больше 10 изменений ролей.
- Роли бота работают только внутри бота: они не меняют права участника в Telegram, но дают доступ к командам, иммунитет к фильтрам и множители опыта.