Разработка и AI

Telegram-бот выдачи топлива

Тот же рабочий процесс, что и в приложении для планшетов — но в интерфейсе Telegram

Бот работает прямо сейчас — можно открыть и пройти полный цикл смены. PIN для входа: 1234.
Что умеет

Полный цикл работы водителя топливозаправщика: вход по PIN, открытие смены с фиксацией остатка, выдача топлива с поиском техники по госномеру, приёмка, закрытие смены со сводкой. Остаток в цистерне пересчитывается после каждой операции.

Выдать топливо
поиск ТС по номеру
объём
получатель
подтверждение
На каждом шаге — ветвление: неверный формат числа, объём больше остатка в цистерне, по запросу ничего не найдено, смену закрыли, пока водитель вводил данные.
Как устроено
01
Telegram не помнит, где находится пользователь
Каждое сообщение приходит само по себе, поэтому шаг диалога хранится явно — конечным автоматом. Одно и то же «120» означает остаток при старте смены, объём при выдаче или объём при приёмке, в зависимости от текущего шага.
02
Кнопки и текст — разные источники ввода
Нажатия inline-кнопок приходят отдельным типом события и отвечают за навигацию, текстовые сообщения дают данные. Кнопка ограничена 64 байтами полезной нагрузки, поэтому в ней едет только идентификатор, а введённые значения хранятся в состоянии диалога.
03
Бизнес-правила отделены от мессенджера
Проверки объёма, пересчёт остатка и правила смены не знают про Telegram вообще. За счёт этого они покрыты обычными тестами, а сам бот можно перенести на другой интерфейс, не переписывая логику.
Технологии
Node.js · TypeScript
grammY
SQLite
Inline-клавиатуры
Конечный автомат
Автотесты