QNext. Глобальный, Базовый и Общий триггеры

QNext. Глобальный, Базовый и Общий триггеры


В ⚙️Настройках бота в разделе Триггеры есть разделы

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

Общий Триггер

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

Рассмотрим пример, нам необходимо выполнить некий набор реакций, штук 5 например, в момент когда пользователь отправляет команду /my_command и когда пользователь нажимает на кнопку в меню. Вы можете в тригере команды /my_command, создать эти 5 реакций, а затем в тригере меню создать еще такие же 5. Вы конечно можете Копировать и Вставлять чтобы быстро создать копии, но все равно это двойная работа. А если надо будет внести изменения в в этот набор из 5 реакций, тогда придется править в двух местах? А если таких место будет больше?

В этом случае на помощь приходят 🔗Общие Триггеры. Вы создаете Общий триггер, с именем например 🔗ОбработкаЮзера, создаете внутри этого общего триггера необходимые 5 реакций. А затем в реакции /my_command и в тригере меню выполняете всего одну реакцию ⚡️runTrigger, и указываете какой общий триггер выполнить. При выполнении реакции ⚡️runTrigger, будут выполнены все реакции созданные внутри указанного общего триггера.

Т.е. набор из 5 реакций вы создаете в одном централизованном месте, а затем где необходимо выполнить все эти реакции, просто указываете ссылку на общий триггер.

Окей, а что если мы хотим перед каждый триггером выполнять одно и тоже действие, например проверить не забанен ли пользователь. Конечно можно создать Общий триггер и вставлять его в каждый создаваемый триггер. Это не очень удобно, и к тому же есть риск забыть где то добавить его. В этом случае нам поможет 🔗Базовый Триггер.

Базовый Триггер

Базовый Триггер выполняется всегда перед(⚠️) выполнением любого другого триггера (общего или обычного). Например если юзер запускает команду /my_command, тогда будут выполнены триггеры в следующем порядке:

  1. Базовый Триггер
  2. Триггер команды /my_command

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

  1. Базовый Триггер
  2. Триггеры Кнопки
  3. Триггеры Поля
  4. Триггер Финиш Формы

Т.е. 🔗Базовый триггер выполняется 1 раз самым первым, при активации любого действия.

Погодите ка, это же 🔗Глобальный Триггер... ?

Кто давно пользуется конструктором, заметят что описанное выше поведение относится к текущему 🔗Глобальном Триггеру. Это действительно так, просто тот триггер который до сих пор назывался Глобальным был просто переименован в Базовый, но его механика не изменилась, и все существующие на момент обновления Глобальные триггеры работают как и прежде, просто теперь они называются не Глобальные а Базовые. Почему так было сделано? Да потому что этот триггер по сути своей является базовым для любого другого триггера, и если нет выполнения другого триггера, тогда не будет выполнятся и Базовый триггер.

А теперь давайте разберем настоящий 🔗Глобальный триггер.

Глобальный Триггер

Итак, мы выяснили что Общий триггер выполняется только с реакцией ⚡️runTrigger, которую вы сами создаете в нужный момент, а Базовый триггер выполнения перед выполнением любого другого триггера. А что если я хочу выполнить какие любо действия даже если нет ни какого другого триггера? Простой пример: у вас не создано ни каких текстовых команд, и создавать их нет необходимости, но при этом необходимо при любом действии со стороны юзера слать запрос в систему сбора статистики, чтобы понимать что юзеры что то делают с вашим ботом. Т.к. нет ни каких тестовых команд, поэтому не будет выполнен ни какой Триггер команды, и следственно не будет выполнен и Базовый триггер. В этом случае мы можете воспользоваться 🔗Глобальным триггером. Глобальный выполняется всегда, при любом активации любого действия не зависимо от наличия или отсутствия каких любо других триггеров.

Существуют два типа 🔗Глобальных Триггеров

  • Глобальный Триггер До
  • Глобальный Триггер После

Первый выполняется всегда первым, до выполнения любого другого триггера. А второй соответственно после выполнения всех остальных триггеров.

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

  1. Глобальный Триггер До
  2. Базовый Триггер
  3. Триггер Команды /my_command
  4. Глобальный Триггер После

Обратите внимание, Глобальные триггеры будет выполнены не только в ответ на действие со стороны пользователя, но при поступлении webhook-запросов, или например при получении события об оплате от платежной системы... в общем выполняется он всегда.


Всем добра 💆‍♀️


QNext. Документация



Report Page