QNext. Глобальный, Базовый и Общий триггеры
В ⚙️Настройках бота в разделе Триггеры есть разделы
В этой статье поговорим об их назначениях и различиях. Для простоты понимания, начнем с Общего триггера, затем обсудим Базовый а после попытаемся понять зачем нужен Глобальный. Погнали...
Общий Триггер
Общий триггер необходим в тех случаях когда вам необходимо выполнить одни и те же реакции в нескольких местах.
Рассмотрим пример, нам необходимо выполнить некий набор реакций, штук 5 например, в момент когда пользователь отправляет команду /my_command и когда пользователь нажимает на кнопку в меню. Вы можете в тригере команды /my_command, создать эти 5 реакций, а затем в тригере меню создать еще такие же 5. Вы конечно можете Копировать и Вставлять чтобы быстро создать копии, но все равно это двойная работа. А если надо будет внести изменения в в этот набор из 5 реакций, тогда придется править в двух местах? А если таких место будет больше?
В этом случае на помощь приходят 🔗Общие Триггеры. Вы создаете Общий триггер, с именем например 🔗ОбработкаЮзера, создаете внутри этого общего триггера необходимые 5 реакций. А затем в реакции /my_command и в тригере меню выполняете всего одну реакцию ⚡️runTrigger, и указываете какой общий триггер выполнить. При выполнении реакции ⚡️runTrigger, будут выполнены все реакции созданные внутри указанного общего триггера.
Т.е. набор из 5 реакций вы создаете в одном централизованном месте, а затем где необходимо выполнить все эти реакции, просто указываете ссылку на общий триггер.
Окей, а что если мы хотим перед каждый триггером выполнять одно и тоже действие, например проверить не забанен ли пользователь. Конечно можно создать Общий триггер и вставлять его в каждый создаваемый триггер. Это не очень удобно, и к тому же есть риск забыть где то добавить его. В этом случае нам поможет 🔗Базовый Триггер.
Базовый Триггер
Базовый Триггер выполняется всегда перед(⚠️) выполнением любого другого триггера (общего или обычного). Например если юзер запускает команду /my_command, тогда будут выполнены триггеры в следующем порядке:
- Базовый Триггер
- Триггер команды
/my_command
Другой пример, допустим вы заполняете форму, в этой форме последним является поле select с кнопками. Т.е. при нажатии на кнопку последнего поля, наша форма завершается. В этом случае будут выполнение следующие тригеры и в точно таком порядке:
- Базовый Триггер
- Триггеры Кнопки
- Триггеры Поля
- Триггер Финиш Формы
Т.е. 🔗Базовый триггер выполняется 1 раз самым первым, при активации любого действия.

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