This commit is contained in:
Egor Deev 2025-10-02 17:26:25 +03:00 committed by GitHub
parent b7403299d2
commit ede9548514
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

105
README.md
View file

@ -1 +1,104 @@
# dorm_alarm
# 🔔 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>
---
⭐ Если проект оказался полезным, поставьте звезду!