From ea267f845379a46546e7fe20e82de81bdb0b2a2b Mon Sep 17 00:00:00 2001 From: Egor Deev Date: Mon, 30 Jun 2025 02:42:24 +0300 Subject: [PATCH] README.md --- README.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 151 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8520a12..292bddb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,152 @@ -

Бот по взятию и рассылке данных с сайта школы

+# 🍽️ 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-запросы с контекстными менеджерами +- Кэширование статистических данных + +### Масштабируемость +- Модульная архитектура классов для работы с БД +- Поддержка неограниченного количества групп +- Гибкая система расширения функционала + +## 👥 Автор + +**Деев Егор Викторович** - Backend Developer +🌐 [deev.space](https://deev.space) | 📧 egor@deev.space | 🔵 [@Egor_Deev](https://t.me/Egor_Deev) + +## 📋 Лицензия + +Проект распространяется под лицензией MIT. + +--- + +
+ Разработано для автоматизации процессов школьного питания с упором на удобство использования и надежность системы. +

Создано с ❤️ от вашего дорогого - deev.space ©

+