Права для команд
Раздел Права ролей позволяет выдавать ролям точечный доступ к отдельным административным slash-командам бота.
Например, можно разрешить модератору:
- включать локдаун через
/antiraid lockdown; - управлять достижениями;
- просматривать состояние автомодерации;
- изменять настройки наград;
- выполнять отдельные действия staff-системы.
Выданное здесь право:
- не изменяет разрешения роли в Discord;
- не назначает участника сотрудником staff-системы;
- не повышает его staff-ранг;
- не выдаёт самому боту недостающие разрешения;
- не включает выключенные модули.
Оно только разрешает участнику пройти внутреннюю проверку доступа к конкретной команде.
Как открыть и настроить
Откройте страницу «Права ролей».
Изменять настройки могут:
- владелец сервера;
- участники с разрешением Discord Администратор;
- участники с разрешением Управлять сервером.
Чтобы выдать права роли:
- В поле Добавить роль выберите роль сервера.
- На появившейся карточке включите необходимые права.
- Либо откройте меню Применить пресет и выберите готовый набор.
- При применении пресета выберите режим Добавить или Заменить.
Отдельной кнопки сохранения нет. Каждое изменение отправляется на сервер сразу.
Если снять у роли все права, после обновления страницы её карточка исчезнет. При необходимости роль можно снова выбрать через поле Добавить роль.
У системы нет общего переключателя.
Какие роли можно выбрать
Панель не показывает:
- роль
@everyone; - роли, управляемые ботами;
- роли, управляемые интеграциями.
Однако команда /perm grant не использует такой фильтр.
Важно: внимательно проверяйте роль при использовании
/perm grant. Если выдать право*роли@everyone, доступ ко всем командам, защищённым этой системой, получат все участники сервера.
Три уровня проверки доступа
Для успешного запуска команды может одновременно проверяться несколько независимых настроек.
1. Состояние модуля
Переключатель модуля определяет, доступна ли группа команд целиком.
Например, команды /antiraid зависят от общего модуля Модерация.
Если модуль выключен, точечное право не позволит запустить команду.
Даже владелец сервера и участник с разрешением Администратор не могут обойти выключенный модуль.
2. Точечное право роли
Точечное право определяет, может ли участник использовать конкретную административную команду.
Например:
antiraid.lockdown
разрешает /antiraid lockdown, но не разрешает другие команды антирейда.
Обычному участнику достаточно иметь хотя бы одну роль с нужным правом.
Владелец сервера и участники с разрешением Discord Администратор проходят эту проверку автоматически.
3. Настройки отдельной команды
На странице «Команды» можно дополнительно:
- полностью выключить команду;
- ограничить её определёнными ролями;
- ограничить её каналами;
- установить задержку между вызовами.
Права из раздела Права ролей не отменяют эти ограничения.
Владелец сервера обходит ограничения страницы Команды, но не может обойти выключенный модуль.
Участники с разрешением Администратор по умолчанию также обходят ограничения отдельных команд.
Чтобы применять настройки и к администраторам, включите на карточке команды параметр Применять и к администраторам.
При тестировании ограничений не используйте собственный аккаунт с разрешением Администратор, если параметр Применять и к администраторам выключен. Команда будет доступна независимо от заданных ограничений.
Разрешение «Управлять сервером»
Разрешение Discord Управлять сервером открывает доступ к настройкам веб-панели.
Оно само по себе не позволяет использовать защищённые команды Discord.
Если такой администратор:
- не является владельцем сервера;
- не имеет разрешения Администратор;
его роли всё равно потребуется точечное право.
Основные настройки
| Параметр | Где изменяется | По умолчанию | Описание |
|---|---|---|---|
| Роль | Поле Добавить роль | Не выбрана | Определяет, какой роли принадлежат права. Участнику достаточно одной подходящей роли. |
| Точечное право | Переключатель на карточке роли, /perm grant, /perm revoke | Выключено | Разрешает только команды, которые проверяют этот точный ключ. |
Универсальное право * | Отдельный переключатель на карточке роли или /perm grant | Выключено | Позволяет пройти любую точечную проверку. Не включает модули и не отменяет настройки страницы Команды. |
| Пресет | Меню Применить пресет или /perm preset | Не применён | Добавляет роли готовый набор прав. Пресет не является staff-рангом. |
| Режим пресета | Добавить или Заменить | Добавить | Определяет, будут ли сохранены старые права роли. |
Режим «Добавить»
Новые права объединяются с уже выданными.
Существующие ручные права и * сохраняются.
Режим «Заменить»
Сначала удаляются все ранее выданные роли права, включая:
- ручные права;
- права из других пресетов;
- универсальное право
*.
После этого записывается только новый набор.
Как складываются права нескольких ролей
В системе нет запретов с отрицательным приоритетом.
Если участник имеет несколько ролей, права всех его ролей объединяются.
Например:
- первая роль не имеет
antiraid.lockdown; - вторая роль имеет
antiraid.lockdown.
Команда будет разрешена.
Снятие права с одной роли не поможет, пока другая роль участника продолжает его выдавать.
Какие права действительно используются
Ниже перечислены права, которые текущая версия бота действительно проверяет.
| Право | Доступные команды |
|---|---|
staff.warn | /staff mod warn; также открывает просмотр предупреждений и истории через /staff mod warns и history |
staff.unwarn | /staff mod unwarn, /staff mod bulkunwarn; также открывает /staff mod warns и history |
staff.add_mod | /staff mod add, /staff mod delete |
staff.add_admin | /staff admin add, /staff admin delete |
antiraid.config | /antiraid on, /antiraid off, /antiraid threshold, /antiraid min-age, /antiraid mode, /antiraid quarantine-role, /antiraid status |
antiraid.lockdown | /antiraid lockdown |
antiraid.unlock | /antiraid unlock |
automod.config | /automod status |
logs.config | Команды группы /log |
season.config | /clan_season enable, /clan_season disable, /clan_season setreward, /clan_season force_end |
achievements.manage | /achievements admin create, /achievements admin delete, /achievements admin toggle, /achievements admin grant |
reward.set | /shop setchannel, /shop delete |
reward.set | /reward reset, /reward setrank, /reward set, /reward daily-range, /reward weekly-range |
reward.set | /activity setroles, /activity delroles, /activity set_channel, /activity show, /activity addrole, /activity remrole, /activity drop, /activity back |
reward.add | /activity reward add |
reward.remove | /activity reward remove |
reward.set_ranks | /activity setroles — команда принимает и reward.set, и reward.set_ranks |
staff.kick | /kick — рядом с разрешением Discord Исключать участников |
staff.ban | r!ban — рядом с разрешением Discord Блокировать участников |
staff.timeout | r!mute — рядом с разрешениями Модерировать участников и Управлять сообщениями |
tickets.close | /ticket close и кнопка Закрыть в тикете |
clan.create | /clan create — позволяет создать клан, даже когда создание кланов на сервере запрещено |
clan.delete | /clan delete — без требования быть лидером клана |
clan.manage | /clan promote, /clan demote |
clan.invite | /clan invite — без требования ранга Офицера |
clan.kick | /clan kick |
clan.transfer | /clan transfer — без требования быть лидером клана |
Право automod.config
Право automod.config поддерживается командой /automod status, но сейчас не отображается среди переключателей веб-панели.
Выдать или снять его можно командами:
/perm grant
/perm revoke
Права, которые пока не работают
Все права каталога подключены к реальным проверкам команд.
Отдельного /timeout у бота нет: тайм-аут выдаётся командой r!mute, и право staff.timeout относится именно к ней.
Точечное право как дополнительный путь доступа
Часть команд проверяет не только точечное право. У них есть своя, более старая проверка — разрешение Discord, staff-ранг или ранг внутри клана. Точечное право такую проверку не отменяет, а добавляется к ней: команда пропускает участника, если выполнено хотя бы одно условие.
| Команда | Прежние пути доступа | Что добавляет точечное право |
|---|---|---|
/kick | Разрешение Discord Исключать участников | staff.kick |
r!ban | Разрешение Discord Блокировать участников | staff.ban |
r!mute | Модерировать участников или Управлять сообщениями | staff.timeout |
/ticket close, кнопка Закрыть | Автор тикета либо поддержка (staff-ранг, tickets.work) | tickets.close |
/clan kick, /clan promote, /clan demote, /clan transfer, /clan invite, /clan delete | Ранг в клане (Офицер, Заместитель, Лидер) | clan.kick, clan.manage, clan.transfer, clan.invite, clan.delete |
Права роли по-прежнему не заменяют разрешения самого бота и не отменяют иерархию ролей: автор команды должен находиться выше цели по ролям, а роль бота — выше роли участника.
Клановые права и чужие кланы
Клановые команды работают с кланом автора. Точечное право этого не меняет, но снимает требование к рангу:
- если держатель права состоит в клане, команда работает с его кланом, а требование ранга (Офицер, Заместитель, Лидер) не проверяется;
- если он не состоит ни в одном клане, клан определяется по указанному участнику — так сотрудник модерирует чужой клан, не вступая в него. Это работает для команд с параметром участника:
/clan kick,/clan promote,/clan demote,/clan transfer; - клановая иерархия к такому сотруднику не применяется: он может исключить или понизить даже Заместителя;
/clan inviteвсегда приглашает в клан автора, поэтому право здесь только снимает требование ранга Офицера;clan.createработает как именной обход: держатель права создаёт клан, даже когда создание кланов на сервере запрещено.
Рядового участника клана без права всё это не касается — для него проверки ранга и лидерства остались прежними.
Команда /clan manage delete (принудительное удаление чужого клана по ID) точечные права не проверяет: она закрыта разрешением Discord Администратор на стороне самого Discord.
Staff-команды и иерархия
Точечное право staff-системы разрешает выполнить действие, но после этого бот дополнительно проверяет положение автора и цели.
Если автор состоит в staff-системе, его staff-уровень должен быть строго выше уровня цели.
Если автор не состоит в staff-системе, его Discord-роль должна находиться выше роли цели.
Право staff.add_admin не входит ни в один пресет. Его необходимо выдавать отдельно.
Пресеты
Пресет — это готовый набор точечных прав для типовой роли.
Он:
- не изменяет Discord-разрешения роли;
- не выдаёт разрешение Администратор;
- не назначает staff-ранг;
- не гарантирует доступ к выключенным модулям.
Пресеты веб-панели
| Пресет | Права |
|---|---|
moderator | staff.warn, staff.unwarn, staff.timeout, antiraid.lockdown, tickets.work, tickets.close, tickets.notes |
admin | staff.warn, staff.unwarn, staff.kick, staff.ban, staff.timeout, staff.add_mod, все три права антирейда, logs.config, все четыре права тикетов |
support | tickets.work, tickets.manage, tickets.notes |
clan_master | Шесть клановых прав и season.config |
economy_admin | reward.add, reward.remove, reward.set, reward.set_ranks, achievements.manage |
Различия между панелью и /perm preset
Наборы в веб-панели и slash-команде почти совпадают.
- Slash-пресет
adminдополнительно добавляетautomod.config. Это право в переключателях панели не показывается, но командой/automod statusпроверяется. - Остальные пресеты (
moderator,support,clan_master,economy_admin) совпадают. - Команда
/perm presetвсегда только добавляет права. - Через slash-команду нельзя применить режим Заменить.
Отдельное право tickets.close в пресетах избыточно рядом с tickets.work: закрывать тикеты умеет и держатель tickets.work. Смысл выдавать его отдельно есть тогда, когда роли нужно доверить только закрытие — без очереди, взятия в работу и добавления участников.
После применения пресета рекомендуется:
- открыть карточку роли;
- проверить фактически выданные права;
- протестировать нужную команду с отдельной ролью без разрешения Администратор.
Команды управления правами
| Команда | Параметры | Описание |
|---|---|---|
/perm grant | role, permission | Выдаёт роли одно точечное право или *. Повторная выдача не создаёт дубликат. |
/perm revoke | role, permission | Снимает одно конкретное право. |
/perm list | Необязательный параметр role | Показывает права выбранной роли или общую сводку по серверу. |
/perm preset | role, preset | Добавляет к существующим правам пресет moderator, admin, support, clan_master или economy_admin. |
Ответы команд /perm видит только вызвавший пользователь.
Общая сводка /perm list показывает не больше 25 ролей.
Чтобы проверить роль, которая не попала в список, укажите её отдельно в параметре role.
Кто может использовать /perm
Команды группы /perm доступны только участникам, которым Discord разрешает управлять административными slash-командами бота.
Права, выданные через эту же систему, не дают доступ к /perm.
Даже универсальное право * не открывает эти команды, поскольку группа /perm не использует точечную проверку прав.
Как бот проверяет доступ
При вызове защищённой команды бот получает актуальный список ролей участника.
Точечная проверка считается пройденной, если выполняется хотя бы одно условие:
- участник является владельцем сервера;
- у участника есть разрешение Discord Администратор;
- хотя бы одна его роль имеет нужное точечное право;
- хотя бы одна его роль имеет право
*.
Изменения, выполненные в панели или через /perm, применяются к следующим вызовам команд.
Перезапуск бота не требуется.
Что происходит при снятии или удалении роли
Если снять роль с участника в Discord, он сразу потеряет все права, которые принадлежали этой роли.
Если удалить саму роль с сервера, запись с её правами может остаться в базе данных.
Однако использовать эти права никто не сможет, поскольку роли больше не существует.
Права пользователя и права бота
Точечное право разрешает участнику запросить действие, но не гарантирует, что бот сможет его выполнить.
Например, для:
- кика;
- бана;
- тайм-аута;
- выдачи ролей;
- изменения разрешений каналов;
самому боту всё равно нужны соответствующие Discord-разрешения.
Кроме того, роль бота должна находиться выше роли участника или управляемой роли.
Универсальное право
Единственное универсальное право записывается точно так:
*
Значения вида:
antiraid.*
staff.*
не поддерживаются.
Право *:
- разрешает все точечные проверки;
- не включает выключенные модули;
- не отменяет ограничения страницы Команды;
- не выдаёт Discord-разрешения пользователю;
- не выдаёт Discord-разрешения боту;
- не открывает команды
/perm.
Ограничения
Нет запрещающих прав
Система поддерживает только разрешение доступа.
Нельзя создать правило, которое явно запрещает команду одной роли и перекрывает разрешение другой роли.
Владелец и администраторы
Владелец сервера и участники с разрешением Discord Администратор всегда обходят точечные права.
Создать для них запрет в этом разделе нельзя.
Точные ключи
Права не распространяются автоматически на соседние команды.
Например:
antiraid.configне разрешает/antiraid lockdown;antiraid.lockdownне разрешает/antiraid unlock.
Несоответствие каталогов
Список прав в панели и список прав /perm расходятся в одном пункте: automod.config есть только в /perm и в slash-пресете admin, среди переключателей панели его нет.
Все остальные права каталога панель показывает, а команды проверяют. Полный перечень — в таблице Какие права действительно используются.
Ограничения модулей и команд
Права ролей:
- не включают выключенные модули;
- не отменяют ограничения страницы Команды;
- не заменяют обязательные разрешения Discord;
- не гарантируют достаточную позицию роли бота.
Режим «Заменить»
Режим Заменить удаляет все старые права выбранной роли, включая:
*;- ручные права;
- права, выданные предыдущими пресетами.
Перед применением этого режима проверьте текущий список прав роли.