# NPR MeteoBot Автоматизированная система мониторинга метеорологических условий и уведомлений об актировках учебных занятий для Норильского промышленного района (НПР). ## 📋 Описание проекта NPR MeteoBot представляет собой интеллектуальную систему на базе Telegram-бота, предназначенную для: - Мониторинга погодных условий в четырех районах НПР - Автоматического отслеживания актировок учебных занятий - Персонализированных уведомлений пользователей - Предоставления детализированных метеорологических данных ### Основные возможности: - **Персонализация**: Настройка по смене обучения и району проживания - **Автоматизация**: Регулярный мониторинг официальных источников - **Уведомления**: Система подписок с гибкими настройками - **Актуальность**: Интеграция с Gismeteo и официальным сайтом города ## 🏗️ Архитектура системы ### Компоненты: - `bot.py` - Основной модуль Telegram-бота с обработкой команд - `sql.py` - Модуль работы с базой данных SQLite - `info.py` - Парсинг данных с внешних источников - `config.py` - Конфигурационные параметры системы ### Структура базы данных: - **users**: Профили пользователей с настройками - **weather**: Кэш метеорологических данных - **parts**: Данные об актировках по сменам - **data**: Системная информация ## 🛠️ Технологический стек ### Backend: - **Python 3.7+** - Основной язык разработки - **aiogram 2.x** - Фреймворк для Telegram Bot API - **SQLite** - Локальная база данных - **asyncio** - Асинхронное программирование ### Парсинг данных: - **Selenium WebDriver** - Автоматизация браузера - **BeautifulSoup4** - HTML-парсинг - **requests** - HTTP-запросы ### Обработка данных: - **pymorphy2** - Морфологический анализ русского языка ## 🚀 Установка и настройка ### Предварительные требования: ```python # Установка ChromeDriver для Selenium # Ubuntu/Debian: sudo apt-get install chromium-chromedriver # Windows: загрузить с https://chromedriver.chromium.org/ ``` ### Установка зависимостей: ```python pip install -r requirements.txt ``` ### Конфигурация: 1. Получите токен бота в [@BotFather](https://t.me/BotFather) 2. Обновите `API_TOKEN` в `config.py` 3. Создайте структуру базы данных SQLite ### Запуск: ```python python bot.py ``` ## 📊 Функциональные возможности ### Команды бота: - `/start` - Инициализация и настройка профиля - `/town` - Изменение города и смены обучения - `/acta` - Просмотр текущих актировок - `/weather` - Детализированный прогноз погоды - `/storm` - Штормовые предупреждения - `/letter` - Управление подпиской на уведомления - `/notice` - Настройка типа уведомлений ### Автоматические процессы: - **timer()** - Мониторинг актировок (каждую минуту) - **wind()** - Обновление погодных данных (каждые 20 минут) - **clear()** - Очистка устаревших данных (каждые 5 минут) ## 🎯 Целевые районы Система обслуживает четыре района НПР: - **Центральный район** (Норильск) - **Район Талнах** - **Район Оганер** - **Район Кайеркан** ## 🔧 Конфигурационные параметры ### Временные интервалы мониторинга: - Прогноз погоды: 1, 4, 7, 10, 13, 16, 19, 22 часа - Проверка актировок: ежеминутно - Обновление погоды: каждые 20 минут ### Источники данных: - **Актировки**: [norilsk-city.ru/meteo](https://www.norilsk-city.ru/meteo/) - **Погода**: [gismeteo.ru](https://www.gismeteo.ru/) ## 📈 Масштабируемость Система спроектирована для: - Обработки 17,000+ активных пользователей - Асинхронной обработки запросов - Отказоустойчивой работы с внешними API ## ⚠️ Ограничения - Зависимость от доступности внешних источников данных - Требует настройки ChromeDriver для корректного парсинга - Локальная SQLite база данных (не подходит для кластерного развертывания) ## 📝 Лицензия Проект разработан для образовательных и некоммерческих целей. ## 👥 Автор **Деев Егор Викторович** - Backend Developer - GitHub: [@EDeev](https://github.com/EDeev) - Email: egor@deev.space - Telegram: [@Egor_Deev](https://t.me/Egor_Deev) ---
Создано с ❤️ от вашего дорогого - deev.space ©