36318c60bb0cbb8a81ce1b25de87e7413b755265
- Added caption column to database with automatic migration - Captions are now stored and sent with scheduled posts - Supports captions for photos, videos, and animations - Captions are displayed in /scheduled command - Updated help text to mention caption support
Meme Wrangler Bot
Telegram bot that accepts memes (photos, GIF animations, videos) from the owner's private messages and schedules them into a channel at the next available slot among 11:00, 16:00, 21:00.
Setup
Option 1: Run with Docker (Recommended)
The easiest way to run the bot is using Docker:
-
Set up environment variables:
cp .env.example .env nano .env # Edit with your bot credentials -
Run with Docker Compose:
docker-compose up -d -
View logs:
docker-compose logs -f -
Stop the bot:
docker-compose down
For detailed Docker deployment instructions, including remote server deployment, see DOCKER_DEPLOY.md.
Option 2: Run Locally
- Create a virtualenv and install dependencies:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Set environment variables:
export TELEGRAM_BOT_TOKEN=123:ABC
export OWNER_ID=123456789
export CHANNEL_ID=@yourchannel # or -1001234567890
- Run the bot:
python bot.py
How it works
- Owner sends a photo/video/animation in the bot's DM.
- Bot stores the Telegram file_id and schedules it for the next available slot: 11:00, 16:00, 21:00 IST (India Standard Time). If there's an existing scheduled meme, new ones are scheduled after the last one using the same cycle.
- A background task posts due memes into the configured channel at the scheduled IST times.
Docker Implementation
This project includes full Docker support for easy deployment:
- Dockerfile: Creates a lightweight Python container with all dependencies
- docker-compose.yml: Simplifies running the bot with proper configuration
- Volume mounting: Database persists between container restarts in
./datadirectory - Auto-restart: Container automatically restarts if it crashes
- Logging: Configured with log rotation (10MB max, 3 files)
The Docker implementation ensures consistent behavior across different environments and simplifies deployment to production servers.
Notes
- All times are in IST (India Standard Time, UTC+5:30) regardless of the server's timezone.
- Stored timestamps are Unix timestamps (UTC).
- Make sure the bot is admin in the channel to post messages.
- When using Docker, the database is stored in
./data/memes.dbon the host machine.
Description
Languages
Python
90.7%
Shell
7%
Dockerfile
2.3%