Перейти к содержимому
Paper Bot/Документация

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

Правило состоит из трёх частей: когда срабатывает, при каких условиях и что сделать. Бот выполняет его сам: напоминает автору, зовёт персонал, закрывает тикет по кнопке, выдаёт роль. Правила настраиваются в веб-панели, раздел «Автоматизации».

Редактор

Слева — палитра всех блоков с поиском и группами по цвету: «Когда», «Если», сообщения, тикет, участник, интеграции, время и логика. Блок добавляется кликом (встаёт после выделенного шага) или перетаскиванием на любой «+». В центре правило в одном из двух видов: «Шаги» — карточки сверху вниз, «Схема» — узлы на холсте с ветками «да / иначе» (колесо двигает холст, Ctrl + колесо меняет масштаб). Справа — настройки выделенного шага, кнопки «выше / ниже / копия / удалить».

  • •Незаполненный шаг подсвечивается красным ещё до сохранения; счётчик «Требуют внимания» ведёт к первому такому шагу.
  • •Esc снимает выделение, Delete удаляет выделенный шаг, Ctrl + Z / Ctrl + Y — отменить и повторить правку.
  • •Шаг можно перетащить мышью на любой «+» — в другое место списка или в ветку «да / иначе». Клавиша «/» — быстрый поиск блока.
  • •«Версии» (в свойствах правила, когда ничего не выделено): каждое сохранение со сменой шагов или имени запоминает прежнее правило — последние 20, с тем, кто сохранил. «Вернуть» откатывает; текущее при этом тоже уходит в версии.
  • •«Копия» создаёт выключенную копию правила (свои кнопки в ней получают новые ключи). «Код» даёт код правила на сутки (правило не менялось — тот же код, срок продлевается); «Новое правило → Импорт по коду» добавляет его на этом или другом сервере — выключенным, а с другого сервера без ролей, каналов и неизвестных категорий. «Загрузить из файла» принимает правило, написанное вручную, — формат описан на странице «Формат правила».
  • •«Прогон на тикете» показывает, что сделало бы правило (как оно сейчас в редакторе, даже несохранённое) с выбранным тикетом: у каждого шага ✓ выполнится, ✗ не пройдёт, — не дойдёт, ? решит бот (роли участников панель не видит) и через сколько он случится. Шаги, меняющие тикет, учитываются дальше: после «приоритет высокий» следующее «если» видит уже высокий. Ничего не выполняется.
  • •В списке правил у каждого — цепочка значков, срабатывания за 14 дней и ошибки за неделю; журнал правила показывает, какой шаг и почему не выполнился.
  • •Правило, у которого 10 запусков подряд все шаги падают с ошибкой (удалили роль или канал, у бота нет прав), выключается само: причина видна в списке и в редакторе. Поправьте шаг и включите правило снова. Упоры в лимиты сюда не считаются.

Когда

ТриггерСрабатывает
Тикет открытСразу после создания тикета.
Первый ответ персоналаПервое сообщение в тикете не от автора — из Lolka или из веб-панели.
Тикет взят / снятКнопкой, командой, из веба или «первый ответивший — взял».
Тикет закрытЛюбым способом, в том числе автозакрытием. Срабатывает после архивации канала.
Тикет переоткрытКнопкой, командой или из веба.
Поставлена оценкаАвтор оценил тикет после закрытия. Какая оценка — уточняется условием.
Нажата своя кнопкаКто-то нажал вашу кнопку (см. ниже).
Сообщение в тикетеЖивое сообщение в открытом тикете — от автора, от персонала или от кого угодно; можно «содержит текст» (варианты через |) или регулярку, можно «только с вложением» (файл, картинка). Участник, добавленный в тикет (/ticket add), считается автором, а не персоналом — так же в «Кого ждёт тикет», «Сообщений в тикете» и таймерах «молчит». По умолчанию — один раз на тикет.
Сменился приоритетКомандой, из веба или другим правилом; можно выбрать, на какой.
Перенесён в категориюЭскалация любым способом; можно выбрать, в какую категорию.
Автор покинул серверПо каждому открытому тикету автора — независимо от галки «закрывать, если автор ушёл».
Роль у автораУ автора появилась или пропала одна из выбранных ролей — по каждому его открытому тикету. Прежние роли бот знает по сообщениям и действиям автора; самое первое изменение у автора, который ещё ничего не делал, может пройти мимо.
Наплыв в категорииОткрытых в категории (выбранной или любой) стало больше N — срабатывает на тикете, который перешёл порог, один раз на наплыв.
Участник добавлен или убранКомандой /ticket add|remove, из веб-панели или правилом; можно выбрать, добавлен или убран. Запустившим считается сам участник — ему можно выдать роль или упомянуть его.
Кончилась пауза автозакрытияСрок паузы вышел или её сняли командой /ticket resume. Проверяется раз в минуту, срабатывает один раз.
Сотрудник ушёл с сервераПо каждому открытому тикету, который он взял: снять с него, передать, позвать персонал.
Вызвана своя командаВ тикете отправили свой шаблон — командой с префиксом или через /reply; можно указать, какой.
Автор молчит XПоследним писал персонал, автор не отвечает столько времени.
Персонал молчит XАвтор ждёт ответа столько времени (или с открытия никто не писал).
Никто не взял XТикет открыт и не взят столько времени.
Открыт дольше XС открытия прошло столько времени, а тикет всё ещё открыт. Один раз на тикет.

