Назад в архив
IV. Клиентские проекты и логистические платформыдополнительноучастникклиент анонимизирован

Food Delivery Telegram Bot — sister brand

Продакшн Telegram-бот для заказа еды сети доставки «Restaurant chain (UZ) / Restaurant chain (UZ)» (Узбекистан): меню, корзина, доставка/самовывоз, лояльность, рассылки.

Статус
поддерживается
Период
2021-12-08 → 2026-05-18
AI-сессий
Стек
Языки
JavaScript
Фреймворки · Инфра
Telegraf 4FastifyBulltelegraf-i18n
§01

Обзор

  • Что это: Мультиязычный (ru/uz/en) Telegram-бот для e-commerce ресторанной сети. Пользователь оформляет заказ (доставка или самовывоз), выбирает филиал, проходит OTP-авторизацию, смотрит свои заказы, получает штрихкод кэшбэка, оставляет отзывы. Бот — это фронтенд к внешнему Laravel API (api.restaurant-chain.uz); он не хранит каталог сам, а проксирует и оркестрирует запросы.
  • Тип / статус / роль: bot / maintained / contributor (репозиторий принадлежит ShahzodSalimsakov; пользователь — один из 2–3 основных разработчиков, ~50% коммитов).
  • Активный период: первый коммит 2021-12-08, последний 2026-05-18. Долгоживущая рабочая лошадка: правки приходят волнами под бизнес-изменения (стоимость доставки, типы оплаты, включение/отключение кэшбэка).
§02

Стек

  • Языки: JavaScript (Node.js, CommonJS). TypeScript только в devDependencies — по сути не используется (исходники — .js).
  • Фреймворки/библиотеки: Telegraf 4 (Scenes / WizardScene + Composer как машина состояний диалога), telegraf-i18n (ru/uz/en), Fastify 3 + fastify-telegraf (webhook), Bull 4 + @bull-board (очереди и админ-UI), ioredis, luxon (даты/таймзоны), hashids (обфускация tg_id), bwip-js / barcode (генерация штрихкодов), axios, lodash.
  • Инфра/деплой: PM2 (pm2.config.js, приложение les_bot), webhook https://newbot.restaurant-chain.uz, Sentry (@sentry/node), сервер Contabo (vmi849112.contaboserver.net / choparpizza.uz). Dev — polling + локальная сессия.
  • Данные: MongoDB (telegraf-session-mongodb для сессий, коллекция event_systems для трекинга отправленных сообщений), Redis (Bull-очередь рассылок + pub/sub).
  • Заметный тулинг: agenda (планировщик, отключён в коде), node-cron / sfn-scheduler / cron-converter (частично закомментированы — следы итераций над планированием рассылок).
§03

Что реализовано

Commit-месседжи пользователя в основном мусорные («asd», «asdf», «dsds», «sdsd»), поэтому вехи восстановлены по диффам и коду, а не по тексту коммитов.

  • Флоу заказа (доставка/самовывоз)controllers/startOrder: WizardScene со шагами адрес → дом → подъезд, геокодинг через API, поиск ближайшего терминала, выбор филиала.
  • Расчёт часов работы филиалаstartOrder/index.js (luxon), включая ночные смены и логику будни/выходные.
  • Меню и корзинаcontrollers/menu/index.js (~79 КБ, ядро бота): пагинация категорий, корзина, OTP-авторизация, минимальная сумма заказа.
  • Кэшбэк со штрихкодомcontrollers/cashback: генерация code128 (bwip-js) из номера телефона, PNG отправляется в чат.
  • Массовые рассылкиbot.js + util/queue.js: Bull-очередь с повторяемыми cron-джобами, репортинг прогресса обратно в Laravel API, отмена активных джоб через Redis pub/sub.
  • Бизнес-обновления: цены/веса доставки (d653fcd, f3d5a1b, 02eef03), типы оплаты (85824d1, 4d1d9f5 removed payment type uzcard, 03fbbb5 turn off payment links), включение/отключение кэшбэка (1373664 cashback disabled, 232b9b9), языки/локали.
  • Последняя веха (`b4f848f`, 2026-05-18): чистый рефакторинг — рантайм-фетч /api/configs/public (с base64-декодом) заменён на статический util/config.js из env. Единственный коммит с человекочитаемым описанием и Co-Authored-By: Claude Opus 4.7.
  • Объём: 257 коммитов всего, 129 от пользователя (Davron Yuldashev yul.davron.93@gmail.com, алиасы Davron/Davr/Dave93), за ~4.5 года. Со-авторы: shahaa (Shahzod Salimsakov, владелец, 89 коммитов), root (деплой).
