Права автоматизаций
Главное правило: право редактировать автоматизации не даёт автоматически права банить, выдавать роли или модерировать сервер.
Как это работает
У каждого правила есть автор — тот, кто его создал. В момент выполнения Kizora заново проверяет права автора, а не того, кто вызвал событие.
Каждое действие требует двух вещей: automations.manage и право того модуля, в который действие вмешивается.
| Действие | Нужно автору |
|---|---|
| Выдать роль, снять роль | automations.manage и roles.manage |
| Написать в канал, в личные, поставить реакцию, закрепить | automations.manage и messages.manage |
| Удалить сообщение, выдать тайм-аут | automations.manage и moderation.act |
| Записать в журнал | automations.manage |
Пример
Человек имеет automations.manage, но не имеет moderation.act.
Добавить в правило действие «выдать тайм-аут» ему не дадут: отказ приходит сразу, при сохранении, и называет недостающее право. Включение готового правила проверяется так же — каждое его действие заново.
Проверка при сохранении — не единственная. Права спрашиваются ещё раз, перед каждым срабатыванием, потому что права снимают: правило, заведённое модератором, иначе продолжало бы выдавать тайм-ауты и через месяц после того, как модератора им лишили. В этом случае запуск получает статус «запрещено», и в журнале написано, какого права не хватило.
Права проверяются каждый раз
Права не запоминаются в момент создания правила. Их проверяют при каждом срабатывании — потому что человек может уйти из команды, а правило продолжит работать от его имени.
Практическое следствие: если у автора правила забрали право, правило перестаёт выполнять соответствующее действие. Не ломается и не удаляется — именно перестаёт делать то, на что права больше нет.
Отдельный статус «запрещено» существует ровно для этого случая: Discord тут ни при чём, отказала Kizora, и причина исправимая — вернуть право или убрать действие.
Что делать, если правило перестало работать
- Откройте журнал запусков правила.
- Найдите статус «запрещено» и посмотрите, какого права не хватает.
- Либо верните право автору, либо пересоздайте правило от имени того, у кого право есть, либо уберите действие.
Что видно без прав
Список правил и само правило открыты любому участнику сервера: «что этот сервер делает автоматически» видно и по поведению бота, а прятать это значило бы сделать сервер менее объяснимым, ничего не защитив.
Закрыто то, из чего видно людей и подробности: разбор условий, проверка вхолостую и журнал срабатываний — они требуют automations.manage.
Откуда берутся права автора
Из его Discord-ролей и выданных этим ролям прав Kizora — тем же способом, что и в любой команде (см. Права Kizora). Набор собирается заново на момент срабатывания, а не запоминается при создании правила.
У администратора сервера правила выполняются целиком. У автора без Discord-прав «Администратор» или «Управление сервером» — только те действия, права на которые есть у его ролей сейчас.
Проверка вхолостую отвечает то же самое: если права отозвали, прогон покажет «не выполнится» и назовёт право. Прогон, обещающий успех там, где выполнение откажет, был бы хуже своего отсутствия.