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

Раздел Права ролей позволяет разрешать ролям отдельные административные команды бота, в том числе команды Discord вида /команда.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • роль @everyone;
  • роли, управляемые ботами;
  • роли, управляемые интеграциями.

Однако команда /perm grant не использует такой фильтр.

Важно: внимательно проверяйте роль при использовании /perm grant. Если выдать право * роли @everyone, доступ ко всем командам, защищённым этой системой, получат все участники сервера.

Три уровня проверки доступа

Для успешного запуска команды может одновременно проверяться несколько независимых настроек.

1. Состояние модуля

Переключатель модуля определяет, доступна ли группа команд целиком.

Например, команды /antiraid зависят от общего модуля Модерация.

Если модуль выключен, отдельное право не позволит запустить команду.

Даже владелец сервера и участник с разрешением Администратор не могут обойти выключенный модуль.

2. Право роли на отдельную команду

Право роли определяет, может ли участник использовать конкретную административную команду.

Например, Включение локдауна (antiraid.lockdown) разрешает /antiraid lockdown, но не другие команды антирейда. Значение в скобках — внутренний ключ права: его нужно выбрать или указать при выдаче права через /perm grant.

Обычному участнику достаточно иметь хотя бы одну роль с нужным правом.

Владелец сервера и участники с разрешением 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 status, но сейчас не отображается среди переключателей веб-панели.

Выдать или снять его можно командами:

/perm grant
/perm revoke

Права, которые пока не работают

Все права каталога подключены к реальным проверкам команд.

Отдельного /timeout у бота нет: тайм-аут выдаётся командой r!mute, и право staff.timeout относится именно к ней.

Как разрешить команду без стандартного разрешения Discord

Некоторые команды можно отдельно разрешить роли, даже если у её участников нет соответствующего разрешения 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

Наборы в веб-панели и команде /perm preset почти совпадают.

  • Набор admin, выданный через /perm preset, дополнительно добавляет automod.config. Это право в переключателях панели не показывается, но командой /automod status проверяется.
  • Остальные пресеты (moderator, support, clan_master, economy_admin) совпадают.
  • Команда /perm preset всегда только добавляет права.
  • Через команду /perm preset нельзя применить режим Заменить.

Отдельное право 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 разрешает управлять административными командами бота вида /команда.

Права, выданные через эту же систему, не дают доступ к /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 и в наборе admin команды /perm preset, среди переключателей панели его нет.

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

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

Права ролей:

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

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

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

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

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