jw_social_downloader
Bot · Product
Task
This is my own product, not a client project: a public bot used by strangers who press every button there is. So it has to survive load, the moods of five platforms at once and Telegram's limits — and still explain to a person what went wrong, without a raw traceback.
What I did
I wrote an asynchronous bot on aiogram 3 with a freemium model: three free downloads, then a 30-day subscription paid in USDT, dong or baht. Under the hood it picks formats per platform separately, falls back to `gallery-dl` where `yt-dlp` fundamentally cannot cope, caps concurrency with a semaphore of three and throttles flooding with middleware.
Result
The bot is live: open the link, send a post address, and it returns the media. It has an admin panel with manual subscription grants, human-readable error messages instead of tracebacks, and a single-command start through docker-compose.