# Триггеры

Триггеры предоставляют самый мощный функционал в боте. Вы можете настроить любую реакцию на любое сообщение пользователей.

Желать доброго утра админам (или любым конкретным пользователям), по утрам, если они зайдут в беседу? – Не вопрос.

При отправке пользователями gif’ок вежливо попросить её удалить в течение минуты, и если он это не сделает – удалить гифку и выдать предупреждение, а если сделает – написать «спасибо за понимание»? – Пожалуйста.

Отправлять в чат «Хозяин, вас звали!» с ссылкой на ваш профиль, когда вас упоминают в группе? – Да, и такое возможно.

Основная функция триггера – определенное УСЛОВИЕ, и при его выполнении, происходит определенное ДЕЙСТВИЕ, которое вы задаете сами.

# Тарифы на триггеры

Данная таблица рассказывает о различиях тарифов на триггеры. Лимита на группы условий/группы действий нет – вы можете создать 6 групп действий, в каждой из которой будет по одному действию, или 1 группу действий с шестью действиями для тарифа «Starter».

Если вы выйдете за лимиты триггера или истечет срок тарифа – (появится красная надпись, уведомляющая о том, что превышено количество триггеров или действий в них) триггеры будут работать, с ограничениями. Например, если вы создали 4 действия без тарифа, работать будут три. Также и количество триггеров – если будет больше, чем возможно, остальные просто не будут работать.

# Навигация по триггерам

Заходим в раздел «Триггеры чата», нажимаем на «+ Добавить новый»

Далее, выйдет окно с условиями создания триггера:

Задаем название триггеру.

Подсказка

Старайтесь назвать триггер так, чтобы его было легко найти и редактировать среди других.

# Тип выполнения триггера

«Выполнить все действие» — это значит, что за определенное условие, будет выполнены все указанные и заданные вами далее действия. (В том случае, если вы укажете несколько действий)

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

«Условия» — это определенные сообщения, слова, смайлы, после совершения которых применяются определенные действия.

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

# Отработка триггеров

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

Чтобы триггеры работали подряд по порядку необходимо включить тумблер «Продолжить выполнение цепи триггера по окончании текущего триггера» в расширенных настройках, доступных с тарифа «Advanced»

Если тумблер выключен, то сработает только один триггер, тот, который с меньшим номерком.

# Типы условий

Доступно 200 вариантов условий для состоявления треггеров.

Создаем условия с помощью «+», открывается отдельное окно «Группа условий» и снизу отдельная кнопка «+». Нажимая на отдельную кнопку, создается еще одна группа условий с отдельными функциями.

Подсказка

В инструменте «Действия» функционал такой же.

# Условия по сообщениям

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

# Полное совпадение сообщения

Триггер сработает при полном совпадении сообщения с указанным Вами значением в условии. То есть, если укажете в условии «Привет», условие выполнится только при сообщении «Привет». Если будет «Привет. Знаешь…», или «Привет.», или «Привет)» условие НЕ выполнится. *Исключение в том случае, если включить фильтр «Не учитавать символы» ниже, тогда последние два варианта бот пропустит.

# Сообщение начинается с

Триггер сработает, если сообщение пользователя будет начинаться со строк (слов/выражений), указанных вами в значениях условия. Пример: в значених «Ты». Условие сработает на сообщения: «Ты – самый вредный!», «Тыквы полезные!», «Ты123абв»

# Сообщение заканчивается на

Триггер сработает, если сообщение пользователя будет заканчиваться строками (словами/выражениями), указанными вами в значениях условия, иначе триггер не сработает. Аналогично: если в условии «ейка», оно сработает на «лейка», «абвгдейка».

# Сообщение содержит

Триггер сработает, если в сообщении будет присутствовать хоть одна из строк (слов/выражений), указанных в значениях условий. Укажете «лето» - сработает на «Какое лето жаркое!», «В кассе билетов нет!»

# Условия по параметрам сообщения

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

# Тип сообщения

Вызов триггера через параметр тип (или формат) посылаемого сообщения: фото, аудио, стикер и т.д. Всего доступно 14 типов сообщений:

  • Аудио
  • Документ
  • Стикер
  • Фото
  • Фотофайл
  • Видео
  • Видеофайл
  • Анимация
  • Контакт
  • Локация
  • Войс
  • Игра
  • Видеозаметка
  • Опрос

# Длина сообщения

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

  • Длина сообщения меньше или равна
  • Длина сообщения больше или равна
  • Длина сообщения того, кому ответили меньше или равна
  • Длина сообщения того, кому ответили больше или равна

