A powerful Telegram bot that helps you manage reminders with support for one-time and recurring reminders. Never forget important tasks, meetings, or events again!
- One-time reminders - Set specific date/time reminders
- Weekly reminders - Recurring every week
- Yearly reminders - Recurring every year
- Full date/time:
2024-12-25 14:30 Buy Christmas gifts
- Date with hour only:
2024-12-25 14 Meeting
(defaults to 14:00) - Date only:
2024-12-25 Shopping
(defaults to 10:00) - Multiple date formats:
DD/MM/YYYY
,YYYY-MM-DD
,DD-MM-YYYY
- Weekly with time:
weekly 09:00 Team meeting
- Weekly at current time:
weekly Grocery shopping
- Yearly with time:
yearly 18:00 Anniversary dinner
- Yearly at current time:
yearly Pay subscription
/list
- View pending reminders/listall
- View all reminders (including sent ones)/delete <ID>
- Delete specific reminders by ID- User-specific reminders (privacy protected)
- Checks every minute for due reminders
- Sends overdue reminders even if time has passed
- Automatic scheduling for recurring reminders
- Handles timezone-aware scheduling
- Python 3.8+
- Telegram Bot Token (get from @BotFather)
- Clone the repository
git clone <your-repo-url>
cd viberemind
- Install dependencies
pip install -r requirements.txt
- Configure environment
cp .env.example .env
# Edit .env and add your TELEGRAM_BOT_TOKEN
- Run the bot
python3 viberemind.py
2024-12-25 14:30 Buy Christmas gifts
25/12/2024 09:00 Doctor appointment
14:30 31/12/2024 New Year party
2024-12-25 14 Team meeting
2024-12-25 Shopping
weekly 09:00 Team standup
yearly 12:00 Birthday celebration
weekly Take out trash
yearly Renew insurance
/start - Start the bot
/help - Show detailed help
/list - View pending reminders
/listall - View all reminders
/delete 5 - Delete reminder with ID 5
- Run deployment script
chmod +x deploy.sh
sudo ./deploy.sh
- Configure bot token
sudo nano /opt/reminder-bot/.env
# Add your TELEGRAM_BOT_TOKEN
- Start the service
sudo systemctl start reminder-bot
# Check status
sudo systemctl status reminder-bot
# View logs
sudo journalctl -u reminder-bot -f
# Restart service
sudo systemctl restart reminder-bot
# Stop service
sudo systemctl stop reminder-bot
cd /opt/reminder-bot
sudo -u reminder-bot git pull
sudo -u reminder-bot venv/bin/pip install -r requirements.txt --upgrade
sudo systemctl restart reminder-bot
The bot uses SQLite with the following schema:
CREATE TABLE reminders (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
chat_id INTEGER NOT NULL,
reminder_text TEXT NOT NULL,
reminder_time TEXT NOT NULL,
sent BOOLEAN DEFAULT 0,
recurring_type TEXT DEFAULT NULL,
next_reminder_time TEXT DEFAULT NULL,
created_at TEXT DEFAULT CURRENT_TIMESTAMP
);
Variable | Description | Required | Default |
---|---|---|---|
TELEGRAM_BOT_TOKEN |
Bot token from @BotFather | β Yes | - |
LOG_LEVEL |
Logging level | β No | INFO |
DATABASE_FILE |
SQLite database path | β No | reminders.db |
viberemind/
βββ viberemind.py # Main bot application
βββ requirements.txt # Python dependencies
βββ deploy.sh # Production deployment script
βββ .env.example # Environment template
βββ DEPLOYMENT.md # Deployment guide
βββ README.md # This file
- User Isolation - Users can only see/manage their own reminders
- Input Validation - Comprehensive validation of dates and commands
- Secure Storage - Environment variables for sensitive data
- Sandboxed Execution - Runs as non-privileged user in production
Bot not starting:
# Check logs
sudo journalctl -u reminder-bot -n 50
# Verify token
sudo cat /opt/reminder-bot/.env
Reminders not sending:
# Check if service is running
sudo systemctl status reminder-bot
# Check database permissions
ls -la /opt/reminder-bot/reminders.db
Permission errors:
# Fix ownership
sudo chown -R reminder-bot:reminder-bot /opt/reminder-bot
- Set up development environment
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
- Create development config
cp .env.example .env
# Add your development bot token
- Run in development mode
python3 viberemind.py
- Database changes go in
init_database()
- New commands need handlers in
main()
- Update help text in
help_command()
- Add tests for new functionality
This project is open source. Feel free to use, modify, and distribute as needed.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
- Issues: GitHub Issues
- Questions: Create an issue with the
question
label - Feature Requests: Create an issue with the
enhancement
label
Made with β€οΈ for better time management