Триггеры «по времени» проверяются раз в минуту по открытым тикетам, минимум — 5 минут. На одном тикете такое правило срабатывает один раз, пока ситуация не изменится: автор ответил и снова замолчал — правило сработает ещё раз.

Если

Необязательные условия; должны выполниться все.

УсловиеЧто проверяет
КатегорияОдна из выбранных или не из них.
СтатусОткрыт или закрыт; взят или не взят; приоритет.
Роль автораЕсть одна из ролей или нет ни одной.
ОценкаНе выше или не ниже N (👎 считается как 1, 👍 — как 5).
Кого ждёт тикетНас (последним писал автор) или автора (последним писал персонал).
Часы поддержкиСейчас рабочее время или нет (расписание категории или сервера; нет расписания — всегда рабочее).
Ответ в формеОтвет на вопрос (по части текста вопроса) содержит заданный текст.
Пауза автозакрытияТикет на паузе или нет.
Роль взявшегоУ сотрудника, который взял тикет, есть одна из ролей или нет ни одной.
День и времяДни недели и (необязательно) окно ЧЧ:ММ; конец раньше начала — окно через полночь, конец равен началу — весь день. Часовой пояс — из «Часов поддержки», по умолчанию Москва.
Открытых тикетов у автораНе меньше или не больше N, считая этот.
Сообщений в тикетеЖивых (не бот и не события): всех, автора или персонала, не меньше или не больше N.
Тикет открытБольше или меньше заданного времени с открытия.
Сколько раз переоткрывалиНе меньше или не больше N раз.
Давно ли автор на сервереНе больше или не меньше N дней с входа на сервер — например, осторожнее с новыми аккаунтами. Автора нет на сервере — не выполнено.

Блок «Проверить на тикетах» в свойствах правила (ничего не выделено) показывает, к скольким открытым тикетам правило подошло бы прямо сейчас, ничего не выполняя, — и пересчитывается сам, пока вы меняете «Когда» и «Если». Роль автора, роль взявшего и «давно ли автор на сервере» там не проверяются.

Что сделать