# Условия по параметрам пользователя

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

# Длина юзернейма

Вызов триггера через параметр длина юзернейма. Всего доступно 2 типа параметра по длине юзернейма:

  • Длина юзернейма меньше, чем
  • Длина юзернейма больше, чем

# Длина имени и фамилии

Вызов триггера через параметр длина имени и фамилии. Всего доступно 2 типа параметра по длине имени и фамилии:

  • Длина имени и фамилии меньше, чем
  • Длина имени и фамилии больше, чем

# Условия по имени пользователя или username

Триггер сработает только на конктерные имя и username, указанные в значениях условия.

# Условия по рангу пользователя

Условия для вызова триггера, которые связаны с системой рангов.

Ранг – это текущий статус участника в чате. Ранги даются за выполнение определенных действий, которые устанавливает администратор чата. Всего доступно 3 типа параметра по значению ранга участника:

  • Ранг пользователя соответствует
  • Ранг пользователя ниже
  • Ранг пользователя выше

# Прочие условия

# Регулярное выражение

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

Выполняет поиск на основе регулярного выражения языка Java. Тестер и краткий справочник по регулярным выражениям доступен по нажатию в верхней панели кнопки «Помощь» - «Тестирование регулярных выражений». Также есть небольшая статья, посвященная регулярным выражениям в инструкции (opens new window)

# Тип ответа

Любое – условие сработает при любом сообщении; Все реплаи – условие сработает только на реплаи (ответы); Реплаи к боту – условие сработает только на ответы ботов; Реплаи к пользователю – условие сработает только на ответы пользователей, кроме администраторов; Реплаи к админу – условие сработает только на ответы администраторов;

Предупреждение

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

Реплаи к @ChatKeeperBot – условие сработает на ответы к сообщениям от @ChatKeeperBot; Не реплай – условие сработает на сообщения, которые были отправлены не реплаем (ответом); Первое сообщение пользователя – условие сработает при первом сообщении нового участника.

# Модификаторы для обработки условия

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

Рассмотрим подробнее:

  1. Не учитывать пробелы в начале и в конце строки - вне зависимости от того, будут или нет пробелы в начале или в конце строки в сообщении пользователя, триггер сработает.
  2. Не учитывать пробелы и переносы строк - вне зависимости от того, как и где стоят пробелы и переносы в сообщении пользователя, триггер сработает. Например, с условием «Сообщение содержит», при включенном фильтре, если в значениях указать «громила», триггер сработает на: «Полный погроми ладно – потом уберу»
  3. Не учитывать все пробелы - условие выполнится вне зависимости от того, как и где стоят пробелы в сообщении пользователя. Например, с условием «Сообщение содержит», при включенном фильтре, если в значениях указать «перламутр», сработает на «Спер лам утром», но не будет работать с переносами, как в пункте (2)
  4. Не учитывать символы - условие сработает, даже если будут использованы символы, которые вы не указали в условии. Укажете в значениях «свет» - триггер сработает на «с()вет»
  5. Не учитывать цифры - триггер сработает даже если будут использованы цифры, которые вы не указали в условии. В значениях «пора» - сработает на «по95ра»
  6. Не учитывать регистр - триггер сработает вне зависимости от регистра (большие и маленькие буквы будут восприниматься одинаково). Пример: «Привет» в значениях сработает на «привет», «ПРИВЕТ», «пРиВеТ», и так далее.

# Инструмент «Инициатор триггера»

Инициатор триггера – участник группы, на которого будет срабатывать триггер.

  • Кто угодно – условие сработает на всех участников группы
  • Администраторы – условие сработает на всех администраторов, включая создателя
  • Пользователи – условие сработает на всех пользователей, кроме администраторов
  • Создатель – условие сработает только на создателя

Предупреждение

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

# Инструмент «Инвертирование»

Инвертирование меняет все условия на обратные. Если условие должно было сработать на слово «Привет» - условие будет работать на все сообщения, в которых нет этого слова. Если стоит «Реплаи к @ChatKeeperBot» – условие будет срабатывать на все сообщения, которые не являются реплаями (ответами) к @ChatKeeperBot. Не меняются при инвертировании только фильтры условий, инициатор «Кто угодно» и тип сообщения «Любое».

