Автоматизированная система мониторинга погоды и актировок для Норильского промышленного района с персонализированными уведомлениями
Find a file
2025-07-01 02:09:08 +03:00
bot.py start file 2022-02-24 06:14:14 +07:00
config.py v. 1 2022-02-24 06:13:18 +07:00
info.py v. 1 2022-02-24 06:13:18 +07:00
README.md README 2025-07-01 02:09:08 +03:00
sql.py v. 1 2022-02-24 06:13:18 +07:00
sub.db Data base 2022-02-24 06:14:01 +07:00

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 - Морфологический анализ русского языка

🚀 Установка и настройка

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

# Установка ChromeDriver для Selenium
# Ubuntu/Debian:
sudo apt-get install chromium-chromedriver

# Windows: загрузить с https://chromedriver.chromium.org/

Установка зависимостей:

pip install -r requirements.txt

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

  1. Получите токен бота в @BotFather
  2. Обновите API_TOKEN в config.py
  3. Создайте структуру базы данных SQLite

Запуск:

python bot.py

📊 Функциональные возможности

Команды бота:

  • /start - Инициализация и настройка профиля
  • /town - Изменение города и смены обучения
  • /acta - Просмотр текущих актировок
  • /weather - Детализированный прогноз погоды
  • /storm - Штормовые предупреждения
  • /letter - Управление подпиской на уведомления
  • /notice - Настройка типа уведомлений

Автоматические процессы:

  • timer() - Мониторинг актировок (каждую минуту)
  • wind() - Обновление погодных данных (каждые 20 минут)
  • clear() - Очистка устаревших данных (каждые 5 минут)

🎯 Целевые районы

Система обслуживает четыре района НПР:

  • Центральный район (Норильск)
  • Район Талнах
  • Район Оганер
  • Район Кайеркан

🔧 Конфигурационные параметры

Временные интервалы мониторинга:

  • Прогноз погоды: 1, 4, 7, 10, 13, 16, 19, 22 часа
  • Проверка актировок: ежеминутно
  • Обновление погоды: каждые 20 минут

Источники данных:

📈 Масштабируемость

Система спроектирована для:

  • Обработки 17,000+ активных пользователей
  • Асинхронной обработки запросов
  • Отказоустойчивой работы с внешними API

⚠️ Ограничения

  • Зависимость от доступности внешних источников данных
  • Требует настройки ChromeDriver для корректного парсинга
  • Локальная SQLite база данных (не подходит для кластерного развертывания)

📝 Лицензия

Проект разработан для образовательных и некоммерческих целей.

👥 Автор

Деев Егор Викторович - Backend Developer


Разработано с использованием современных технологий асинхронного программирования и автоматизации веб-парсинга.

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