Автоматизированная система управления школьным питанием с интеграцией Telegram Bot API для сбора и обработки заказов.
School Menu Bot представляет собой многофункциональное решение для организации процесса заказа школьного питания. Система обеспечивает автоматический парсинг меню с официального сайта школы, предоставляет интерактивный интерфейс для заказов через Telegram и ведет детальную статистику по группам и пользователям.
- Просмотр меню: Получение актуального меню на текущий и следующий день
- Интерактивные заказы: Система выбора питания через inline-клавиатуры
- Гибкое планирование: Возможность заказа комбинаций (завтрак, обед, полдник)
- Управление заказами: Отмена и изменение активных заказов
- Групповая регистрация: Система верификации через уникальные коды
- Аналитика заказов: Детальная статистика по группам и пользователям
- Автоматические уведомления: Ежедневная рассылка меню в 06:00
- Мультигрупповая поддержка: Раздельные каналы для учеников и администрации
- Парсинг данных: Автоматическое извлечение меню из Excel-файлов
- Многоуровневая БД: Система баз данных для пользователей, групп и заказов
- Асинхронная обработка: Неблокирующее выполнение операций
- Морфологический анализ: Корректное склонение слов в статистике
- Python 3.8+ - Основной язык разработки
- Aiogram - Асинхронный фреймворк для Telegram Bot API
- Asyncio - Асинхронное программирование
- OpenPyXL - Обработка Excel-файлов с меню
- Requests - HTTP-запросы к внешним ресурсам
- PyMorphy2 - Морфологический анализ русского языка
- SQLite - Легковесная встроенная СУБД
- Многоуровневая архитектура БД:
base.db
- Основные данные групп и пользователейusers.db
- Пользовательские связкиgroups.db
- Групповые данные и статистикаnow.db
- Текущие активные заказы
school_menu/
├── code/
│ ├── bot.py # Основная логика бота
│ ├── pars.py # Парсер школьного меню
│ ├── sql.py # ORM для работы с БД
│ └── base.py # Конфигурация и токены
├── db/
│ ├── base.db # Основная база данных
│ ├── users.db # Пользовательские данные
│ ├── groups.db # Групповая статистика
│ └── now.db # Текущие заказы (пересоздается ежедневно)
├── requirements.txt # Зависимости проекта
└── README.md # Документация
pip install -r requirements.txt
- Создайте нового бота через @BotFather
- Настройте
code/base.py
:
TOKEN = "ваш_токен_от_BotFather"
ID_BOT = ваш_id_бота
TEX_GROUP = "-id_технической_группы"
cd code/
python bot.py
- Администратор вызывает
/add_group
в личных сообщениях - Система генерирует уникальные коды для основной и технической групп
- Коды вводятся в соответствующих чатах для верификации
- Создается связка групп с инициализацией статистики
- Парсинг актуального меню с
school01.ru/food/
- Пользователь выбирает комбинацию питания через
/eat
- Заказ фиксируется в основной группе и дублируется в техническую
- Обновление статистики по группам и пользователям
- 06:00 ежедневно: Рассылка меню на следующий день
- Учет выходных: Автоматический пропуск воскресений
- Сброс заказов: Ежедневная очистка активных заказов
Команда | Описание | Доступность |
---|---|---|
/start |
Инициализация бота | Личные сообщения |
/help |
Справочная информация | Универсально |
/today |
Меню на сегодня | Универсально |
/tomorrow |
Меню на завтра | Универсально |
/eat |
Интерфейс заказа | Только группы |
/stat |
Статистика группы | Только группы |
/add_group |
Регистрация групп | Личные сообщения |
/del_group |
Удаление связки | Личные сообщения |
- Уникальная система кодов для верификации
- Раздельное хранение пользовательских и групповых данных
- Автоматическая очистка временных данных
- Асинхронная архитектура для обработки множественных запросов
- Оптимизированные SQL-запросы с контекстными менеджерами
- Кэширование статистических данных
- Модульная архитектура классов для работы с БД
- Поддержка неограниченного количества групп
- Гибкая система расширения функционала
Проект распространяется под лицензией MIT.
Деев Егор Викторович - Backend Developer
- GitHub: @EDeev
- Email: egor@deev.space
- Telegram: @Egor_Deev
Создано с ❤️ от вашего дорогого - deev.space ©