# Действия триггеров

  • Отправить сообщение - При выполнении условия, будет отправлено сообщение, текст которого вы ввели в поле ввода текста, после выбора действия;

  • Отправить личным сообщением - Бот отправит текст в личные сообщения пользователю. Список получателей такого сообщения находится после выбора действия – туда можно указать @username (можно со знаком и без, в любом регистре) или ID пользователя. Чтобы сообщение отправилось, пользователю необходимо нажать на кнопку start в личных сообщениях с ботом. *Не забывайте, что бот первым писать не может;

  • Удалить пользователя из чата с возможностью вернуться - Пользователь будет удален из чата, но он сможет вернуться при использовании команды /kick;

  • Удалить пользователя из чата на время - Пользователь будет удален из чата на заданный вами период времени, по истечении этого времени, у пользователя есть возможность вернуться в чат;

  • Пользователь не сможет писать - Пользователь не сможет писать в течении заданного вами периода времени, по истечении этого периода, пользователь сможет писать, использовав команду /mute;

  • Разрешить пользователю вернуться в чат - Пользователь может вернуться в чат, если до этого он был исключен, для возврата в чат используйте команду /unban;

  • Разрешить пользователю писать - Пользователь сможет писать сообщения, если до этого он был заблокирован, используйте команду /unmute;

  • Удалить сообщение - Сообщение, на которое сработал триггер будет удалено;

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

  • Изменить количество очков пользователя - Действие дает возможность изменить количество очков участника. После выбора действия будет форма «Количество», в которой вы зададите прибавление или отнятие очков;

  • Добавить или удалить предупреждение у пользователя - Возможность добавить пользователю определённое количество предупреждений, работает по принципу команды /warn;

  • Добавить или удалить предупреждение в триггере - В данном триггере можно добавить или отнять количество предупреждений. *После заданного администратором количества предупреждений, пользователь попадает в блок;

  • Отправить результат формы в чат - (действие доступно на тарифах Advance и Ultimate) После того, как участник заполнил форму, результат формы отправится в чат и будет доступен для просмотра всем пользователям. После выбора действия, в поле ввода текста можно будет написать содержимое формы;

  • Отправить результат формы личным сообщением - (действие доступно на тарифах Advance и Ultimate) После того, как участник заполнил форму, результат формы отправится в личные сообщения указанным пользователям. Список получателей результата указывается после выбора действия в форму «Список пользователей, которым придет результат формы». Указывается юзернейм без знака @ в малом регистре, например «username» или ID пользователя. Чтобы сообщение отправилось, пользователю необходимо нажать кнопку start в личных сообщениях с ботом. Таким образом, результат формы будет доступен только определённым пользователям. Форму можно задать в инструменте «Открыть расширенные настройки» под формой названия триггера.

# Триггер с регулярным выражением

Триггер с регулярным выражением является самым простым по настройке и не требует ручного добавления длинной цепочки условий.

В качестве условия выбирается всего одна категория «Прочее - Регулярные выражения».

Description

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

Бот может обрабатывать:

  • сообщение пользователя
  • сообщение, на которое ответили
  • имя пользователя
  • имя ответившего пользователя
  • логин пользователя
  • логин ответившего пользователя

В качестве примера, укажем область поиска «Сообщение пользователя».

Description

В поле «Значения условия» вы вставляете готовый шаблон регулярного выражения. Все готовые шаблоны представлены здесь ниже.

Например, возьмем шаблон, с помощью которого бот будет реагировать на сообщения полностью написанные на английском языке:

^[A-Za-z\d\s.,!?]+$ – поиск текста, полностью состоящего из латинских букв, с учетом пробелов, любых цифр и определенных символов «.,!?»

Description

Для триггера с регулярным выражением так же допустимо использование модификаторов. С помощью модификаторов бот не будет учитывать засоряющие поиск дополнительные условия. Например, можно включить «Не учитывать emoji». Тогда бот будет игнорировать любые emoji в любом месте сообщении пользователя и обрабатывать текст, словно их в нем нет.

Настройка «Инвертировать условие» всегда по умолчанию выключена. Это означает, что бот будет реагировать, если найдено совпадение с условием в области его поиска. Если включить «Инвертировать условие», триггер будет работать наоборот и бот будет реагировать на все, что не соответствует заданному условию.

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

Description

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

Description

Пример работы триггеры с регулярным выражением по поиску и реакции на сообщения пользователей, полностью написанным на английском языке, с учетом пробелов, любых цифр и определенных символов «.,!?». Без учета emoji (встроенный модификатор)

Description

# Поиск номера телефона

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

  • уберечь группу от спама и мошенничества
  • обозначить обязательные условия для публикации. Например: объявлении о вакансии с указанием телефона для связи.

