# 🍽️ School Menu Bot Автоматизированная система управления школьным питанием с интеграцией Telegram Bot API для сбора и обработки заказов. ## 🎯 Описание проекта School Menu Bot представляет собой многофункциональное решение для организации процесса заказа школьного питания. Система обеспечивает автоматический парсинг меню с официального сайта школы, предоставляет интерактивный интерфейс для заказов через Telegram и ведет детальную статистику по группам и пользователям. ## ⭐ Ключевые возможности ### Пользовательский функционал - **Просмотр меню**: Получение актуального меню на текущий и следующий день - **Интерактивные заказы**: Система выбора питания через inline-клавиатуры - **Гибкое планирование**: Возможность заказа комбинаций (завтрак, обед, полдник) - **Управление заказами**: Отмена и изменение активных заказов ### Административные функции - **Групповая регистрация**: Система верификации через уникальные коды - **Аналитика заказов**: Детальная статистика по группам и пользователям - **Автоматические уведомления**: Ежедневная рассылка меню в 06:00 - **Мультигрупповая поддержка**: Раздельные каналы для учеников и администрации ### Техническая архитектура - **Парсинг данных**: Автоматическое извлечение меню из Excel-файлов - **Многоуровневая БД**: Система баз данных для пользователей, групп и заказов - **Асинхронная обработка**: Неблокирующее выполнение операций - **Морфологический анализ**: Корректное склонение слов в статистике ## 🛠️ Технологический стек ### Backend Framework - **Python 3.8+** - Основной язык разработки - **Aiogram** - Асинхронный фреймворк для Telegram Bot API - **Asyncio** - Асинхронное программирование ### Data Processing - **OpenPyXL** - Обработка Excel-файлов с меню - **Requests** - HTTP-запросы к внешним ресурсам - **PyMorphy2** - Морфологический анализ русского языка ### Database Management - **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 # Документация ``` ## 🚀 Установка и запуск ### Предварительные требования ```bash pip install -r requirements.txt ``` ### Конфигурация 1. Создайте нового бота через [@BotFather](https://t.me/BotFather) 2. Настройте `code/base.py`: ```python TOKEN = "ваш_токен_от_BotFather" ID_BOT = ваш_id_бота TEX_GROUP = "-id_технической_группы" ``` ### Запуск системы ```bash cd code/ python bot.py ``` ## 💡 Алгоритм работы ### Процесс регистрации групп 1. Администратор вызывает `/add_group` в личных сообщениях 2. Система генерирует уникальные коды для основной и технической групп 3. Коды вводятся в соответствующих чатах для верификации 4. Создается связка групп с инициализацией статистики ### Система заказов 1. Парсинг актуального меню с `school01.ru/food/` 2. Пользователь выбирает комбинацию питания через `/eat` 3. Заказ фиксируется в основной группе и дублируется в техническую 4. Обновление статистики по группам и пользователям ### Автоматизация процессов - **06:00 ежедневно**: Рассылка меню на следующий день - **Учет выходных**: Автоматический пропуск воскресений - **Сброс заказов**: Ежедневная очистка активных заказов ## 📊 Команды бота | Команда | Описание | Доступность | |---------|----------|-------------| | `/start` | Инициализация бота | Личные сообщения | | `/help` | Справочная информация | Универсально | | `/today` | Меню на сегодня | Универсально | | `/tomorrow` | Меню на завтра | Универсально | | `/eat` | Интерфейс заказа | Только группы | | `/stat` | Статистика группы | Только группы | | `/add_group` | Регистрация групп | Личные сообщения | | `/del_group` | Удаление связки | Личные сообщения | ## 🎯 Особенности реализации ### Безопасность данных - Уникальная система кодов для верификации - Раздельное хранение пользовательских и групповых данных - Автоматическая очистка временных данных ### Производительность - Асинхронная архитектура для обработки множественных запросов - Оптимизированные SQL-запросы с контекстными менеджерами - Кэширование статистических данных ### Масштабируемость - Модульная архитектура классов для работы с БД - Поддержка неограниченного количества групп - Гибкая система расширения функционала ## 📋 Лицензия Проект распространяется под лицензией MIT. ## 👥 Автор **Деев Егор Викторович** - Backend Developer - GitHub: [@EDeev](https://github.com/EDeev) - Email: egor@deev.space - Telegram: [@Egor_Deev](https://t.me/Egor_Deev) ---
Создано с ❤️ от вашего дорогого - deev.space ©