Telegram-бот для торговли
Полный цикл заказа для семейного продуктового магазина внутри Telegram — от каталога до уведомления администратору.
- 1
- команда для деплоя
- 0
- внешних файловых хостингов
- 91
- файл кода
Проблема
Для маленького семейного магазина и сайт, и мобильное приложение были дороги и избыточны — клиенты и так сидели в Telegram и просто писали заказ текстом. В итоге заказы терялись в потоке сообщений, цену переспрашивали каждый раз, а о закончившемся товаре знал только тот, кто успел ответить.
Решение
Собрал весь поток внутри бота: категория → товар → корзина → оформление → уведомление в админскую группу. Каталогом админ управляет тоже из бота — добавляет товар, меняет цену, отмечает закончившийся, не заходя ни в какую панель. Фото товара хранится как Telegram `file_id`, поэтому внешний файловый хостинг не нужен вообще.
Ключевые возможности
- aiogram 3 FSM и Redis — состояние корзины и оформления сохраняется, при обрыве пользователь не теряет заказ
- Админ управляет всем каталогом командами бота: товар, цена, наличие
- Фото товара как Telegram `file_id` — внешний файловый хостинг не нужен
- Заказы приходят в админскую группу в структурированном виде
- Многоязычные тексты вынесены в отдельный слой
- Docker Compose — поднимается одной командой, миграции применяются автоматически
- Async SQLAlchemy и слой репозиториев: будущее мобильное приложение строится поверх того же слоя данных
- Отдельный FastAPI-API для входа через Telegram WebApp
Архитектура
Бот работает в режиме polling, состояние — в Redis, данные — в PostgreSQL. Слой репозиториев общий для бота и API — будущее мобильное приложение не будет дублировать доменную логику.
Точки входа
Хендлеры и состояние
Состояние корзины и оформления в Redis
Слой репозиториев
Данные и деплой
Технологии
Backend
Инфраструктура
Telegram
Моя роль
Единственный разработчик: бот, модель данных, админский поток, WebApp API и Docker-деплой.
Имена клиентов, домены и адреса серверов не раскрываются из соображений конфиденциальности.