Права для команд

Раздел Права ролей позволяет выдавать ролям точечный доступ к отдельным административным slash-командам бота.

Например, можно разрешить модератору:

  • включать локдаун через /antiraid lockdown;
  • управлять достижениями;
  • просматривать состояние автомодерации;
  • изменять настройки наград;
  • выполнять отдельные действия staff-системы.

Выданное здесь право:

  • не изменяет разрешения роли в Discord;
  • не назначает участника сотрудником staff-системы;
  • не повышает его staff-ранг;
  • не выдаёт самому боту недостающие разрешения;
  • не включает выключенные модули.

Оно только разрешает участнику пройти внутреннюю проверку доступа к конкретной команде.

Как открыть и настроить

Откройте страницу «Права ролей».

Изменять настройки могут:

  • владелец сервера;
  • участники с разрешением Discord Администратор;
  • участники с разрешением Управлять сервером.

Чтобы выдать права роли:

  1. В поле Добавить роль выберите роль сервера.
  2. На появившейся карточке включите необходимые права.
  3. Либо откройте меню Применить пресет и выберите готовый набор.
  4. При применении пресета выберите режим Добавить или Заменить.

Отдельной кнопки сохранения нет. Каждое изменение отправляется на сервер сразу.

Если снять у роли все права, после обновления страницы её карточка исчезнет. При необходимости роль можно снова выбрать через поле Добавить роль.

У системы нет общего переключателя.

Какие роли можно выбрать

Панель не показывает:

  • роль @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.banr!ban — рядом с разрешением Discord Блокировать участников
staff.timeoutr!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-ранг;
  • не гарантирует доступ к выключенным модулям.

Пресеты веб-панели

ПресетПрава
moderatorstaff.warn, staff.unwarn, staff.timeout, antiraid.lockdown, tickets.work, tickets.close, tickets.notes
adminstaff.warn, staff.unwarn, staff.kick, staff.ban, staff.timeout, staff.add_mod, все три права антирейда, logs.config, все четыре права тикетов
supporttickets.work, tickets.manage, tickets.notes
clan_masterШесть клановых прав и season.config
economy_adminreward.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. Смысл выдавать его отдельно есть тогда, когда роли нужно доверить только закрытие — без очереди, взятия в работу и добавления участников.

После применения пресета рекомендуется:

  1. открыть карточку роли;
  2. проверить фактически выданные права;
  3. протестировать нужную команду с отдельной ролью без разрешения Администратор.

Команды управления правами

КомандаПараметрыОписание
/perm grantrole, permissionВыдаёт роли одно точечное право или *. Повторная выдача не создаёт дубликат.
/perm revokerole, permissionСнимает одно конкретное право.
/perm listНеобязательный параметр roleПоказывает права выбранной роли или общую сводку по серверу.
/perm presetrole, presetДобавляет к существующим правам пресет moderator, admin, support, clan_master или economy_admin.

Ответы команд /perm видит только вызвавший пользователь.

Общая сводка /perm list показывает не больше 25 ролей.

Чтобы проверить роль, которая не попала в список, укажите её отдельно в параметре role.

Кто может использовать /perm

Команды группы /perm доступны только участникам, которым Discord разрешает управлять административными slash-командами бота.

Права, выданные через эту же систему, не дают доступ к /perm.

Даже универсальное право * не открывает эти команды, поскольку группа /perm не использует точечную проверку прав.

Как бот проверяет доступ

При вызове защищённой команды бот получает актуальный список ролей участника.

Точечная проверка считается пройденной, если выполняется хотя бы одно условие:

  1. участник является владельцем сервера;
  2. у участника есть разрешение Discord Администратор;
  3. хотя бы одна его роль имеет нужное точечное право;
  4. хотя бы одна его роль имеет право *.

Изменения, выполненные в панели или через /perm, применяются к следующим вызовам команд.

Перезапуск бота не требуется.

Что происходит при снятии или удалении роли

Если снять роль с участника в Discord, он сразу потеряет все права, которые принадлежали этой роли.

Если удалить саму роль с сервера, запись с её правами может остаться в базе данных.

Однако использовать эти права никто не сможет, поскольку роли больше не существует.

Права пользователя и права бота

Точечное право разрешает участнику запросить действие, но не гарантирует, что бот сможет его выполнить.

Например, для:

  • кика;
  • бана;
  • тайм-аута;
  • выдачи ролей;
  • изменения разрешений каналов;

самому боту всё равно нужны соответствующие Discord-разрешения.

Кроме того, роль бота должна находиться выше роли участника или управляемой роли.

Универсальное право

Единственное универсальное право записывается точно так:

*

Значения вида:

antiraid.*
staff.*

не поддерживаются.

Право *:

  • разрешает все точечные проверки;
  • не включает выключенные модули;
  • не отменяет ограничения страницы Команды;
  • не выдаёт Discord-разрешения пользователю;
  • не выдаёт Discord-разрешения боту;
  • не открывает команды /perm.

Ограничения

Нет запрещающих прав

Система поддерживает только разрешение доступа.

Нельзя создать правило, которое явно запрещает команду одной роли и перекрывает разрешение другой роли.

Владелец и администраторы

Владелец сервера и участники с разрешением Discord Администратор всегда обходят точечные права.

Создать для них запрет в этом разделе нельзя.

Точные ключи

Права не распространяются автоматически на соседние команды.

Например:

  • antiraid.config не разрешает /antiraid lockdown;
  • antiraid.lockdown не разрешает /antiraid unlock.

Несоответствие каталогов

Список прав в панели и список прав /perm расходятся в одном пункте: automod.config есть только в /perm и в slash-пресете admin, среди переключателей панели его нет.

Все остальные права каталога панель показывает, а команды проверяют. Полный перечень — в таблице Какие права действительно используются.

Ограничения модулей и команд

Права ролей:

  • не включают выключенные модули;
  • не отменяют ограничения страницы Команды;
  • не заменяют обязательные разрешения Discord;
  • не гарантируют достаточную позицию роли бота.

Режим «Заменить»

Режим Заменить удаляет все старые права выбранной роли, включая:

  • *;
  • ручные права;
  • права, выданные предыдущими пресетами.

Перед применением этого режима проверьте текущий список прав роли.