Telegram bot that downloads and converts custom emoji and stickers to TGS, JSON, Lottie, and PNG formats.
- Extract custom (premium) emoji from messages
- Convert stickers to TGS, JSON, Lottie, and PNG formats
- Download full sticker and emoji packs via
t.melinks - Auto-detect file format by magic bytes with extension fallback
- Auto-split large archives into 45 MB parts
- Progress updates during pack processing
- Multi-language support (English and Russian)
git clone https://github.com/bohd4nx/EmojiSaver.git
cd EmojiSaver
pip install -r requirements.txt
cp .env.example .envEdit .env with your credentials (see Configuration below), then run:
python main.py| Variable | Description |
|---|---|
BOT_TOKEN |
Bot token from @BotFather |
RATE_LIMIT_COOLDOWN |
Cooldown between requests in seconds (default: 5) |
Send any of the following to the bot:
- A sticker — returns a ZIP with all converted formats
- A message containing custom emoji — extracts and converts each emoji
- A pack link (
https://t.me/addstickers/...orhttps://t.me/addemoji/...) — downloads and converts the entire pack
| Format | Extension | Notes |
|---|---|---|
| TGS | .tgs |
Original Telegram animated format |
| JSON | .json |
Uncompressed Lottie animation |
| Lottie | .lottie |
Compressed Lottie (LottieFiles format) |
| PNG | .png |
First frame, 512×512 px |
Non-TGS formats (WebM, WebP, MP4, GIF, etc.) are saved as-is without conversion.
docker build -t emojisaverbot .
# First time — create the database file
touch /path/on/server/EmojiSaverBot.db
docker run -d --name emojisaverbot \
--env-file .env \
--restart unless-stopped \
-v /path/on/server/EmojiSaverBot.db:/app/EmojiSaverBot.db \
emojisaverbotdocker logs -f emojisaverbot # live logs
docker restart emojisaverbot # restart
docker stop emojisaverbot # stop
docker rm emojisaverbot # remove containerThis project is provided as-is for educational purposes.
Made with ❤️ by @bohd4nx