π·πΊ Π ΡΡΡΠΊΠΈΠΉ | π¬π§ English
Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ Telegram Π±ΠΎΡΠΎΠ² Π±Π΅Π· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ!
ΠΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Ρ drag-and-drop ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, Π³Π΄Π΅ Π²Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π΅ΡΠ΅ Π±Π»ΠΎΠΊΠΈ Π½Π° Ρ ΠΎΠ»ΡΡ, Π° Π³ΠΎΡΠΎΠ²ΡΠΉ Π±ΠΎΡ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌ.
π‘ ΠΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΌΠ°Π»ΠΎΠ³ΠΎ Π±ΠΈΠ·Π½Π΅ΡΠ°, ΡΡΠΈΠ»Π°Π½ΡΠ΅ΡΠΎΠ² ΠΈ ΡΠ΅Ρ , ΠΊΡΠΎ Ρ ΠΎΡΠ΅Ρ Π±ΡΡΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π±ΠΎΡΠ°, Π½Π΅ ΠΈΠ·ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
π ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° (Π½Π°ΠΆΠΌΠΈ Π΄Π»Ρ ΡΠ°ΡΠΊΡΡΡΠΈΡ)
- π€ ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΡ Π΅ΠΌΡ Π±ΠΎΡΠ° Π² Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅
- π¨ Frontend ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· REST API, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ Π±ΠΎΡΠ°
- π‘ API Server Π²Π°Π»ΠΈΠ΄ΠΈΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π² PostgreSQL
- π€ Generator ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΡ Π΅ΠΌΡ Π² Python ΠΊΠΎΠ΄ Ρ aiogram
βΆοΈ ΠΠ°ΠΏΡΡΠΊ β Π±ΠΎΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ Python-ΠΏΡΠΎΡΠ΅ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ (Worker Pool)- π± Telegram ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· polling (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) ΠΈΠ»ΠΈ webhook
- π Analytics ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
ΠΠΎΠΊΠ°Π·Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°
π¦ telegram-bot-builder/
β£ π client/ # π¨ React Frontend
β β£ π components/ # UI ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
β β β£ π editor/ # ΠΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ
β β β β£ π app-sidebar/ # ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌ
β β β β£ π analytics/ # ΠΠ°Π½Π΅Π»Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ
β β β β£ π bot/ # Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΡΠ°ΠΌΠΈ
β β β β£ π broadcast/ # Π Π°ΡΡΡΠ»ΠΊΠΈ
β β β β£ π canvas/ # Π₯ΠΎΠ»ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° (drag & drop)
β β β β£ π code/ # ΠΠΊΠ»Π°Π΄ΠΊΠ° Β«ΠΠΎΠ΄ Π±ΠΎΡΠ°Β»
β β β β£ π dialogs/ # ΠΠΈΠ°Π»ΠΎΠ³ΠΈ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ
β β β β£ π properties/ # ΠΠ°Π½Π΅Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ² Π±Π»ΠΎΠΊΠΎΠ²
β β β β£ π sidebar/ # ΠΠ°Π½Π΅Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
β β β β π users/ # ΠΠΊΠ»Π°Π΄ΠΊΠ° Β«ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈΒ»
β β β£ π ui/ # ΠΠ°Π·ΠΎΠ²ΡΠ΅ UI ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ
β β β π media/ # ΠΠ΅Π΄ΠΈΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
β β£ π hooks/ # React Ρ
ΡΠΊΠΈ
β β£ π pages/ # Π‘ΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
β β£ π storage/ # ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅
β β£ π types/ # TypeScript ΡΠΈΠΏΡ
β β£ π utils/ # Π£ΡΠΈΠ»ΠΈΡΡ
β β π App.tsx # ΠΠ»Π°Π²Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
β£ π server/ # π₯οΈ Express Backend
β β£ π auth/ # ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
β β£ π bots/ # ΠΠ°ΠΏΡΡΠΊ/ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΎΡΠΎΠ²
β β£ π database/ # Π Π°Π±ΠΎΡΠ° Ρ PostgreSQL
β β£ π files/ # Π Π°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ
β β£ π handlers/ # ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ²
β β£ π middleware/ # Middleware
β β£ π migrations/ # ΠΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΠ
β β£ π redis/ # Redis (ΡΠΎΠ±ΡΡΠΈΡ, ΠΊΡΡ)
β β£ π routes/ # API ΠΌΠ°ΡΡΡΡΡΡ
β β£ π services/ # ΠΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ°
β β£ π storages/ # Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ
β β£ π telegram/ # Telegram API ΠΊΠ»ΠΈΠ΅Π½Ρ
β β£ π templates/ # Π¨Π°Π±Π»ΠΎΠ½Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ
β β£ π terminal/ # Π’Π΅ΡΠΌΠΈΠ½Π°Π» Π±ΠΎΡΠΎΠ²
β β£ π utils/ # Π£ΡΠΈΠ»ΠΈΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°
β β π index.ts # Π’ΠΎΡΠΊΠ° Π²Ρ
ΠΎΠ΄Π° ΡΠ΅ΡΠ²Π΅ΡΠ°
β£ π shared/ # π ΠΠ±ΡΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ (ΡΡ
Π΅ΠΌΡ, ΡΠΈΠΏΡ)
β£ π bots/ # π€ Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Python-Π±ΠΎΡΡ
β£ π docs/ # π ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
β β£ π analysis/ # ΠΠ½Π°Π»ΠΈΠ· Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ
β β£ π deployment/ # ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ Π΄Π΅ΠΏΠ»ΠΎΡ
β β£ π development/ # ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²
β β£ π features/ # ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΡ
β β£ π futures/ # ΠΠ»Π°Π½Ρ ΡΠ°Π·Π²ΠΈΡΠΈΡ
β β π releases/ # ΠΠ°ΠΌΠ΅ΡΠΊΠΈ ΠΊ ΡΠ΅Π»ΠΈΠ·Π°ΠΌ
β£ π migrations/ # ποΈ ΠΠΈΠ³ΡΠ°ΡΠΈΠΈ Drizzle ORM
β£ π uploads/ # π ΠΠ°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»Ρ
β£ π scripts/ # π ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ
β£ π package.json # π¦ ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Node.js
β£ π tsconfig.json # βοΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ TypeScript
β£ π vite.config.ts # β‘ ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Vite
β£ π drizzle.config.ts # ποΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Drizzle ORM
β£ π docker-compose.yml # π³ Docker ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
β π .env.example # π ΠΡΠΈΠΌΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
β οΈ ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ: ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΡ ΠΎΡΠΊΡΡΡΡ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡΠΎΠ΅ΠΊΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΠ°Π΄ΠΈΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ β Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΏΠ»Π°Π½ΠΈΡΡΡΡΡΡ Π² Π±ΡΠ΄ΡΡΠΈΡ ΡΠ΅Π»ΠΈΠ·Π°Ρ . Π‘Π»Π΅Π΄ΠΈΡΠ΅ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ Π² Π½Π°ΡΠ΅ΠΌ Telegram-ΠΊΠ°Π½Π°Π»Π΅ ΠΈ ΡΠ°ΡΠ΅.
API ΠΌΠ°ΡΡΡΡΡΡ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ server/routes/:
| ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ | Π§ΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ |
|---|---|
server/routes/projectRoutes/ |
CRUD ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ |
server/routes/botManagement/ |
ΠΠ°ΠΏΡΡΠΊ, ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ°, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ Π±ΠΎΡΠΎΠ² |
server/routes/tables/ |
Π Π°Π±ΠΎΡΠ° Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ |
server/routes/setup/ |
Setup Wizard (ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°) |
server/routes/setupWebhookRoutes.ts |
ΠΡΠΈΡΠΌ webhook-Π°ΠΏΠ΄Π΅ΠΉΡΠΎΠ² ΠΎΡ Telegram |
server/routes/routes.ts |
ΠΠ»Π°Π²Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π²ΡΠ΅Ρ ΠΌΠ°ΡΡΡΡΡΠΎΠ² |
- Drag & Drop β ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°ΠΉΡΠ΅ Π±Π»ΠΎΠΊΠΈ Π½Π° Ρ ΠΎΠ»ΡΡ, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ ΡΡΡΠ΅Π»ΠΊΠ°ΠΌΠΈ
- ΠΠ°Π±ΠΎΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°ΡΡΡΡ β Π½ΠΎΠ²ΡΠ΅ Π½ΠΎΠ΄Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ
- Π‘Π²Π΅ΡΠ»Π°Ρ ΠΈ ΡΡΠΌΠ½Π°Ρ ΡΠ΅ΠΌΡ β ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π½ΡΠΌ ΠΈ Π½ΠΎΡΡΡ
- ΠΠ΄Π°ΠΏΡΠΈΠ²Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ β ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° Π΄Π΅ΡΠΊΡΠΎΠΏΠ΅, ΠΏΠ»Π°Π½ΡΠ΅ΡΠ΅ ΠΈ ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅
- ΠΠΎΠΌΠ°Π½Π΄Ρ β /start, /help ΠΈ Π»ΡΠ±ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
- Π’Π΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΡΠΈΠ³Π³Π΅ΡΡ β ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
- ΠΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ β ΡΡΠΈΠ³Π³Π΅Ρ Π½Π° ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π±ΠΎΡΠΎΠΌ
- ΠΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»Ρ β ΡΠΎΡΠΎ, Π²ΠΈΠ΄Π΅ΠΎ, Π°ΡΠ΄ΠΈΠΎ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ
- Π‘Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ β ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
- Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠ° β ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠ° Π² Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΡΡ
- Inline-ΠΊΠ½ΠΎΠΏΠΊΠΈ β Ρ callback-Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π½Π°ΠΆΠ°ΡΠΈΠΉ
- Reply-ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ β ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠΎΠ΄ ΠΏΠΎΠ»Π΅ΠΌ Π²Π²ΠΎΠ΄Π°
- Answer callback query β ΠΎΡΠ²Π΅Ρ Π½Π° Π½Π°ΠΆΠ°ΡΠΈΠ΅ inline-ΠΊΠ½ΠΎΠΏΠΊΠΈ
- Π’ΡΠΈΠ³Π³Π΅ΡΡ Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π³ΡΡΠΏΠΏΠ°Ρ β Π±ΠΎΡ ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ²
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΠΌ Π² ΡΠΎΡΡΠΌΠ°Ρ β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠΏΠΈΠΊΠΎΠ²
- HTTP-Π·Π°ΠΏΡΠΎΡΡ β ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π»ΡΠ±ΡΠΌ Π²Π½Π΅ΡΠ½ΠΈΠΌ API
- PostgreSQL β ΠΏΡΡΠΌΡΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π±ΠΎΡΠ°
- Π£ΡΠ»ΠΎΠ²Π½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° β Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ "Π΅ΡΠ»ΠΈ... ΡΠΎ..."
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ β Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π³Π°ΠΌΠΈ
- ΠΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² β ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠΎΠ²
- π¨ Π Π΅Π΄Π°ΠΊΡΠΎΡ β Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ Ρ ΠΎΠ»ΡΡ Ρ Π½ΠΎΠ΄Π°ΠΌΠΈ, drag & drop ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ
- π ΠΠΎΠ΄ β ΠΏΡΠΎΡΠΌΠΎΡΡ, ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Python-ΠΊΠΎΠ΄Π°
- π€ ΠΠΎΡ β ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ, Π·Π°ΠΏΡΡΠΊ/ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ°, ΡΡΠ°ΡΡΡ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
- π₯ ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ β Π±Π°Π·Π° Π²ΡΠ΅Ρ , ΠΊΡΠΎ ΠΏΠΈΡΠ°Π» Π±ΠΎΡΡ
- π¬ ΠΠΈΠ°Π»ΠΎΠ³ΠΈ β ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΊΠΈ Π±ΠΎΡΠ° Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
- π’ Π Π°ΡΡΡΠ»ΠΊΠΈ β ΠΌΠ°ΡΡΠΎΠ²Π°Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ Π±Π°Π·Π΅
- π ΠΠ½Π°Π»ΠΈΡΠΈΠΊΠ° β ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΎΡΠ°
- π Π’Π°Π±Π»ΠΈΡΡ β ΡΠ°Π±Π»ΠΈΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΠΊΠΎΠ½ΡΠ΅Π½Ρ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ)
π‘ ΠΠΊΠ»Π°Π΄ΠΊΠΈ ΠΈ Π±Π»ΠΎΠΊΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ΅Π»ΠΈΠ·ΠΎΠΌ.
βΆοΈ ΠΠ°ΡΠΈΠ°Π½Ρ 1: ΠΠ°ΠΏΡΡΠΊ ΠΈΠ· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° (ΠΊΠ½ΠΎΠΏΠΊΠ° Β«ΠΠ°ΠΏΡΡΡΠΈΡΡΒ»)
ΠΠΎΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°:
- ΠΠ° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ β ΠΏΠΎΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ, Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ»ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π² ΡΠ°ΡΠ΅ @bot_builder_chat. Π‘ΠΊΠΎΡΠΎ Π²ΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ!
- Self-hosted (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ) β ΡΠ°Π·Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Ρ ΡΠ΅Π±Ρ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ Π±ΠΎΡΠΎΠ² ΠΈΠ· ΡΠ²ΠΎΠ΅ΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ
ΠΠ· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° (ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ ΠΈΠ»ΠΈ self-hosted):
- ΠΡΠΊΡΠΎΠΉΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΡ Β«ΠΠΎΠ΄ Π±ΠΎΡΠ°Β»
- Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ
.pyΡΠ°ΠΉΠ» - ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ Π½ΡΠΆΠ΄Ρ (ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π²Π°Ρ, Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠΊΠ°)
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅, VPS ΠΈΠ»ΠΈ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ β Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°
Π Π°Π·Π²Π΅ΡΠ½ΠΈΡΠ΅ Bot Builder Π½Π° ΡΠ²ΠΎΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ β ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅/Π·Π°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ Π±ΠΎΡΠΎΠ² Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅:
- ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ Π½Π° Railway.app
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΠΊΠΎΠ΄ΠΎΠΌ
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ (ΡΠΌ. docs/deployment/RAILWAY_DEPLOY.md)
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ PostgreSQL Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ: docs/deployment/RAILWAY_DEPLOY.md
git clone https://github.com/fedorabakumets/telegram-bot-builder.git
cd telegram-bot-builder
docker compose up -dΠ‘ΠΌ. ΠΏΠΎΡΠ°Π³ΠΎΠ²ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π½ΠΈΠΆΠ΅.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π΄Π»Ρ Windows, macOS ΠΈ Linux (Git, Node.js, PostgreSQL, Redis, Python, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΠ, ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π·Π°ΠΏΡΡΠΊ):
π docs/development/INSTALLATION.md
π³ ΠΡΡΡΡΡΠΉ ΡΡΠ°ΡΡ:
docker compose up -dβ ΠΈ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π΅Π· ΡΡΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
π‘ ΠΡΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ? Π‘ΠΌ. π ΠΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Ρ GitHub
ΠΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ (Π½Π°ΠΆΠΌΠΈ Π΄Π»Ρ ΡΠ°ΡΠΊΡΡΡΠΈΡ)
- ΠΡΠΊΡΠΎΠΉΡΠ΅ Telegram ΠΈ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ @BotFather
- ΠΠ°ΠΏΠΈΡΠΈΡΠ΅
/newbotΠΈ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ - ΠΡ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΎΠΊΠ΅Π½ Π²ΡΠΎΠ΄Π΅:
123456789:ABCdef...
- ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ Ρ Π²Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Ρ ΡΠ·Π»ΠΎΠΌ "Π‘ΡΠ°ΡΡ"
- ΠΡΠ»ΠΈ Π½ΡΠΆΠ΅Π½ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΡ "ΠΡΠΎΠ΅ΠΊΡΡ" (ΡΠ»Π΅Π²Π°) ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ "+ ΠΠΎΠ²ΡΠΉ"
- Π ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ "ΠΠΎΡ"
- ΠΡΡΠ°Π²ΡΡΠ΅ ΡΠΎΠΊΠ΅Π½, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΡ BotFather
- Π’ΠΎΠΊΠ΅Π½ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
- ΠΠ΅ΡΠ΅ΡΠ°ΡΠΈΡΠ΅ Π±Π»ΠΎΠΊ "Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅" Π½Π° Ρ ΠΎΠ»ΡΡ ΡΡΠ΄ΠΎΠΌ Ρ ΡΠ·Π»ΠΎΠΌ "Π‘ΡΠ°ΡΡ"
- ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ
- Π Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
Π±Π»ΠΎΠΊΠ° ΡΠΊΠ°ΠΆΠΈΡΠ΅, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π°Π»ΡΡΠ΅:
- ΠΠ½ΠΎΠΏΠΊΠΈ - Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΎΡΠ²Π΅ΡΠ°
- ΠΠ²ΡΠΎΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ - ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ Π±Π»ΠΎΠΊΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
- ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° - Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π΅ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΠΈ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ
- ΠΡΠΊΡΠΎΠΉΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΡ "ΠΠΎΡ" (ΡΠΏΡΠ°Π²Π° Π²Π½ΠΈΠ·Ρ)
- ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ "ΠΠ°ΠΏΡΡΡΠΈΡΡ"
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ Π±ΠΎΡΠ° Π² Telegram
- Π’Π΅ΡΡΠΈΡΡΠΉΡΠ΅ ΠΈ ΡΠ»ΡΡΡΠ°ΠΉΡΠ΅!
ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² (Π½Π°ΠΆΠΌΠΈ Π΄Π»Ρ ΡΠ°ΡΠΊΡΡΡΠΈΡ)
| ΠΠ»ΠΎΠΊ | Π§ΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ |
|---|---|
| π Π’ΡΠΈΠ³Π³Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ | Π‘ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΡΠΈ Π²Π²ΠΎΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (/start, /help, Π»ΡΠ±Π°Ρ ΡΠ²ΠΎΡ) |
| π¬ Π’ΡΠΈΠ³Π³Π΅Ρ ΡΠ΅ΠΊΡΡΠ° | Π‘ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ |
| π© Π’ΡΠΈΠ³Π³Π΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ | Π‘ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ |
| π€ Π’ΡΠΈΠ³Π³Π΅Ρ ΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ | Π‘ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ³Π΄Π° Π±ΠΎΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ |
| π¬ Π’Π΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ | ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΠΊΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Markdown) |
| π ΠΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ» | ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΡΠΎ, Π²ΠΈΠ΄Π΅ΠΎ, Π°ΡΠ΄ΠΈΠΎ ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ |
| πΎ Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΎΡΠ²Π΅Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ | Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΎΡΠ²Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ |
| βοΈ Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ | Π Π΅Π΄Π°ΠΊΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΆΠ΅ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ |
| ΠΠ΅ΡΠ΅ΡΡΠ»ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°Ρ |
| ΠΠ»ΠΎΠΊ | Π§ΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ |
|---|---|
| π Π’ΡΠΈΠ³Π³Π΅Ρ inline-ΠΊΠ½ΠΎΠΏΠΊΠΈ | Π‘ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ inline-ΠΊΠ½ΠΎΠΏΠΊΡ |
| π Π’ΡΠΈΠ³Π³Π΅Ρ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ | Π‘ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½Π°ΠΆΠ°ΡΠΈΠ΅ callback-ΠΊΠ½ΠΎΠΏΠΊΠΈ |
| β¨οΈ ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° | ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ reply-ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ |
| β Answer callback query | ΠΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π° Π½Π°ΠΆΠ°ΡΠΈΠ΅ inline-ΠΊΠ½ΠΎΠΏΠΊΠΈ (ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅/alert) |
| ΠΠ»ΠΎΠΊ | Π§ΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ |
|---|---|
| π₯ Π’ΡΠΈΠ³Π³Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² Π³ΡΡΠΏΠΏΠ΅ | Π‘ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π³ΡΡΠΏΠΏΠΎΠ²ΡΡ ΡΠ°ΡΠ°Ρ |
| π Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΠΌΡ ΡΠΎΡΡΠΌΠ° | Π‘ΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΎΠΏΠΈΠΊ Π² ΡΠΎΡΡΠΌ-Π³ΡΡΠΏΠΏΠ΅ |
| ΠΠ»ΠΎΠΊ | Π§ΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ |
|---|---|
| π HTTP-Π·Π°ΠΏΡΠΎΡ | ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ ΠΊ Π»ΡΠ±ΠΎΠΌΡ Π²Π½Π΅ΡΠ½Π΅ΠΌΡ API |
| ποΈ PostgreSQL Π·Π°ΠΏΡΠΎΡ | ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ SQL-Π·Π°ΠΏΡΠΎΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ |
| π Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ | ΠΠ΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ: "Π΅ΡΠ»ΠΈ... ΡΠΎ... ΠΈΠ½Π°ΡΠ΅..." |
| π Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ | Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π΄ΡΡΠ³ΠΈΡ Π±Π»ΠΎΠΊΠ°Ρ |
| π ΠΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² | ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌΠΈ |
Π ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ:
- πΈ Π€ΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ β JPG, PNG
- π¬ ΠΠΈΠ΄Π΅ΠΎ β Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊΠΈ
- π΅ ΠΡΠ΄ΠΈΠΎ β ΠΌΡΠ·ΡΠΊΠ° ΠΈ Π·Π°ΠΏΠΈΡΠΈ
- π ΠΠΎΠΊΡΠΌΠ΅Π½ΡΡ β PDF, Word, Excel ΠΈ Π΄ΡΡΠ³ΠΈΠ΅
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°:
- ΠΠ½ΠΎΠΏΠΊΠΈ β ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π²Π°ΡΠΈΠ°Π½Ρ, Π±ΠΎΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π½Π° Π½ΡΠΆΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
- ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° β Π±ΠΎΡ ΠΆΠ΄ΡΡ ΠΎΡΠ²Π΅Ρ, Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π΄Π°Π»ΡΡΠ΅
- ΠΠ²ΡΠΎΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ β ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ Π±Π»ΠΎΠΊΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
- Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ β Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
π‘ Π‘ΠΏΠΈΡΠΎΠΊ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. Π‘Π»Π΅Π΄ΠΈΡΠ΅ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ!
π ΠΠΎΡΠ°Π³ΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΎΡΠ° (Π½Π°ΠΆΠΌΠΈ Π΄Π»Ρ ΡΠ°ΡΠΊΡΡΡΠΈΡ)
ΠΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ Π±ΠΎΡ Π΄Π»Ρ ΠΏΡΠΈΠ΅ΠΌΠ° Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΏΠΈΡΡΡ Ρ ΠΌΠ΅Π½Ρ, Π²ΡΠ±ΠΎΡΠΎΠΌ ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ
|
β¬οΈ
|
|
β¬οΈ
|
|
β¬οΈ
|
|
β¬οΈ
|
|
β¬οΈ
|
π ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ (Π½Π°ΠΆΠΌΠΈ Π΄Π»Ρ ΡΠ°ΡΠΊΡΡΡΠΈΡ)
- ΠΡΠΊΡΠΎΠΉΡΠ΅ Telegram Bot Builder
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ "ΠΠΈΡΡΠ΅ΡΠΈΡ"
- ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΎΠΊΠ΅Π½ ΠΎΡ @BotFather
- Π‘ΡΠ°ΡΡΠΎΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ β "ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ! ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠΈΡΡΡ π"
- ΠΠ½ΠΎΠΏΠΊΠΈ Π²ΡΠ±ΠΎΡΠ° β ["π ΠΠ°ΡΠ³Π°ΡΠΈΡΠ°", "π ΠΠ΅ΠΏΠΏΠ΅ΡΠΎΠ½ΠΈ", "π₯¬ ΠΠ΅Π³Π΅ΡΠ°ΡΠΈΠ°Π½ΡΠΊΠ°Ρ"]
- Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ β "ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π²Π°Ρ Π°Π΄ΡΠ΅Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ"
- Π€ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ β "Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π·Π°ΠΊΠ°Π·! ΠΠΆΠΈΠ΄Π°ΠΉΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΠΊΡ π"
- Π‘ΡΠ°ΡΡ β ΠΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ (Π°Π²ΡΠΎΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄)
- ΠΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ β ΠΡΠ±ΠΎΡ ΠΏΠΈΡΡΡ (ΠΊΠ½ΠΎΠΏΠΊΠΈ)
- ΠΡΠ±ΠΎΡ ΠΏΠΈΡΡΡ β ΠΠ΄ΡΠ΅Ρ (Π»ΡΠ±Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°)
- ΠΠ΄ΡΠ΅Ρ β ΠΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ (ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°)
- ΠΠ°ΠΆΠΌΠΈΡΠ΅ "Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄"
- Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ Π³ΠΎΡΠΎΠ²ΡΠΉ Python ΡΠ°ΠΉΠ»
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Π±ΠΎΡΠ° ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅
π ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Python ΠΊΠΎΠ΄ (Π½Π°ΠΆΠΌΠΈ ΡΡΠΎΠ±Ρ ΡΠ°ΡΠΊΡΡΡΡ)
# π€ ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π±ΠΎΡ Π΄Π»Ρ ΠΏΠΈΡΡΠ΅ΡΠΈΠΈ
import asyncio
from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
# π Π’ΠΎΠΊΠ΅Π½ Π±ΠΎΡΠ° (Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° ΡΠ²ΠΎΠΉ)
bot = Bot(token="YOUR_BOT_TOKEN")
dp = Dispatcher()
def get_pizza_keyboard():
"""π ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Ρ Π²ΡΠ±ΠΎΡΠΎΠΌ ΠΏΠΈΡΡΡ"""
keyboard = ReplyKeyboardMarkup(
keyboard=[
[KeyboardButton(text="π ΠΠ°ΡΠ³Π°ΡΠΈΡΠ°")],
[KeyboardButton(text="π ΠΠ΅ΠΏΠΏΠ΅ΡΠΎΠ½ΠΈ")],
[KeyboardButton(text="π₯¬ ΠΠ΅Π³Π΅ΡΠ°ΡΠΈΠ°Π½ΡΠΊΠ°Ρ")]
],
resize_keyboard=True,
one_time_keyboard=True
)
return keyboard
@dp.message(Command("start"))
async def start_handler(message: types.Message):
"""π ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ /start"""
await message.answer(
"π ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ Π² ΠΏΠΈΡΡΠ΅ΡΠΈΡ!\n"
"ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠΈΡΡΡ ΠΈΠ· ΠΌΠ΅Π½Ρ:",
reply_markup=get_pizza_keyboard()
)
@dp.message(lambda message: "π" in message.text or "π₯¬" in message.text)
async def pizza_selected(message: types.Message):
"""π ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π²ΡΠ±ΠΎΡΠ° ΠΏΠΈΡΡΡ"""
pizza_type = message.text
await message.answer(
f"β
ΠΡΠ»ΠΈΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ: {pizza_type}!\n"
f"π ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π²Π°Ρ Π°Π΄ΡΠ΅Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ:",
reply_markup=types.ReplyKeyboardRemove()
)
@dp.message()
async def address_handler(message: types.Message):
"""π ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π°Π΄ΡΠ΅ΡΠ° Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ"""
address = message.text
await message.answer(
f"π Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π·Π°ΠΊΠ°Π·!\n"
f"π ΠΠ΄ΡΠ΅Ρ: {address}\n"
f"π ΠΠΆΠΈΠ΄Π°ΠΉΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΠΊΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 30-40 ΠΌΠΈΠ½ΡΡ!\n"
f"π ΠΡ ΡΠ²ΡΠΆΠ΅ΠΌΡΡ Ρ Π²Π°ΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ."
)
# π ΠΠ°ΠΏΡΡΠΊ Π±ΠΎΡΠ°
async def main():
print("π€ ΠΠΎΡ ΠΏΠΈΡΡΠ΅ΡΠΈΠΈ Π·Π°ΠΏΡΡΠ΅Π½!")
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())ΠΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΏΠ°ΠΏΠΊΠ΅ docs/ ΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° ΠΏΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌ Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°
|
π ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° π§ Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ π€ ΠΠ»Ρ ΠΊΠΎΠ½ΡΡΠΈΠ±ΡΡΡΠΎΡΠΎΠ² π Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ π§© ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·Π»Π° |
π Railway π³ Docker βοΈ VPS βοΈ CI/CD |
ποΈ Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° π§ ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° π ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ π§ͺ Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ |
π‘οΈ ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° π ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ π¨ ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ π ΠΡΠ΄ΠΈΡ |
ποΈ ΠΠΎΠ»Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ (Π½Π°ΠΆΠΌΠΈ Π΄Π»Ρ ΡΠ°ΡΠΊΡΡΡΠΈΡ)
π docs/
βββ π development/ # π οΈ ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²
β βββ π INSTALLATION.md # ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
β βββ π TROUBLESHOOTING_RU.md # Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ
β βββ π CONTRIBUTING.md # Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΈΠ±ΡΡΡΠΎΡΠΎΠ²
β βββ π REQUIREMENTS_SPECIFICATION.md # Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
β βββ π HOW_TO_UPDATE.md # ΠΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ
β
βββ π deployment/ # π Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ
β βββ π RAILWAY_DEPLOY.md # Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Π½Π° Railway
β βββ π RAILWAY_CLI_GUIDE.md # Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Railway CLI
β βββ π RAILWAY_TROUBLESHOOTING.md # Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ
β
βββ π analysis/ # π ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠ°
β βββ π PROJECT_STRUCTURE_ANALYSIS.md # ΠΠ½Π°Π»ΠΈΠ· ΡΡΡΡΠΊΡΡΡΡ
β βββ π PROJECT_STRUCTURE_DIAGRAM.md # ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΡΡΡΡΠΊΡΡΡΡ
β βββ π INFRASTRUCTURE_ANALYSIS.md # ΠΠ½Π°Π»ΠΈΠ· ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ
β
βββ π COMPONENTS.md # π§© ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°
βββ π README.md # π ΠΠ½Π΄Π΅ΠΊΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ (Π½Π°ΠΆΠΌΠΈ Π΄Π»Ρ ΡΠ°ΡΠΊΡΡΡΠΈΡ)
ΠΠΎΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° β Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠ°ΠΏΡΡΡΠΈΡΡΒ» Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«ΠΠΎΡΒ». Π‘Π΅ΡΠ²Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ:
- ΠΠ΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Python-ΠΊΠΎΠ΄ ΠΈΠ· Π²Π°ΡΠ΅ΠΉ ΡΡ Π΅ΠΌΡ
- ΠΠ°ΠΏΡΡΠΊΠ°Π΅Ρ Π±ΠΎΡ ΠΊΠ°ΠΊ Python-ΠΏΡΠΎΡΠ΅ΡΡ (ΡΠ΅ΡΠ΅Π· Worker Pool)
- ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π»ΠΎΠ³ΠΈ ΠΈ ΡΡΠ°ΡΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
β οΈ ΠΠ°ΠΆΠ½ΠΎ: Python-Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉpip install -r requirements.txt. ΠΡΠ΅ Π±ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ±ΡΠ΅Π΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ· Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Β«ΠΠΎΠ΄ Π±ΠΎΡΠ°Β» ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ .py ΡΠ°ΠΉΠ» ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°:
ΠΠΊΠ»Π°Π΄ΠΊΠ° Β«ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ°Β» β ΠΏΡΠΎΡΠΌΠΎΡΡ, ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Python-ΠΊΠΎΠ΄Π°
pip install -r requirements.txt # ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·
python bot.py # Π·Π°ΠΏΡΡΠΊ Π±ΠΎΡΠ°ΠΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π²Π°Ρ β ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡ, Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ ΠΊΡΠ΄Π° ΡΠ³ΠΎΠ΄Π½ΠΎ.
| ΠΠ»Π°ΡΡΠΎΡΠΌΠ° | ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ | ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ |
|---|---|---|
| Railway | ΠΡΡΡΡΡΠΉ Π΄Π΅ΠΏΠ»ΠΎΠΉ, Π°Π²ΡΠΎΡΠΊΠ΅ΠΉΠ»ΠΈΠ½Π³ | RAILWAY_DEPLOY.md |
| VPS (DigitalOcean, Linode) | ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ | Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ Python |
| Docker | ΠΠ·ΠΎΠ»ΡΡΠΈΡ, Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ | docker compose up -d |
MIT License - ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ Π΄Π»Ρ Π»ΠΈΡΠ½ΡΡ ΠΈ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π»Π΅ΠΉ.