Skip to content

Автоматизированная система управления школьным питанием с Telegram Bot API, парсингом меню и групповой статистикой

Notifications You must be signed in to change notification settings

EDeev/school_menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🍽️ 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          # Документация

🚀 Установка и запуск

Предварительные требования

pip install -r requirements.txt

Конфигурация

  1. Создайте нового бота через @BotFather
  2. Настройте code/base.py:
TOKEN = "ваш_токен_от_BotFather"
ID_BOT = ваш_id_бота
TEX_GROUP = "-id_технической_группы"

Запуск системы

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


Разработано для автоматизации процессов школьного питания с упором на удобство использования и надежность системы.

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

About

Автоматизированная система управления школьным питанием с Telegram Bot API, парсингом меню и групповой статистикой

Topics

Resources

Stars

Watchers

Forks

Languages