Обработчики
Вводная
Команда в Телеграме это текст, который начинается с символа /, например /menu. Если такая команда встречается в тексте,
на неё можно нажать и ваш бот получит сигнал о том, что пользователь выбрал какую-то команду. Отправить команду в чат
пользователь может 3 способами:
- Набрать текст команды вручную
- Нажать на команду в тексте переписки, если есть
- Выбрать в Меню команд Telegram.
Важно понимать
Создание команд в BotFather (типа /start) лишь добавляет их в интерфейс Telegram. Чтобы бот выполнял какие-либо действия при нажатии на них, необходимо настроить логику внутри самого бота.
В EnotPro привязка команд к действиям происходит через Обработчики
Команды в botfather
Телеграм позволяет создавать до 100 команд публичных команд для бота через @botfather
Правила создания команд в botfather
- Команда должна начинаться с символа косой черты
«/» - Команда не может быть длиннее 32 символов
- Команды могут состоять из букв строчного латинского алфавита, цифр и подчёркивания.
- Команды не поддерживают заглавные буквы.
- Описание поддерживает заглавные, строчные буквы, а так же эмодзи.
Примеры правильных команд
- commandmode - ОпиСаНие
- co111andmode - описание
- command_mode - описание
Обработчики в EnotPro
Что такое обработчик?
Обработчик — это правило, которое связывает событие (например, сообщение от пользователя, вступление в чат, отправка фото) с действиями, которые бот должен выполнить.
Простыми словами: обработчик отвечает на вопрос «Когда?» и «Что делать?»
| Компонент | Что означает | Пример |
|---|---|---|
| Условие | Событие, на которое реагируем | Пользователь написал /start |
| Реакции | Действия, которые выполняются | Отправить приветствие, сохранить данные в переменную |
Зачем нужны обработчики?
Без обработчиков бот ничего не делает. Он просто получает события от Telegram, но не знает, как на них реагировать.
Обработчики позволяют:
- Отвечать на команды (/start, /help)
- Реагировать на любые текстовые сообщения
- Обрабатывать медиа (фото, видео, стикеры)
- Отслеживать вступление и выход участников
- Ловить системные события (смена названия чата, закрепление сообщения)
- Выполнять действия по расписанию или через регулярные выражения
Рассмотрим все более детально.
Типы
| Тип | Описание |
|---|---|
| Команды | Текстовые команды отправляемые пользователями в чате |
| Вход/выход | События входе или выходе пользователя |
| Системные сообщения | Системные сообщения отправляемые в чат |
| Вложения | Любые типы медиа отправляемые в чатах |
Как устроен обработчик внутри?
В EnotPro обработчик — это триггер особого типа.
Триггер (в общем понимании) — это контейнер, в котором собраны реакции. У обычного триггера условие запуска задаётся отдельно. У обработчика же условие встроено в его тип и настройки.
Схематично:
Пользователь отправляет сообщение
↓
Бот получает событие (update)
↓
Проверяет все обработчики в порядке приоритета
↓
Если условие обработчика совпало → выполняет реакции
↓
Если включено «Продолжить» → идёт к следующему обработчику
↓
Если не включено → останавливается
Создание обработчика (пошагово)
- Перейдите в раздел «Обработчики» в меню вашего бота.
- Нажмите кнопку «Добавить».
- Выберите тип обработчика (команда, текст, медиа и т.д.).
- Укажите условие (например, текст /start или регулярное выражение).
- При необходимости настройте приоритет и опцию «Продолжить».
- Откройте созданный обработчик и добавьте реакции (действия).
Общие настройки обработчиков
У всех типов обработчиков есть единый набор настроек, которые определяют порядок, область действия и логику работы.
Приоритет
Определяет очерёдность проверки обработчиков.
| Значение | Что означает |
|---|---|
| Положительное (100, 50) | Проверяются раньше (чем больше число, тем выше приоритет) |
| Ноль (0) (по умолчанию) | Проверяются потом, в порядке создания |
| Отрицательное (-10, -50) | Проверяются в самую последнюю очередь |
Зачем это нужно?
Представьте, что у вас есть:
- Обработчик на /start — нужно выполнить всегда
- Обработчик на любой текст — отладочный, для сбора статистики
Вы ставите /start с приоритетом 100, а текстовый обработчик — с приоритетом 0. Тогда бот сначала проверит команду /start, и если она совпала — выполнит её. Текстовый обработчик не будет мешать.
Важно: Если у нескольких обработчиков одинаковый приоритет, они проверяются в порядке создания (от старых к новым).
Продолжить
Определяет, останавливается ли бот после выполнения обработчика или идёт дальше.
| Режим | Поведение |
|---|---|
| Выключено (по умолчанию) | После выполнения этого обработчика бот останавливается. Следующие обработчики не проверяются |
| Включено | Бот выполняет этот обработчик и продолжает проверять следующие (по приоритету) |
Область действия (где работает)
| Настройка | Что делает |
|---|---|
| Задействовать в привате | Обработчик работает в личных чатах с ботом |
| Задействовать в чате | Обработчик работает в группах и супергруппах |
| Задействовать в каналах | Обработчик работает в каналах (подходит не для всех типов) |
Игнорировать регистр
| Режим | Поведение |
|---|---|
| Выключено (по умолчанию) | «Привет» и «привет» — разные сообщения |
| Включено | «Привет», «ПРИВЕТ», «прИвЕт» — одинаковы |
Работает только для текстовых условий (команда, текст). Для регулярных выражений лучше управлять регистром внутри самого выражения (флаг (?i)).
Описание
Поле для свободного текста. Не влияет на логику, но помогает вам (или другим администраторам) понимать, для чего создан обработчик.