- Add recover_bounty method to BountyService (admin-only) - Add cmd_recover handler for listing and recovering deleted bounties - Register /recover command in bot.py - Add /recover to bot command list /recover - list all recoverable bounties (sorted by deleted_at desc) /recover <id...> - recover specific bounty(ies) Output formats: List: [#1] Deleted bounty | 🗑️ Deleted 2 Apr 2026 Recover: ✅ Recovered bounty #1. or ⛔ Bounty #5 not found or not deleted. Fixes #49
Telegram Bot
A Telegram bot for managing and tracking bounties in groups and DMs.
Setup
cd apps/telegram-bot
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Copy and edit environment
cp .env.example .env
# Add your bot token to .env: JIGAIDO_BOT_TOKEN="your:token"
# Install dependencies and run
uv sync # creates .venv/, installs deps
uv run python bot.py # runs the bot
Running in Background
Option 1: tmux (quick, survives SSH disconnect)
tmux new -s jigaido
uv run python bot.py
# Press Ctrl+B, then D to detach (bot keeps running)
// Later:
tmux attach -t jigaido
Option 2: systemd (production, auto-restart, boot on startup)
# Edit the service file paths first
nano deploy/jigaido-bot.service
# Change /home/shoko/repositories/jigaido to your actual path
# Install
sudo cp deploy/jigaido-bot.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable jigaido-bot
sudo systemctl start jigaido-bot
# Useful commands:
sudo systemctl status jigaido-bot
sudo systemctl restart jigaido-bot
sudo systemctl stop jigaido-bot
journalctl -u jigaido-bot -f # tail logs
Or use the automated setup script:
export JIGAIDO_BOT_TOKEN="your:token"
bash deploy/setup.sh
Reminders
Schedule a daily cron job for due date notifications:
# crontab -e — run at 9am daily
0 9 * * * cd /path/to/jigaido/apps/telegram-bot && JIGAIDO_BOT_TOKEN="your:token" uv run python cron.py
Project Structure
apps/telegram-bot/
├── bot.py # Bot entrypoint
├── commands.py # Command handlers
├── cron.py # Daily reminder job
├── db.py # SQLite database wrapper
├── schema.sql # Database schema
├── pyproject.toml # uv project definition
├── .env.example # Environment template
├── deploy/
│ ├── jigaido-bot.service # systemd service
│ └── setup.sh # Automated setup script
└── tests/
├── conftest.py # Test fixtures
├── test_db.py # Database tests
└── test_commands.py # Command/parsing tests
Commands
| Command | Where | Who | Description |
|---|---|---|---|
/bounty |
Group / DM | Anyone | List all bounties |
/my |
Group / DM | Anyone | List your tracked bounties |
/add <text> [link] [due> |
Group | Admin | Add bounty |
/add <text> [link] [due> |
DM | Anyone | Add personal bounty |
/update <id> [text] [link] [due> |
Group | Admin | Update bounty |
/delete <id> |
Group | Admin | Delete bounty |
/track <id> |
Group / DM | Anyone | Track a bounty |
/untrack <id> |
Group / DM | Anyone | Stop tracking |
/admin_add <user> |
Group | Creator | Promote to admin |
/admin_remove <user> |
Group | Creator | Demote admin |
/start |
Group / DM | Anyone | Re-initialize |
/help |
Anywhere | Anyone | Show help |