Tech Stack
- Python 3.13 with strict async/await throughout
- aiogram 3.24 for Telegram Bot API
- yt-dlp for TikTok metadata extraction
- curl_cffi for browser-impersonated HTTP requests
- SQLAlchemy 2.0 + asyncpg for database
- aiohttp for async HTTP client operations
High-Level Architecture
Core Design Patterns
1. Modular Package Structure
The codebase is organized into focused packages with clear responsibilities:handlers/- Telegram message/callback handlers (aiogram routers)tiktok_api/- TikTok extraction with retry logicinstagram_api/- Instagram extraction via RapidAPImedia_types/- Shared media processing (video/image/audio sending)data/- Configuration, database, localizationmisc/- Queue management and utilitiesstats/- Statistics bot and graph generation
2. Singleton Resource Pattern
Shared resources are pooled at the class level to maximize throughput:3. Repository Pattern
Database operations are abstracted throughdb_service.py, providing a clean interface:
4. Context Managers (RAII)
VideoInfo implements context manager protocol for automatic resource cleanup:
5. Extensible Error Mapping
New video sources register their errors at import time:Component Relationships
Handler Registration Order
Router order matters in aiogram. Registration inmain.py:
link_router must come before video_router to intercept Instagram URLs.
URL Dispatch Flow
Data Flow
Video Download Pipeline
Each blue stage (D, E, F) has independent retry logic with proxy rotation.Media Processing Pipeline
Configuration Management
Configuration is loaded from environment variables indata/config.py:
Concurrency Control
QueueManager implements per-user concurrency limits:
Anti-Bot Measures
Chrome 120 Impersonation
TikTok’s WAF blocks datacenter IPs and detects bot fingerprints. The solution:- yt-dlp:
ImpersonateTarget("chrome", "120", "macos", None) - curl_cffi:
impersonate="chrome120" - Headers: User-Agent must match impersonation target
Key Files Reference
| File | Purpose | Lines |
|---|---|---|
main.py | Bot entry point, router registration, cleanup | 61 |
tiktok_api/client.py | Core TikTok extraction with 3-part retry | 1960 |
tiktok_api/proxy_manager.py | Round-robin proxy rotation | 176 |
handlers/link_dispatcher.py | URL routing (Instagram vs TikTok) | ~100 |
media_types/send_video.py | Video sending logic | 92 |
media_types/send_images.py | Slideshow download and sending | 212 |
data/db_service.py | Repository pattern database operations | ~400 |
misc/queue_manager.py | Per-user concurrency control | ~200 |

