Автоматизации
Правило состоит из трёх частей: когда срабатывает, при каких условиях и что сделать. Бот выполняет его сам: напоминает автору, зовёт персонал, закрывает тикет по кнопке, выдаёт роль. Правила настраиваются в веб-панели, раздел «Автоматизации».
Редактор
Слева — палитра всех блоков с поиском и группами по цвету: «Когда», «Если», сообщения, тикет, участник, интеграции, время и логика. Блок добавляется кликом (встаёт после выделенного шага) или перетаскиванием на любой «+». В центре правило в одном из двух видов: «Шаги» — карточки сверху вниз, «Схема» — узлы на холсте с ветками «да / иначе» (колесо двигает холст, 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 раз, пока тикет ждёт автора: «вопрос ещё актуален?» → закрыть. Автор ответил — напоминания прекращаются, тикет не закрывается.
Вебхук
Формат «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. Импорт настроек от них приносит такие правила выключенными. Шаги «В чёрный список» и «Убрать из чёрного списка» добавляют только администраторы — персонал, как и в разделе «Чёрный список», их не меняет.
- •Кто может нажать свою кнопку, бот сверяет с настройками кнопки, а не с тем, что пришло от клиента.
- •Правила входят в перенос настроек кодом (Настройки → «Перенос»). На другой сервер роли и каналы не переносятся, правила приезжают выключенными.
