2026-04-06 14:02:07 +03:00

13 KiB
Raw Blame History

Плагин значков для Loop

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

Установка

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

Настройка

  • Администраторы значков: все системные администраторы автоматически являются администраторами значков. Дополнительно можно назначить любое количество администраторов значков через мультиселект в настройках плагина.

Использование

Создание типа значка

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

Выполните слэш-команду /badges create type, чтобы открыть диалог создания.

  • Название: название типа, отображаемое в описании значков.
  • Все могут создавать значки: если отмечено, любой пользователь Loop может создавать значки этого типа.
  • Список допущенных к созданию: username'ы через запятую — кто может создавать значки этого типа.
  • Все могут выдавать значки: если отмечено, любой пользователь Loop может выдавать значки этого типа.
  • Список допущенных к выдаче: username'ы через запятую — кто может выдавать значки этого типа.

Права доступа

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

Примеры конфигураций (ECC: все могут создавать, CC: список допущенных к созданию, ECG: все могут выдавать, CG: список допущенных к выдаче):

Права Пример использования ECC ECG CC CG
Только администраторы могут создавать и выдавать false false пусто пусто
Только user1 создаёт, но выдавать может каждый Значок "Спасибо" от коллег false true user1 пусто
Только user1 создаёт, выдают только user2 и user3 Значок "MVP" — руководство создаёт, тимлиды выдают false false user1 user2, user3
user1 и user2 создают, выдают только свои значки Командные значки без создания нового типа на каждую команду false false user1, user2 пусто
Все создают и выдают только свои значки true false пусто пусто
Все создают и выдают любые значки true true пусто пусто

Создание значка

Выполните слэш-команду /badges create badge, чтобы открыть диалог создания.

  • Название: название значка.
  • Описание: описание значка.
  • Изображение: только эмодзи. Укажите имя эмодзи как в сообщении (например :+1: или :smile:). Кастомные эмодзи тоже поддерживаются.
  • Тип: тип значка. В списке отображаются только типы, для которых у вас есть права на создание.
  • Множественный: можно ли выдавать этот значок одному человеку несколько раз.

Подробнее о параметре "Множественный"

Любой значок можно выдать любому количеству людей. Параметр Множественный определяет, можно ли выдать значок одному и тому же человеку более одного раза. Например, значок "Спасибо" стоит сделать множественным — один человек может получить благодарность многократно. А значок "Первый год в компании" должен быть невозможно выдать дважды.

Выдача значка

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

  • Выполнить команду /badges grant.

  • Нажать Выдать значок в поповере профиля пользователя.

  • Пользователь: кому выдаётся значок.

  • Значок: какой значок выдаётся.

  • Причина: необязательное пояснение (особенно полезно для значков типа "Спасибо").

  • Уведомить в этом канале: если отмечено, бот опубликует сообщение в текущем канале о выдаче значка.

Получатель значка всегда получает личное сообщение от бота. Дополнительно:

  • Если отмечено Уведомить в этом канале — бот публикует сообщение в текущем канале.
  • Если настроена подписка для этого типа — бот публикует сообщение во всех подписанных каналах.

Подписки

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

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

  • Выполнить команду /badges subscription create.

  • Нажать Добавить подписку на значки в меню канала.

  • Тип: тип значков, на который подписывается канал.

Для удаления подписки используйте /badges subscription remove или Удалить подписку на значки в меню канала.

Редактирование и удаление значков и типов

Для редактирования и удаления типов необходимы права администратора значков. Для редактирования и удаления значка — права администратора или создателя значка.

Выполните /badges edit type --type typeID или /badges edit badge --id badgeID, чтобы открыть диалог редактирования. Автодополнение поможет выбрать нужный значок или тип.

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

При удалении значка безвозвратно удаляется вся история его выдачи. При удалении типа удаляются тип и все связанные с ним значки.

Список значков

Значки отображаются в нескольких местах. В поповере профиля — до 20 последних полученных значков. При наведении на значок появляется подсказка, при клике открывается панель с деталями значка.

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


REST API

Базовый URL: https://<сервер>/plugins/ru.loop.plugin.achievements

Все запросы требуют токен в заголовке:

Authorization: Bearer <токен>

Токен можно получить в настройках аккаунта Loop: Профиль → Безопасность → Персональные токены доступа.

Типы значков

Метод Эндпоинт Описание
GET /api/v1/getTypes Список типов, доступных текущему пользователю
POST /api/v1/createType Создать тип (только администраторы)
PUT /api/v1/updateType Обновить тип (только администраторы)
DELETE /api/v1/deleteType/{typeID} Удалить тип и все его значки (только администраторы)

Значки

Метод Эндпоинт Описание
GET /api/v1/getAllBadges Полный список значков
GET /api/v1/getUserBadges/{userID} Значки конкретного пользователя
GET /api/v1/getBadgeDetails/{badgeID} Детали значка и список получателей
POST /api/v1/createBadge Создать значок
PUT /api/v1/updateBadge Обновить значок
DELETE /api/v1/deleteBadge/{badgeID} Удалить значок и историю его выдачи

Выдача значков

Метод Эндпоинт Описание
POST /api/v1/grantBadge Выдать значок пользователю
POST /api/v1/revokeOwnership Отозвать выдачу значка

Подписки

Метод Эндпоинт Описание
GET /api/v1/getChannelSubscriptions/{channelID} Список подписок канала
POST /api/v1/createSubscription Создать подписку (только администраторы)
POST /api/v1/deleteSubscription Удалить подписку (только администраторы)

Интеграция с другими плагинами (Plugin API)

Плагин поддерживает интеграцию с другими плагинами Loop через механизм PluginHTTP. Авторизация выполняется автоматически ядром Loop — токен не нужен.

Доступны два эндпоинта:

Ensure — создать значки если не существуют

URL: /ru.loop.plugin.achievements/papi/v1/ensure

Метод: POST

{
  "Badges": [
    {
      "name": "My badge",
      "description": "Awesome badge",
      "image": "smile",
      "image_type": "emoji",
      "multiple": true
    }
  ],
  "BotId": "botUserId"
}

Создаёт значки, если они ещё не существуют (проверка по имени), и возвращает их с заполненными id.

Grant — выдать значок

URL: /ru.loop.plugin.achievements/papi/v1/grant

Метод: POST

{
  "BadgeID": "badgeID",
  "BotId": "botUserId",
  "UserID": "userID",
  "Reason": "За крутую работу"
}

Выдаёт значок от имени указанного бота пользователю. Reason — необязательное поле.