§04

Технические челленджи

  • Кастомная Bull-очередь с межпроцессной отменой джоб (util/queue.js): ExtendedQueue extends Queue + ExtendedJob, трекинг промисов активных джоб, отмена через Redis pub/sub (getInternalEventEmitter) с прямой ссылкой на GitHub-issue Bull (#1056/#1067) как обоснование обхода ограничения sandboxed-процессов. → Демонстрирует понимание распределённой обработки задач и инфраструктурных воркэраундов на уровне очереди. Самый нетривиальный кусок кода в репозитории.
  • Рассылка с репортингом backpressure (bot.js sendQueue.process): последовательная доставка по списку tg_id, проверка состояния джобы на каждом шаге (отмена на лету), POST прогресса в API каждые 50 сообщений, удаление отправленных сообщений по событию removed через коллекцию event_systems. → Реальная работа с rate limit'ами Telegram и состоянием рассылки.
  • Логика часов работы филиала через полночь (startOrder/index.js:169–234, luxon): текущее время сравнивается с открытием/закрытием, коррекция дня при close.hour < open.hour (ночные смены), отдельные ветки для будней/выходных. → Аккуратная обработка граничных случаев дат/таймзон (Asia/Tashkent).
  • OTP-авторизация (menu/index.js): hashids-кодирование tg_id, сборка bearer-токена (base64 OTP_TOKEN + случайная соль → hex), повторная отправка кода. → Кастомная схема подписи для запросов к бэкенду.
  • Рефакторинг `b4f848f` (util/config.js): parsePositiveInt, сохраняющий историческое поведение (fallback 0 при NaN, явно закомментировано). → Редкий пример чистого, осознанного кода в проекте.
§05

AI-разработка

  • Найдено сессий: 0 (нет локальной директории сессий Claude Code для этого проекта).
  • Что делалось с AI: косвенный след — последний коммит b4f848f помечен Co-Authored-By: Claude Opus 4.7 (1M context). Это единственный чистый, задокументированный коммит в репозитории (рефакторинг конфига), что контрастирует с остальной историей и указывает на разовое использование AI для чистки легаси-кода.
  • Паттерны AI-воркфлоу: данных недостаточно для выводов (одна точка данных).
  • Полноценных сессий Claude Code для этого проекта нет.
§06

Достижения и метрики

  • Реальный продакшн-продукт: бот для действующей сети доставки еды (newbot.restaurant-chain.uz), 3 языка интерфейса, интеграция с Laravel API, MongoDB, Redis, Sentry, PM2.
  • 129 коммитов пользователя за ~4.5 года поддержки (2021–2026) — долгоживущий продукт, а не прототип.
  • Функциональность: заказ с доставкой/самовывозом, геокодинг, поиск ближайшего терминала, OTP-авторизация, штрихкод кэшбэка, отзывы, запланированные массовые рассылки с прогрессом.
  • Точных бизнес-метрик (DAU, число заказов) в коде нет.
§07

Контрибьюторы

git shortlog · все ветки

  1. Dave93137
  2. shahzodsalimsakov89
  3. root20
  4. Boburt9
  5. User1
  6. i76717571
6 контрибьюторов257 коммитов всего
Сейчас

Открыт к ролям Senior / Staff инженера и избранному фрилансу — продакшн-AI, платформы и full-stack разработка.

Связаться