dorm_alarm/README.md
2025-12-06 13:23:52 +03:00

100 lines
4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🔔 Dorm Alarm Bot
Telegram-бот для мониторинга работоспособности систем с настраиваемыми интервалами уведомлений и персонализированным управлением.
## 📋 Описание
Асинхронный Telegram-бот, реализующий систему периодических уведомлений с гибкой настройкой интервалов. Предназначен для мониторинга доступности сервисов и отправки регулярных статусных сообщений пользователям.
## 🛠 Технологический стек
- **Python 3.8+**
- **aiogram 3.x** - асинхронный фреймворк для Telegram Bot API
- **SQLite3** - встроенная реляционная база данных
- **asyncio** - асинхронное программирование
## ⚙️ Функциональные возможности
- ✅ Регистрация пользователей с автоматической инициализацией
- ⏰ Настройка интервалов уведомлений (5 минут - 24 часа)
- 🔄 Динамическое управление статусом уведомлений
- 📊 Мониторинг активных пользователей и логирование
- 🔐 Graceful shutdown с корректным завершением задач
- 💾 Персистентное хранение настроек в SQLite
## 📦 Установка
```bash
# Клонирование репозитория
git clone https://github.com/EDeev/dorm_alarm.git
cd dorm_alarm
# Установка зависимостей
pip install -r requirements.txt
```
## 🔧 Конфигурация
Создайте файл `init.py` и укажите токен бота:
```python
BOT_TOKEN = "your_bot_token_here"
```
## 🚀 Запуск
```bash
python bot.py
```
## 📝 Команды бота
| Команда | Описание |
|---------|----------|
| `/start` | Регистрация и активация уведомлений |
| `/status` | Отображение текущих настроек пользователя |
| `/help` | Справочная информация |
## 🏗 Архитектура
```
dorm_alarm/
├── bot.py # Точка входа, инициализация и lifecycle management
├── handlers.py # Обработчики команд и callback-запросов
├── init.py # Конфигурация Bot и Dispatcher
├── sql.py # Database manager и ORM-слой
└── requirements.txt
```
## 🗄 Структура базы данных
**Таблица `users`:**
- `user_id` - уникальный идентификатор пользователя
- `username` - имя пользователя
- `interval_minutes` - интервал уведомлений (по умолчанию 60 мин)
- `is_active` - статус активности уведомлений
- `created_at` - timestamp регистрации
**Таблица `notifications_log`:**
- `id` - автоинкрементный идентификатор
- `user_id` - ссылка на пользователя
- `sent_at` - timestamp отправки
- `status` - статус доставки (sent/failed)
## 📄 Лицензия
Этот проект является некоммерческим и распространяется под лицензией MIT.
## 👨‍💻 Автор
**Деев Егор Викторович** - Backend Developer
- GitHub: [@EDeev](https://github.com/EDeev)
- Email: egor@deev.space
- Telegram: [@Egor_Deev](https://t.me/Egor_Deev)
---
<div align="center">
<sub>⭐ Если проект оказался полезным, поставьте звездочку на GitHub!</sub>
<p><sub>Создано с ❤️ от вашего дорогого - deev.space ©</sub></p>
</div>