Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΠΎΡΠΎΠ² Telegram
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΠ°Π΄Π°ΡΠΈ ΡΠ°Ρ-Π±ΠΎΡΠ°: ΡΠ±ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π’Π Π±ΠΎΡ. ΠΡΠΎΠ΄ΡΠΊΡ: ΠΠ°ΡΡΠ΅Ρ ΡΠ°ΡΠΎΠ². Π’Π΅Ρ
Π·Π°Π΄Π°Π½ΠΈΡ Π½Π΅Ρ. ΠΠΎΡΠΈΠ½ΠΈΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π°ΠΊΠΊΠ΅ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°. TYPE: Telegram bot LANGUAGE: Python 3 === CORE STACK === - aiogram 3.5.0 (Telegram Bot API, routers, FSM) - Telethon 1.34.0 (user sessions / MTProto) - FastAPI ~0.104.0 (HTTP endpoint for payment notifications) - GINO 1.0.1 + SQLAlchemy 1.3.24 (async ORM/data layer) - asyncpg 0.28.0 (PostgreSQL driver) - python-socks 2.3.0 / PySocks (SOCKS5 proxy transport) - aiohttp 3.9.0 (HTTP client under aiogram) - pydantic + pydantic-settings (configuration model) - python-dotenv (environment loading) === MAIN ENTRYPOINTS === - app.py: main bot process, DB bind, dispatcher startup, polling loop with network backoff. - server_main.py: FastAPI endpoint /payment_notification/ for payment callbacks. === PROJECT MODULES === - handlers/: business logic (users/admin/parser/premium flows) - middlewares/: update/user/log middlewares - keyboards/: inline/reply keyboard builders - clients/: telegram client/session management - utils/db_api/: DB commands, schema models, services - data/: runtime config, constants, session storage directory - proxy.py: proxy pool selection and release logic - File: handlers/users/premium/authorization.py - Dedicated SOCKS5 proxy is configured for auth flow. - SOCKS5 remote DNS is enabled (rdns=True). - Connection type is explicitly set (ConnectionTcpFull). - Timeout/retry behavior is tuned to avoid infinite hangs: - per-attempt connect timeout wrapper - controlled retry loop in connect_with_retry() - callback answer calls are wrapped via safe_api_call to avoid "query is too old" crashes. === DATABASE === - PostgreSQL is used as main storage. - GINO models are in utils/db_api/schemas/user.py. - DB helper modules include: - access/admin/mailing/referral/user/wo_link command files - services.py for additional helpers.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΠΎΡΠΎΠ² Telegram
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΠ°Π΄Π°ΡΠΈ ΡΠ°Ρ-Π±ΠΎΡΠ°: Π Π°ΡΡΡΠ»ΠΊΠ° ΡΠΈΠ³Π½Π°Π»ΠΎΠ². ΠΡΠΎΠ΄ΡΠΊΡ: ΠΠ΅ΡΡΠΈΠ½Π³. Π’Π΅Ρ
Π·Π°Π΄Π°Π½ΠΈΠ΅ Π΅ΡΡΡ. ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΡΡΠ°Π²ΠΊΠ°Ρ
Ρ ΡΠ°ΠΉΡΠ° (ΠΈ Π΅Π³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
Π·Π΅ΡΠΊΠ°Π»), Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ. ΠΠ°Π½Π½ΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π½Π° ΠΏΡΠΎΡΡΠΎΠΉ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π² Telegram-Π±ΠΎΡ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠΈΠ»ΡΡΡΠ°ΠΌ. ΠΠ°ΡΡΠ΅Ρ (Backend): Π‘Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°. Π Π°Π±ΠΎΡΠ° ΡΠ΅ΡΠ΅Π· GraphQL-Π·Π°ΠΏΡΠΎΡΡ ΠΈΠ»ΠΈ WebSockets (ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ β ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ). ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ: ΠΠ±Ρ
ΠΎΠ΄ Π·Π°ΡΠΈΡΡ Cloudflare (ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΊΡΠΈ, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° TLS-ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΎΠ² ΠΈΠ»ΠΈ undetected-ΡΠ΅ΡΠ΅Π½ΠΈΠΉ). ΠΠΎΠ³ΠΈΠΊΠ° Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ: Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ ΡΡΠ°Π²ΠΎΠΊ ΠΏΠΎ ΠΌΠ°ΡΡΠ°ΠΌ, ΠΈΡΡ
ΠΎΠ΄Π°ΠΌ (ΠΊΠ»Π°ΡΡΠ΅ΡΡ) ΠΈ ΡΠ°ΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° (Volume) Π·Π° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (Frontend): ΠΡΠΎΡΡΠ°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΠΈΡ
Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΠΌΠ°ΡΡΠ΅ΠΉ. ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π²ΠΈΠ΄Π°ΠΌ ΡΠΏΠΎΡΡΠ° ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΈΠ²Π΅Π½ΡΠ°ΠΌ. ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΌΠΌΠ°ΡΠ½ΡΡ
ΡΡΠ°Π²ΠΎΠΊ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΈΡΡ
ΠΎΠ΄Ρ. Telegram-Π±ΠΎΡ: Π Π°ΡΡΡΠ»ΠΊΠ° ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΠΏΠΎΡΠΎΠ³ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°Ρ ΡΡΠΌΠΌΠ° ΡΡΠ°Π²ΠΎΠΊ Π½Π° ΠΈΡΡ
ΠΎΠ΄ > $10,000 Π·Π° 30 ΠΌΠΈΠ½ΡΡ). Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΡΡΠΎΠ³ΠΎΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Ρ (Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΠ°Π½Ρ, ΡΡΡΠ½ΠΈΡΠ°, ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΌΠΌ). Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ: ΠΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Python (Playwright, Selenium, FastAPI/Flask). ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ°ΠΉΡΠ°ΠΌΠΈ (Cloudflare bypass). Π£ΠΌΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ API Telegram (aiogram/telebot). Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠΌΠΎΡΡ Π² ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΠΎΡΠΎΠ² Telegram
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΠ°Π΄Π°ΡΠΈ ΡΠ°Ρ-Π±ΠΎΡΠ°: ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΠ±ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΠΎΡΠ²Π΅ΡΡ Π½Π° ΡΠΈΠΏΠΎΠ²ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ, ΠΏΡΠΈΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ
Π·Π°ΠΊΠ°Π·ΠΎΠ², ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π±ΡΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠΎΠ΄ΡΠΊΡ: ΠΡΠ±ΠΎΠ³ΠΎ. Π’Π΅Ρ
Π·Π°Π΄Π°Π½ΠΈΠ΅ Π΅ΡΡΡ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ°Ρ-Π±ΠΎΡΠΎΠ². ΠΠ°Π΄Π°ΡΠΈ ΡΠ°Ρ-Π±ΠΎΡΠ°: ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ±ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: Telegram. ΠΡΠΎΠ΄ΡΠΊΡ: ΠΠΎΡ Π΄Π»Ρ ΡΡΠ΅ΠΉΠ΄ΠΈΠ½Π³Π°. Π’Π΅Ρ
Π·Π°Π΄Π°Π½ΠΈΠ΅ Π΅ΡΡΡ. ΠΡΠΆΠ΅Π½ Π»ΡΡΡΠΈΠΉ Π±ΠΎΡ Π΄Π»Ρ ΡΡΠ΅ΠΉΠ΄ΠΈΠ½Π³Π° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ ΠΏΠΎΠΊΠ΅Ρ ΠΎΠΏΡΠ½.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΠΎΡΠΎΠ² Telegram
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΠ°Π΄Π°ΡΠΈ ΡΠ°Ρ-Π±ΠΎΡΠ°: ΡΠ±ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΠΏΡΠΈΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ
Π·Π°ΠΊΠ°Π·ΠΎΠ², ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΡΠΎΠ΄ΡΠΊΡ: Π½ΠΎΠ²ΠΎΡΡΠ½ΠΎΠΉ ΠΊΠ°Π½Π°Π». Π’Π΅Ρ
Π·Π°Π΄Π°Π½ΠΈΡ Π½Π΅Ρ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ°Ρ-Π±ΠΎΡΠΎΠ². ΠΠ°Π΄Π°ΡΠΈ ΡΠ°Ρ-Π±ΠΎΡΠ°: ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌΠΌ Π±ΠΎΡ. ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: Telegram. ΠΡΠΎΠ΄ΡΠΊΡ: Π΄Π»Ρ Π·Π°ΠΊΡΡΡΠΎΠ³ΠΎ ΡΠ°ΡΠ°. Π’Π΅Ρ
Π·Π°Π΄Π°Π½ΠΈΠ΅ Π΅ΡΡΡ. ΠΡΠΎΡΡΠ° Π΄ΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΠΎΡΠΎΠ² Telegram
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΠ°Π΄Π°ΡΠΈ ΡΠ°Ρ-Π±ΠΎΡΠ°: ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³. ΠΡΠΎΠ΄ΡΠΊΡ: ΠΡΡΡ ΡΠΈΡΠ½Π΅Ρ ΡΡΠ΅Π½ΠΈΡΠΎΠ²ΠΎΠΊ. Π’Π΅Ρ
Π·Π°Π΄Π°Π½ΠΈΡ Π½Π΅Ρ.