Cluster · разработчикам

Управление юзерботом

Раздел «Управление юзерботом» доступен овнерам выбранного юзербота. В нём находятся диагностика модулей, расход ресурсов, история настроек, автоматизации и наборы для повторной установки.

Диагностика

Для каждого модуля показываются состояние юзербота, процесс, пакет, сборка и подключение обработчиков. Если модулю нужен Telegram или личный бот, рядом будет состояние соответствующего подключения. Для зависимостей проверяется выбранный экземпляр и его запуск.

Права сверяются с описанием установленной версии. «Выдано» означает, что право присутствует в настройках. Ограничения чатов, пользователей, адресов и ресурсов продолжают действовать при каждом запросе. Диагностика не отправляет сообщения и не выполняет команды вместо пользователя.

Последние события помогают найти ошибку запуска или обработки запроса. Кнопка «Настройки модуля» открывает нужный экземпляр.

Ресурсы модулей

Память и CPU измеряются по группе ресурсов процесса. Если процесс остановлен или измерение недоступно, отображается отсутствие данных. Нулевой расход вместо неизвестного значения не подставляется.

CPU указан в процентах одного процессорного ядра. Сеть включает HTTP и WebSocket, которые модуль вызывает через ядро. Общий трафик Telegram нельзя достоверно разделить между модулями, поэтому он в эти значения не входит. Счётчики сети начинают отсчёт после запуска ядра.

Открытая страница обновляется раз в 15 секунд. История за последние сутки сохраняется раз в минуту в пятнадцатиминутные интервалы; внутри интервала хранится последний замер. Это значения в конкретный момент, а не средний или максимальный расход за интервал. Недавние замеры доступны подробнее, пока ядро работает. История занимает место в накопителе юзербота и удаляется по истечении срока.

Хранилище разбито на файлы, данные, журналы и резервные копии. Пересчёт выполняется не чаще раза в минуту. За один проход просматривается до 10 000 записей. При достижении предела страница сообщает, что итог неполный. Служебные записи ядра могут учитываться отдельно от модулей.

История настроек

Запись содержит автора, время, раздел и изменённые поля с прежними и новыми значениями. Сохраняются последние 500 записей для юзербота. История начинается с установки этой версии Cluster; старые изменения в неё не восстанавливаются.

Можно вернуть одно поле или все изменения записи. Если после этой записи поле уже менялось, восстановление отклоняется. Сначала проверь текущее значение. Права, зависимости, типы полей и доступ овнера проверяются повторно.

Секретные поля, привязанные к ним значения и вложенные данные с именами ключей вроде password, token и api_hash не попадают в снимки. Это дополнительная защита, а не способ распознать произвольный секрет: разработчик должен объявлять такие параметры как secret. Управление овнерами записывается для просмотра, но не восстанавливается кнопкой истории. Слишком большой снимок также остаётся без восстановления.

Автоматизации

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

Способы запуска:

Для результата модуля можно задать условия: равенство, наличие текста, сравнение чисел. Путь text обращается к полю результата, report.count к вложенному полю, $ к результату целиком. Отсутствующее поле не проходит условие.

В цепочку добавляются действия из описания модулей. Ядро строит обычную форму по типам полей. Значение можно заполнить заранее или взять из результата предыдущего действия. Первое действие правила получает результат запускающего обработчика; при ручном запуске и запуске по расписанию это пустой объект.

Перед каждым действием можно поставить задержку до суток. В правиле допускается до 16 действий и 16 условий, в юзерботе до 100 правил. Действия с обязательным подтверждением и полями типа secret в автоматизацию не добавляются.

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

Изменение или удаление правила останавливает следующие шаги. Уже отправленное действие может успеть завершиться. Автоматического отката его результата нет. После перезапуска ядра потерянное выполняющееся действие отмечается ошибкой, чтобы не повторить возможную отправку или запись. Новые действия автоматизации не запускают другие правила по своему завершению: это предотвращает циклы.

Список выполнений содержит последние 100 запусков. Сохраняется результат до 8 КБ. Ожидающий запуск резервирует место в накопителе; при заполненном накопителе новое выполнение не создаётся.

Поиск

Кнопка в верхней панели или Ctrl+K (Cmd+K на macOS) открывает поиск. Он находит разделы, модули, действующие алиасы команд и названия настроек. Овнер также может искать файлы по имени. Содержимое файлов и значения настроек не читаются.

Доверка видит только доступные ей модули. Для файлов просматриваются первые 1000 записей, выдача ограничена 50 результатами. Поиск требует от двух символов.

Наборы настроек

Набор сохраняет версии и профили выбранных модулей, обычные значения конфигурации и алиасы команд. Его можно скачать в JSON, импортировать в другой юзербот, переименовать и изменить профили модулей и команды перед установкой.

Секретные параметры, привязки файлов, данные модулей, сеансы Telegram и выданные права не экспортируются. Перед передачей файла проверь обычные текстовые поля: они могут содержать личные сведения, которые ты сохранил сам.

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

Если обязательное скрытое поле нельзя перенести, модуль устанавливается с указанием заполнить настройки. Установка нескольких модулей не является общей транзакцией: при ошибке уже установленные экземпляры остаются, страница показывает результат по каждому из них. Повторный запуск требует проверить оставшиеся конфликты.

На юзербот доступно до 100 наборов, в одном наборе от одного до 32 модулей. Размер файла ограничен 64 КБ и входит в накопитель.

Готовые модули

Примеры с исходниками и описаниями пакетов:

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

HTTP API

Все запросы ниже используют POST, действующий сеанс и CSRF. Параметр id обозначает выбранный юзербот. Полные сигнатуры находятся в перечне маршрутов.

МаршрутНазначение
portal/diagnosticsПроверки модулей и последние события
portal/module-metricsПамять, CPU, сеть и место по экземплярам
portal/searchПоиск с учётом доступа
history/listЗаписи истории, фильтр экземпляра и предыдущая страница
history/restoreВосстановление выбранных полей
automations/listПравила и выполнения
automations/saveСоздание или сохранение с проверкой revision
automations/startРучной запуск правила
automations/removeУдаление правила
presets/list, presets/createСписок и создание набора
presets/import, presets/previewПроверка файла и просмотр установки
presets/updateСохранение изменённого набора с проверкой previous
presets/apply, presets/removeУстановка с выбранными правами и удаление набора

Техническая проверка публикации находится в форме добавления версии, отдельно от инструментов установленного юзербота.