Права Kizora
Право Kizora отвечает на вопрос «кто из нашей команды управляет вот этой функцией бота». Право Discord отвечает на другой вопрос — «что может сам бот». Их нельзя перепутать: право Kizora никогда не расширяет Discord. tickets.handle не открывает канал, в который Discord человека не пустил.
Кому и как выдаются
Право выдаётся Discord-роли, а не человеку. Персональных выдач нет намеренно: их пришлось бы отзывать вручную при каждом уходе из команды.
Владелец сервера и все, кому Discord дал Администратор или Управление сервером, проходят любую проверку прав Kizora без отдельной выдачи. Отдельной строки для них нет: это было бы право, которое можно случайно отобрать у того, кто и так владеет сервером.
Выдать право на раздачу прав нельзя. roles.manage — это право на роли, а не на раздачу прав; иначе одно делегирование превращалось бы в лестницу.
Полный список
| Право | Что даёт | Подробнее | Модуль |
|---|---|---|---|
roles.manage | Роли по выбору | Меню ролей, временные и отложенные роли | Роли по выбору |
messages.manage | Сообщения сервера | Создавать и планировать сообщения, закреплять sticky | Сообщения сервера |
commands.manage | Команды сервера | Свои команды, теги и автоответы | Свои команды |
forms.manage | Формы | Создавать и менять формы | Формы |
forms.read | Ответы на формы | Видеть отправленные ответы — личные данные | Формы |
giveaways.manage | Розыгрыши | Запускать, завершать и перерозыгрывать | Розыгрыши |
polls.manage | Голосования | Создавать и закрывать голосования | Голосования |
starboard.manage | Доска звёзд | Эмодзи, порог, каналы | Доска звёзд |
reminders.manage | Напоминания сервера | Ставить напоминания в каналы и снимать чужие | Напоминания |
tickets.manage | Настройка обращений | Панели, категории, SLA, транскрипты | Обращения |
tickets.handle | Работа с обращениями | Брать в работу, отвечать, закрывать — личные данные | Обращения |
voice.manage | Голосовые комнаты | Лобби, шаблоны имён, голосовые роли | Голосовые комнаты |
verification.manage | Проверка на входе | Настройка и ручное рассмотрение заявок | Проверка на входе |
security.manage | Защита сервера | Anti-raid, anti-nuke, режим тревоги | Защита сервера |
moderation.act | Модерация: действия | Предупреждения, тайм-ауты, кики, баны, чистка и журнал дел | Модерация |
moderation.manage | Модерация: настройка | Шаблоны причин, апелляции, настройки модуля | Модерация |
logs.read | Журнал сервера | Читать журнал событий и видеть, куда пишется каждый раздел — личные данные | Журнал сервера |
stats.read | Статистика | Смотреть аналитику сервера | Статистика |
invites.manage | Приглашения | Учёт приглашений, бонусы и награды | Приглашения |
community.manage | Сообщество | Идеи, Q&A, репутация, цели | Сообщество |
events.manage | События | Создавать события, вести запись и посещаемость | События |
automations.manage | Автоматизации | Правила «когда — если — тогда» | Автоматизации |
feeds.manage | Ленты | RSS и подписки: подключить, приостановить, вернуть, убрать | Ленты |
integrations.manage | Интеграции | Входящие вебхуки, их секреты и журнал доставок, GitHub, GitLab, мониторинг — личные данные | Интеграции |
economy.manage | Экономика | Валюта, магазин, начисления и корректировки | Экономика |
Права к личным данным
Четыре права открывают доступ к тому, что участники не писали публично: forms.read (ответы на формы), tickets.handle (переписка в обращениях), logs.read (журнал событий сервера) и integrations.manage (секреты вебхуков). Панель показывает их отдельно и не предлагает выдать «всё сразу» одной кнопкой.
Как право доходит до действия
Discord-роли участника
↓
строки выдачи (роль → набор прав)
↓
права этого человека на этом сервере
↓
проверка в сервисе — до любого действия в DiscordПрава собираются заново на каждое действие, по ролям, которые у человека есть в этот момент. Три следствия, и все три проверены тестами:
- сняли право с роли — следующая же команда откажет;
- сняли роль с человека — то же самое;
- роль с таким же номером на другом сервере не значит здесь ничего.
Кнопки и списки под сообщениями проверяются так же и в момент нажатия. Кнопка живёт в канале месяцами и не помнит, кто её повесил, поэтому право спрашивается у того, кто нажал, а не у того, кто опубликовал.
Что делает панель, а что Discord
Делегированные права работают в Discord: в командах, кнопках, списках и модальных окнах, а также при выполнении автоматизаций.
Веб-панель работает иначе, и это ограничение модели, а не недоделка. Вход в панель — через OAuth Discord, а он сообщает список серверов и права Discord на них, но не сообщает, какие роли у человека на сервере. Собрать по этим данным набор делегированных прав нельзя, а изображать, что можно, значило бы выдавать доступ по сведениям, которых нет.
Поэтому:
- настройка сервера через панель требует владения сервером или Discord-права «Администратор» либо «Управление сервером»;
- чувствительные чтения (журнал дел, журнал событий, ответы форм, переписка обращений, секреты интеграций, чужой журнал начислений) проверяются отдельно и в панели тоже: доступ к серверу в панели есть у любого его участника, и одного этого недостаточно;
- делегировать права через панель нельзя — не потому, что неудобно, а потому, что не по чему.
Если вам нужно, чтобы человек управлял модулем и без Discord-права «Управление сервером», выдайте право его роли и работайте командами Kizora в Discord.