diff --git a/README.md b/README.md index fb4cbb3..10c11ee 100644 --- a/README.md +++ b/README.md @@ -1 +1,104 @@ -# dorm_alarm \ No newline at end of file +# π 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 Β©
+