Реализация автоответчика бота по расписанию в мобильном приложении
Бот в Telegram молчит два часа — пользователи думают, что поддержка не работает. Автоответчик по расписанию решает это без единого живого оператора: «Рабочие часы — с 9 до 18 МСК. Ваш запрос получен, ответим до конца дня». Реализовать правильно — не так очевидно, как кажется.
Серверная логика расписания
Мобильное приложение здесь — интерфейс управления, а не движок автоответчика. Сам бот живёт на сервере и работает независимо от того, открыто ли приложение.
Расписание хранится в базе данных: временные диапазоны активности, часовой пояс, исключения (праздники). Серверный обработчик при получении сообщения через Telegram Bot API (getUpdates polling или Webhook) проверяет текущее время против расписания и решает — отвечать автоматически или передать оператору.
Критичный момент: часовые пояса. Если клиент в Новосибирске (UTC+7), а сервер в UTC, и расписание задано как «9:00–18:00» без явного timezone — получаем отправку ответов в 2 часа ночи по клиенту. В приложении при настройке расписания сохраняем timezone явно (Europe/Moscow, Asia/Novosibirsk) и все расчёты делаем через moment-timezone или date-fns-tz.
Мобильное приложение: управление расписанием
UI включает: визуальный редактор временных слотов (аналог Google Calendar's «рабочие часы»), редактор шаблонов автоответов, список исключений по датам, быстрый toggle «включить/выключить автоответчик сейчас».
На Flutter виджет выбора временного диапазона строим на TableCalendar + кастомный TimeRangePicker. Данные синхронизируются с сервером через REST API при каждом изменении.
Push-уведомления здесь используются для оповещения администратора: «Поступило сообщение вне рабочих часов» — чтобы при необходимости можно было ответить вручную. Это реализуется через FCM с priority: normal (не будит экран, появляется в шторке).
Шаблоны ответов с переменными
Гибкий автоответчик поддерживает переменные в шаблоне: {{user_name}}, {{current_time}}, {{next_working_day}}. Серверный рендерер подставляет значения перед отправкой.
Шаблоны редактируются прямо в приложении с превью. Пример шаблона:
Привет, {{user_name}}! 👋
Сейчас {{current_time}} — мы не работаем.
Ответим в ближайший рабочий день: {{next_working_day}} с 9:00 МСК.
Интеграция в готовый Telegram-бот и мобильное приложение занимает 1–2 недели. Разработка с нуля (бот + приложение управления) — 3–4 недели.







