mirror of
https://github.com/EDeev/npr_meteobot.git
synced 2026-06-15 19:11:06 +03:00
README.md
This commit is contained in:
parent
6a53ffcfd6
commit
8b6643778e
1 changed files with 138 additions and 0 deletions
138
README.md
Normal file
138
README.md
Normal file
|
|
@ -0,0 +1,138 @@
|
||||||
|
# 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 база данных (не подходит для кластерного развертывания)
|
||||||
|
|
||||||
|
## 📝 Лицензия
|
||||||
|
|
||||||
|
Проект разработан для образовательных и некоммерческих целей.
|
||||||
|
|
||||||
|
## 👤 Автор
|
||||||
|
|
||||||
|
**Деев Егор Викторович**
|
||||||
|
- GitHub: [@DeevEV](https://github.com/DeevEV)
|
||||||
|
- Email: egor@deev.space
|
||||||
|
- Telegram: [@Egor_Deev](https://t.me/Egor_Deev)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<sub>Создано с ❤️ от вашего дорогого - deev.space ©</sub>
|
||||||
|
</div>
|
||||||
Loading…
Add table
Reference in a new issue