((8|+7)[- ]?)?((?\d{3})?[- ]?)?[\d- ]{7,10} – поиск в тексте городского или мобильного номера телефона, который может содержать скобки « ()», черточки «-», пробелы, код города «8» или «+7» и состоять от 7 до 10 цифр, без учета кода города.

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

Description

(8|+7)\d{10} – поиск в тексте номера мобильного телефона, который может содержать код города «8» или «+7». Номер может состоять только из 10 цифр, без учета кода города.

Это регулярное выражение является строгим. Оно подходит для поиска всего 2х форматов мобильного номера телефона. Оно не подходит для борьбы со спамом, но его можно можно использовать, если у вас строгие требования к публикациям в группе.

Description

(8|+7)(-|()?\d{3}(-|))?\d{3}-?\d{2}-?\d{2} – поиск в тексте номера мобильного телефона, который может содержать скобки « ()», черточки «-», код города «8» или «+7». Номер может состоять только из 10 цифр, без учета кода города.

Description

# Поиск номера банковских карт

Триггеры с регулярным выражения по поиску различных номеров банковских карт относятся к тем же категориям: предотвращение спама и проверки объявлений группы.

Предупреждение

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

(2|3|4|5|6)\d{3}(\ |-)?\d{4}(\ |-)?\d{4}(\ |-)?\d{4} – поиск в тексте номеров банковских карт с типами платежных систем Visa, MasterCard, Maestro, American Express, МИР. Номер карты может содержать пробелы, черточки «-» и состоять из 16 цифр.

Регулярное выражение является универсальным, подходит для поиска всех популярных форматов написания номеров банковских карт и учитывает большинство платежных систем.

Description

(2|3|4|5|6)\d{15} – поиск в тексте номеров банковских карт с типами платежных систем Visa, MasterCard, Maestro, American Express, МИР. Номер карты может состоять из 16 цифр.

Строгое регулярное выражение и с ограниченным типом проверки написания номера. Пробелы и черточки не учитываются. Реагирует только на слитное написание номера карты.

Description

2\d{3}(\ |-)?\d{4}(\ |-)?\d{4}(\ |-)?\d{4} – поиск в тексте номеров банковских карт платежной системы МИР. Номер карты может содержать пробелы, черточки «-» и состоять из 16 цифр.

Регулярное выражение для поиска карт всего 1 типа платежной системы. Можно использовать для русскоязычных чатов.

Description

3\d{3}(\ |-)?\d{4}(\ |-)?\d{4}(\ |-)?\d{4} – поиск в тексте номеров банковских карт платежной системы American Express . Номер карты может содержать пробелы, черточки «-» и состоять из 16 цифр.

Description

4\d{3}(\ |-)?\d{4}(\ |-)?\d{4}(\ |-)?\d{4} – поиск в тексте номеров банковских карт платежной системы VISA. Номер карты может содержать пробелы, черточки «-» и состоять из 16 цифр.

Description

(5|6)\d{3}(\ |-)?\d{4}(\ |-)?\d{4}(\ |-)?\d{4} – поиск в тексте номеров банковских карт платежной системы MasterCard или Maestro. Номер карты может содержать пробелы, черточки «-» и состоять из 16 цифр.

Description

# Поиск языкового знака

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

[A-Za-z] – поиск в тексте хотя бы одного любого латинского символа в диапазоне A-Z (прописные) или a-z (сточные).

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

Description

[A-Za-z]+ – поиск в тексте хотя бы одного любого английского слова, состоящего из латинских символов в диапазоне A-Z (прописные) и a-z (сточные). Слово может состоять из прописных и строчных букв или только из прописных или строчных букв.

Триггер с таким регулярным выражением будет допускать содержание в тексте 1 латинского символа, но реагировать на слово, полностью состоящее из них. Это мягкое регулярное выражение, которое прощает опечатки в тексте ( прbвет), но реагирует на английские слова.

Description

[^A-Za-z] – поиск в тексте хотя бы одного любого символа, кроме латинских в диапазоне A-Z (прописные) или a-z (сточные).

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

Description

[А-Яа-я] – поиск в тексте хотя бы одного любого символа на кириллице в диапазоне А-Я (прописные) или а-я (сточные).

Регулярное выражение будет искать в тексте наличие одного любого прописного или строчного символа кириллицы. Это может быть абсолютно любая буква из алфавита в любом месте текста.

Description

[^А-Яа-я] – поиск в тексте хотя бы одного любого символа, кроме кириллицы в диапазоне А-Я (прописные) или а-я (сточные).

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

Description