ДействиеЧто делает
Написать в тикетСообщение в канал тикета, можно со своими кнопками. Подстановки: {user} — автор (с пингом), {staff} — кто взял, {actor} — кто запустил (нажал кнопку, закрыл), {user_name} и {staff_name} — те же имена без пинга, {support} — роли поддержки тикета (сервер и категория, пингует), {support_category} — только роли категории, {priority} — приоритет словом, {age} — сколько тикет открыт («2 ч»), {rating} и {comment} — оценка и отзыв, {number}, {category}, {channel}, {guild}. Нужна конкретная роль — выберите её в поле «Пинговать роли» у шага «Написать в тикет» или впишите в текст <@&ID роли>.
Написать в каналСообщение в любой канал сервера, с пингом выбранных ролей.
Добавить в тикет / убратьДать или снять доступ к каналу тикета ролям и (по галке) тому, кто запустил правило — например, позвать администраторов. Автора не трогает.
ВебхукPOST во внешний сервис — JSON с данными тикета или сообщение для вебхука канала Lolka. Только https и публичные адреса.
Закрыть тикетКак обычное закрытие: транскрипт, логи, архив или удаление канала. Причина — своя или «Автоматизация «имя»».
Удалить каналОткрытый тикет сначала закрывается. Транскрипт остаётся.
ПриоритетНизкий, средний или высокий.
Перенести в категориюКак эскалация: канал переезжает, права — по новой категории.
Взять на нажавшегоДля своей кнопки: тикет берёт тот, кто нажал, если он персонал.
Выдать / снять роль авторуРоль должна быть ниже роли бота.
Пауза автозакрытияНа час, сутки, неделю, без срока или снять паузу.
Попросить оценкуВ закрытом тикете — даже если оценка выключена в настройках.
Снять с сотрудникаТикет снова свободен.
ПереоткрытьЗакрытый тикет, канал которого остался в архиве.
Переименовать каналДо 100 символов, с подстановками.
Исключить / забанить / разбанить автораМодерация по тикету: например, апелляция одобрена → разбанить.
Ответ из шаблонаШаблон ответа персонала из раздела «Команды» — как /reply: текст или embed. {user} и {staff} в шаблоне — тот, кто запустил правило.
Запретить автору писать / разрешитьАвтор видит тикет, но писать не может — на время (снимется само, даже если правило выключат) или до шага «Разрешить писать». Персонал и владельца не трогает.
В чёрный список / убратьКак /blacklist add и remove: на час, сутки, неделю, 30 дней или навсегда, с причиной. Персонал и владельца не трогает.
Убрать кнопкиДля «Нажата своя кнопка»: снимает кнопки с сообщения, на котором нажали, — «Вопрос решён? Да / Нет» не нажмут второй раз.
ПодождатьСледующие действия выполнятся через это время (до 30 дней). Ожидание переживает перезапуск бота. Если правило шло по открытому тикету, а его за это время закрыли, — дальше не идёт; начатое на закрытом тикете (например, после оценки) продолжается.
ПовторятьКаждые X, не больше N раз (до 10), пока условие верно.
Если / иначеРазные действия в зависимости от условий.
Не запускать следующие правилаПравила ниже в списке на это же событие не сработают — например, VIP-правило стоит выше общего и перехватывает тикет.

Как работает «Повторять»

Вложенные действия выполняются сразу, потом каждые X — пока верно условие «пока». Если условие перестало выполняться, правило останавливается и дальше не идёт. Если повторы кончились — через X выполняется всё, что стоит после «Повторять».

Пример — шаблон «Напомнить автору и закрыть»: автор молчит сутки → повторять раз в сутки, не больше 2 раз, пока тикет ждёт автора: «вопрос ещё актуален?» → закрыть. Автор ответил — напоминания прекращаются, тикет не закрывается.

Модерация не трогает персонал, владельца сервера и самого бота — даже если правило сработало на их тикете. Боту нужно право Lolka «Управлять участниками» (одно на исключение и бан), а его роль должна быть выше роли автора.

Вебхук

Формат «JSON» отправляет событие, имя правила, сервер и тикет (номер, статус, приоритет, категорию, автора, кто взял, оценку) и поле text. Формат «Сообщение» отправляет {"content": "…"} — так принимают вебхуки каналов. Адреса внутренней сети (localhost, 10.*, 192.168.* и подобные) не принимаются, редиректы не выполняются, ответ ждём не дольше 5 секунд. Вебхук передаёт данные тикета (номер, id автора и сотрудника, категорию, оценку) на указанный адрес — за этот адрес отвечает администратор сервера.

В «Написать в тикет» можно выбрать роли для пинга. @everyone и @here из текста правила не пингуют никогда.

Шаблоны

«Новое правило» предлагает готовые сценарии по темам. Шаблоны, которым нужна категория или роль, спрашивают их сразу.

