ΠΡ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌ GR2-0 - Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠΌΠΌΡΡΠ½ΠΈΡΠΈ Π»ΡΠ΄Π΅ΠΉ, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ ΡΡ IT, ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌΠΈ ΠΈ Π²ΡΠ΅ΠΌ, ΡΡΠΎ Ρ Π½ΠΈΠΌΠΈ ΡΠ²ΡΠ·Π°Π½ΠΎ. Π‘ ΡΠΎΡΡΠΎΠΌ GR2-0 ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π΅Π³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΡ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:
- ΠΡΠ΅Π½ΠΊΠ° Π²ΠΊΠ»Π°Π΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ° Π΄Π»Ρ
- ΡΠ°Π½ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ΄Π±Π΅ΠΊΠ°,
- ΠΏΠΎΠΎΡΡΠ΅Π½ΠΈΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ GR2-0,
- ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ², Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ Π»ΡΠ΄Π΅ΠΉ, ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΈΡΠ»ΡΡΠΈΡ ΡΡ Π² GR2-0.
- ΠΡΠΈΡΠΌΡ ΡΠΈΠ΄Π±Π΅ΠΊΠ° ΠΎΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² Π΄Π»Ρ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΌΡΡΠ½ΠΈΡΠΈ.
- ΠΡΠΈΡΠΌΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ Π°Π΄ΠΌΠΈΠ½Π°ΠΌΠΈ.
gr2_bot/
βββ data/
β βββ private/ # ΠΡΠΈΠ²Π°ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ (Π² .gitignore)
β β βββ config/ # ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
β β βββ users/ # ΠΠ°Π·Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
β β βββ meetups/ # ΠΠ°Π·Π° ΠΌΠΈΡΠ°ΠΏΠΎΠ²
β β βββ bot/ # Π’ΠΎΠΊΠ΅Π½Ρ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π±ΠΎΡΠ°
β βββ public/ # ΠΡΠ±Π»ΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ (Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ)
β βββ messages/ # Π’Π΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π±ΠΎΡΠ°
βββ src/ # ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄
βββ tests/ # Π’Π΅ΡΡΡ
βββ requirements.txt # ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
βββ README.md
- Python - ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ·ΡΠΊ. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ.
- python-telegram-bot - Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Telegram API
- JSON - ΡΠΎΡΠΌΠ°Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
- File-based storage - Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°ΠΉΠ»Π°Ρ (Π½Π΅ ΠΠ)
ΠΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ
ΡΠ°Π½ΡΡΡΡ Π² data/private/config/:
bot_config.json- ΡΠΎΠΊΠ΅Π½Ρ Π±ΠΎΡΠ°, ID Π³ΡΡΠΏΠΏpoints_config.json- Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠΈΠ½ΡΠΎΠ²community_config.json- Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠΌΠΌΡΡΠ½ΠΈΡΠΈ
Π’Π΅Π»Π΅Π³ΡΠ°ΠΌ-Π±ΠΎΡ Ρ Π°Π΄ΠΌΠΈΠ½ΡΠΊΠΈΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π² Π³ΡΡΠΏΠΏΠ΅ ΠΊΠΎΠΌΠΌΡΡΠ½ΠΈΡΠΈ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ ΡΡΡΠΈΠ½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΊΠΎΠΌΠΌΡΡΠ½ΠΈΡΠΈ.
{
"id": "telegram_user_id",
"username": "ΠΈΠΌΡ_Π΄Π»Ρ_ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ",
"registration_date": "YYYY-MM-DD",
"role": "user|admin|dead",
"points": 0,
"info": "ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ_ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ"
}ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±ΠΎΡΠΎΠΌ. ΠΠΎΠΆΠ΅Ρ:
- Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ/ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ/ΡΠ΄Π°Π»ΡΡΡ ΠΌΠΈΡΠ°ΠΏΡ
- Π£ΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ Π°Π΄ΠΌΠΈΠ½ΠΎΠ²
- ΠΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ
- ΠΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ
{
"id": "unique_meetup_id",
"name": "Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΌΠΈΡΠ°ΠΏΠ°",
"date": "YYYY-MM-DD",
"start_time": "HH:MM",
"end_time": "HH:MM",
"location": "ΠΌΠ΅ΡΡΠΎ_ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ",
"capacity": "Π²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ",
"status": "planned|active|completed|archived",
"attendees": [
{
"user_id": "telegram_id",
"registration_time": "HH:MM:SS"
}
],
"presentations": [
{
"title": "Π½Π°Π·Π²Π°Π½ΠΈΠ΅_Π΄ΠΎΠΊΠ»Π°Π΄Π°",
"speaker": "username_Π΄ΠΎΠΊΠ»Π°Π΄ΡΠΈΠΊΠ°"
}
]
}Π’ΡΠΈΠ³Π³Π΅Ρ: ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΈΡΠ΅Ρ Π±ΠΎΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
- ΠΠΎΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΠΎΡΡΠΎΠΈΡ Π»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π³ΡΡΠΏΠΏΠ΅ ΠΊΠΎΠΌΠΌΡΡΠ½ΠΈΡΠΈ
- ΠΡΠ»ΠΈ Π΄Π° - Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΊΡΠΈΠΏΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ
- ΠΡΠ»ΠΈ Π½Π΅Ρ - Π±ΠΎΡ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Π΅Ρ Π²ΡΡΡΠΏΠΈΡΡ Π² Π³ΡΡΠΏΠΏΡ
- ΠΠΎΡΠ»Π΅ Π²ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅Ρ ΠΏΠΎΠΏΡΡΠΊΡ
- ΠΠΎΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΈΠΌΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² Π±Π°Π·Ρ Ρ ΡΠΎΠ»ΡΡ "user"
- ΠΠ°ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΈΠ½ΡΠΎΠ²: +1 Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ:
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π² Π³ΡΡΠΏΠΏΠ΅ β ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΡΠΏΠΈΡΡ
- ΠΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ β ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π’ΡΠΈΠ³Π³Π΅Ρ: ΠΠ΄ΠΌΠΈΠ½ Π΄Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠ°ΡΡΠ° ΠΌΠΈΡΠ°ΠΏΠ° ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
- ΠΠ΄ΠΌΠΈΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ
/meetup_addΠ΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΈΡΠ°ΠΏΠ° - ΠΠ²ΠΎΠ΄ΡΡΡΡ: Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π΄Π°ΡΠ°, Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π°/ΠΊΠΎΠ½ΡΠ°, ΠΌΠ΅ΡΡΠΎ, Π²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ
- ΠΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π΄ΠΎΠΊΠ»Π°Π΄Ρ (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ + Π΄ΠΎΠΊΠ»Π°Π΄ΡΠΈΠΊ ΠΈΠ· ΡΠ»Π΅Π½ΠΎΠ² Π³ΡΡΠΏΠΏΡ)
- ΠΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ QR-ΠΊΠΎΠ΄Ρ Ρ Π΄ΠΈΠΏΠ»ΠΈΠ½ΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 30 ΡΠ΅ΠΊΡΠ½Π΄
- Π‘ΡΠ°ΡΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠ΄Π°Π»ΡΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
- ΠΠ΄ΠΌΠΈΠ½ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅Ρ ΡΠ°Ρ Ρ Π±ΠΎΡΠΎΠΌ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ
- ΠΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ ΡΠΊΠ°Π½ΠΈΡΡΡΡ QR-ΠΊΠΎΠ΄Ρ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ
- ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ: ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ = ΠΎΠ΄Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π½Π° ΠΌΠΈΡΠ°ΠΏ
- ΠΠ°ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΈΠ½ΡΠΎΠ²: +7 Π·Π° ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠ΅
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ:
- ΠΠΎΠ²ΡΠΎΡΠ½Π°Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ β "Π’Ρ ΡΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠΈΠ»ΡΡ. Π Π°Π΄Ρ, ΡΡΠΎ ΡΡ Ρ Π½Π°ΠΌΠΈ!"
- ΠΡΠΎΡΡΠΎΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ β "ΠΠ·Π²ΠΈΠ½ΠΈ, ΠΊΠΎΠ΄ ΠΏΡΠΎΡΡΠΎΡΠ΅Π½."
ΠΠΎΠΌΠ°Π½Π΄Ρ Π°Π΄ΠΌΠΈΠ½Π°:
/meetupβ Π²ΡΠ±ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ: add/edit/delete/meetup_addβ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠΈΡΠ°ΠΏΠ°/meetup_editβ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π·Π°Π²Π΅ΡΡΡΠ½Π½ΡΡ ΠΌΠΈΡΠ°ΠΏΠΎΠ²/meetup_deleteβ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π·Π°Π²Π΅ΡΡΡΠ½Π½ΡΡ ΠΌΠΈΡΠ°ΠΏΠΎΠ²
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
- ΠΠ°Π²Π΅ΡΡΡΠ½Π½ΡΠ΅ ΠΌΠΈΡΠ°ΠΏΡ Π½Π΅Π»ΡΠ·Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ/ΡΠ΄Π°Π»ΡΡΡ ΡΠ΅ΡΠ΅Π· Π±ΠΎΡΠ°
- ΠΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡΠ°ΡΡΡΠ°
Π’ΡΠΈΠ³Π³Π΅Ρ: ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΈΡΠ°ΠΏΠ° ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
- ΠΠΎΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌ
- ΠΠ°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡΠ΅Π½ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π° (1-5)
- ΠΠ°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠΈΠΉ ΡΠΈΠ΄Π±Π΅ΠΊ ΠΎ ΠΌΠΈΡΠ°ΠΏΠ΅
- ΠΠ°ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΈΠ½ΡΠΎΠ²: +1 Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·Π²ΡΡΠ½ΡΡΡΠΉ ΠΎΡΠ²Π΅Ρ (>128 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²)
- ΠΠΎΡΠΎΡΠΊΠΈΠ΅ ΠΎΡΠ²Π΅ΡΡ β ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠΈΠ½ΡΠ°
- ΠΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠ°: 24 ΡΠ°ΡΠ° ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΌΠΈΡΠ°ΠΏΠ°
ΠΠ°ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅:
- Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π² Π±ΠΎΡΠ΅: +1
- ΠΠΎΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΈΡΠ°ΠΏΠ°: +7
- Π€ΠΈΠ΄Π±Π΅ΠΊ (ΡΠ°Π·Π²ΡΡΠ½ΡΡΡΠΉ ΠΎΡΠ²Π΅Ρ): +1 Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅:
- ΠΠΎΠΊΡΠΏΠΊΠ° ΠΌΠ΅ΡΡΠ° ΠΊΠΎΠΌΠΌΡΡΠ½ΠΈΡΠΈ
- ΠΠΎΠΈΠ½ΡΡ Π½Π΅ ΡΠ³ΠΎΡΠ°ΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π²ΠΈΡΡ Π·Π°ΡΠ²ΠΊΡ Π°Π΄ΠΌΠΈΠ½Π°ΠΌ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π΄ΠΌΠΈΠ½Π°ΠΌΠΈ:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅: ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π°Π΄ΠΌΠΈΠ½Ρ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ
- Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅: ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- Π ΠΎΠ»ΠΈ: ΠΏΠΎΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ "admin"
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³:
- ΠΠΆΠ΅Π΄Π½Π΅Π²Π½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (21:00)
- Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π² Π°Π΄ΠΌΠΈΠ½ΡΠΊΡΡ Π³ΡΡΠΏΠΏΡ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ»ΠΈ Π½Π° "dead" Π΄Π»Ρ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΡΡ
- Π€Π°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°: JSON ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ
- Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ: ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ°Π΅Ρ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
- Π Π΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅: Π ΡΡΠ½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ
data/private
- ΠΠΆΠΈΠ΄Π°Π΅ΠΌΠ°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ°: Π΄ΠΎ 1000 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
- QR-ΠΊΠΎΠ΄Ρ: Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 30 ΡΠ΅ΠΊΡΠ½Π΄
- ΠΡΠΎΠ²Π΅ΡΠΊΠΈ: Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΡΠ΅ Π² 21:00
- ΠΡΠΈΠ²Π°ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π²
.gitignore - ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠ°Π² Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎ Telegram ID
- ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ Π²ΡΠ΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ
/start- ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ/ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅/help- ΡΠΏΡΠ°Π²ΠΊΠ° ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ/profile- ΠΏΡΠΎΡΠΈΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ/points- Π±Π°Π»Π°Π½Ρ ΠΏΠΎΠΈΠ½ΡΠΎΠ²
/meetup- ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΈΡΠ°ΠΏΠ°ΠΌΠΈ/admin- ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π΄ΠΌΠΈΠ½Π°ΠΌΠΈ/stats- ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΊΠΎΠΌΠΌΡΡΠ½ΠΈΡΠΈ/users- ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ/qr_start- Π·Π°ΠΏΡΡΠΊ QR-ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΌΠΈΡΠ°ΠΏ/qr_stop- ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° QR-ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ/qr_status- ΡΡΠ°ΡΡΡ QR-ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΉ
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π² Π³ΡΡΠΏΠΏΠ΅ β ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΡΠΏΠΈΡΡ
- ΠΡΠΎΡΡΠΎΡΠ΅Π½Π½ΡΠΉ QR-ΠΊΠΎΠ΄ β ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅
- ΠΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ β ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ β ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΎΠ²
- ΠΡΠΈΠ±ΠΊΠΈ API Telegram β Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΎΠ²
- ΠΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
- ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
- ΠΠ΄ΠΌΠΈΠ½ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ
- Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
- Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
- ΠΠ°Π·ΠΎΠ²Π°Ρ Π°Π΄ΠΌΠΈΠ½ΡΠΊΠ°Ρ ΠΏΠ°Π½Π΅Π»Ρ
- Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°ΠΉΠ»Π°Ρ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅/ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅/ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠΈΡΠ°ΠΏΠΎΠ²
- Π‘ΠΈΡΡΠ΅ΠΌΠ° QR-ΠΊΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ
- ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠΉ
- Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΌΠΈΡΠ°ΠΏΠΎΠ²
- ΠΠ°ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΈΠ½ΡΠΎΠ² Π·Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ
- Π‘Π±ΠΎΡ ΡΠΈΠ΄Π±Π΅ΠΊΠ° ΠΏΠΎΡΠ»Π΅ ΠΌΠΈΡΠ°ΠΏΠΎΠ²
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΈΠ½ΡΠ°ΠΌΠΈ
- ΠΠ΄ΠΌΠΈΠ½ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ
- ΠΠΆΠ΅Π΄Π½Π΅Π²Π½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ
- Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ
- ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ°
- Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ°
- Π§Π΅ΠΊΠΈΠ½ ΠΏΠΎ Π΄ΠΈΠΏΠ»ΠΈΠ½ΠΊΡ ΠΈΠ· QR ΠΊΠΎΠ΄Π°, Π»ΠΎΠ³Π³ΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ·Π΅ΡΠΎΠΌ ΠΌΠΈΡΠ°ΠΏΠ°
- ΠΠΎΡΠ»Π΅ ΠΌΠΈΡΠ°ΠΏΠ° Π²ΡΠ΅ΠΌ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌ ΡΠ°ΡΡΡΠ»Π°Π΅ΡΡΡ Π·Π°ΠΏΡΠΎΡ ΡΠΈΠ΄Π±Π΅ΠΊΠ°
- ΠΡΠ΅Π½ΠΊΠ° ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΡ ΠΎΡ 1 Π΄ΠΎ 5
- Π€ΠΈΠ΄Π±Π΅ΠΊ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΌΠ΅
- ΠΠ΄ΠΌΠΈΠ½ΡΠΊΠΎΠ΅ ΠΌΠ΅Π½Ρ
- ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠΈΡΠ°ΠΏ(Π΄Π°ΡΠ° ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ)
- ΠΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΠΊΠ»Π°Π΄Ρ ΠΌΠΈΡΠ°ΠΏΠ°(Ρ Ρ Π΅Π½Π΄Π»Π°ΠΌΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ΡΠΈΠΊΠΎΠ²)
- Π‘Π³Π΅Π½Π΅ΡΠΈΡΡ QR ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠ΅ΠΊΠΈΠ½Π°
- ΠΠΎΠ»ΠΎΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π° Π»ΡΡΡΠΈΠΉ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΊΠ²Π°ΡΡΠ°Π»Π°
- ΠΠΎΠΈΠ½ΡΡ Π·Π° ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠ΅
- ΠΠΎΠΈΠ½ΡΡ Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄
- ΠΠΎΠΈΠ½ΡΡ Π·Π° Π³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΠΎΠΈΠ½ΡΡ Π·Π° ΡΠΈΠ΄Π±Π΅ΠΊ
- ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π·Π°ΠΏΡΡΠΊΠ° Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ (
-test) - ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ Π±ΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅ΡΡΠΎΠ²ΡΡ Π³ΡΡΠΏΠΏΠ°Ρ - ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΎΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