# π 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) ---
Π‘ΠΎΠ·Π΄Π°Π½ΠΎ Ρ β€οΈ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΠΎΡΠΎΠ³ΠΎΠ³ΠΎ - deev.space Β©