ТемаШаблоны
Напоминания и закрытиеНапомнить автору и закрыть; закрыть тикет, открытый неделю; автор ушёл с сервера → закрыть; удалить канал через сутки после закрытия; закрыли без ответа персонала → удалить канал.
ПерсоналПозвать персонал, если не взяли; автоответ вне рабочего времени; напомнить взявшему, что автор ждёт; не взяли за 2 часа → позвать роль в тикет; ответ на частый вопрос; наплыв в категории → позвать поддержку; переоткрыли N раз → высокий приоритет; выходные → предупредить, что ответ дольше.
Кнопки«Вопрос решён» для автора; автор благодарит → предложить закрыть; «Я займусь» для персонала.
ОценкиОценка поставлена → удалить канал; плохая оценка → сообщить; оценка 5 → в канал отзывов.
Доступ и модерацияАпелляция: одобрить → разбанить; заявка: принять → выдать роль; VIP-автор → высокий приоритет; много открытых тикетов → предупредить; автор на сервере меньше суток → попросить подробности.

Свои кнопки

Кнопки с вашей подписью, эмодзи (в том числе своими эмодзи сервера) и цветом. У каждой задаётся, кто может нажать: автор, персонал или все. Нажатие само по себе ничего не делает — действие задаёт правило «Нажата своя кнопка».

  • •В приветствии тикета — категория → «Кнопки» → «Свои кнопки». Видны вторым рядом, пока тикет открыт.
  • •В сообщении правила — действие «Написать в тикет». Например, «Вопрос решён? Да / Нет».
Шаблон «Кнопка «Вопрос решён»» создаёт сразу два правила: первое после ответа персонала пишет автору сообщение с кнопкой, второе по нажатию закрывает тикет.

Порядок и ограничения

  • •До 25 правил на сервер, до 10 действий в правиле и в каждой ветке.
  • •Правила на одно событие выполняются сверху вниз — порядок меняется стрелками в списке.
  • •Правило не запускает само себя. Цепочка «правило → событие → другое правило» обрывается на втором шаге — бесконечного цикла не бывает.
  • •Ошибка одного действия (например, нет прав выдать роль) не останавливает остальные.
  • •Если правило делает то же, что встроенная настройка сервера (автозакрытие, автоудаление, «закрывать, если автор ушёл», оценки, «первый ответивший берёт тикет»), редактор и шаблоны предупредят и дадут ссылку на настройку: при двух механизмах срабатывает тот, у кого срок короче. «Попросить оценку» не спросит второй раз, если оценка уже включена или поставлена.
  • •Регулярка в «Сообщение» — без учёта регистра и не больше одного повтора (*, +, {n,m}): она проверяется на каждое сообщение, и тяжёлый шаблон тормозил бы бота.
  • •Выключили или изменили правило — его отложенные «Подождать» и «Повторять» отменяются. Закрыли тикет, по которому правило шло открытым, — тоже.
  • •Предохранитель от спама и перегрузки: на сервер не больше 60 запусков правил и 120 действий в минуту, вебхуков — 20 в минуту; одно правило от одного человека на одном тикете (сообщение или кнопка) — не чаще раза в 5 секунд; канал переименовывается не чаще раза в 5 минут. Сверх лимита шаг пропускается, в журнале правила — «Предохранитель».
  • •Менять правила могут администраторы сервера и роли персонала с правом «изменение» на «Автоматизации» (Персонал → «Разделы веб-панели»); по умолчанию персонал видит правила без правки, адрес вебхука — только домен.
  • •Бан, кик, разбан, выдачу и снятие ролей и доступ к тикету в правилах добавляет, включает и меняет, когда они срабатывают (триггер, условия), только владелец сервера или администратор Lolka — «админ панели» из настроек этого не может: иначе через правило обходились бы права самой Lolka. Импорт настроек от них приносит такие правила выключенными. Шаги «В чёрный список» и «Убрать из чёрного списка» добавляют только администраторы — персонал, как и в разделе «Чёрный список», их не меняет.
  • •Кто может нажать свою кнопку, бот сверяет с настройками кнопки, а не с тем, что пришло от клиента.
  • •Правила входят в перенос настроек кодом (Настройки → «Перенос»). На другой сервер роли и каналы не переносятся, правила приезжают выключенными.