A command-line tool to send Telegram notifications when long-running commands complete
Project description
notifyme-cli
A command-line tool that sends Telegram notifications when long-running commands complete. Never miss when your builds, tests, or data processing jobs finish!
✨ Features
- 🔔 Get notified via Telegram when commands finish
- ⏱️ Shows command duration and exit status
- 📝 Add custom messages to notifications
- 🛠️ Easy setup with interactive configuration
- 🎯 Works with any command-line program
- 💾 Secure local configuration storage
📦 Installation
From PyPI (Recommended)
pip install notifyme-cli
From Source
git clone https://github.com/judeosbert/notifyme-cli.git
cd notifyme-cli
pip install -e .
Development Installation
git clone https://github.com/judeosbert/notifyme-cli.git
cd notifyme-cli
pip install -e ".[dev]"
Setup
1. Create a Telegram Bot
- Open Telegram and message @BotFather
- Send
/newbotand follow the instructions - Save the bot token you receive
2. Get Your Chat ID
- Message @userinfobot on Telegram
- It will reply with your user information including your chat ID
- Save the chat ID (it's a number like
123456789)
3. Configure notify-me
Run the setup command and enter your bot token and chat ID:
notifyme setup
The setup will test the connection and confirm everything works.
📱 Usage
Basic Usage (Recommended)
Run commands and then notify when complete:
# Send default "Task complete" message
python train_model.py && notifyme
# Send custom message
make build && notifyme -m "Build finished"
# Chain multiple commands
npm test && npm build && notifyme -m "CI pipeline complete"
Direct Message Sending
Send a message directly:
notifyme # Send "Task complete"
notifyme -m "Hello from the command line!" # Send custom message
Command Wrapper (Alternative)
Execute commands with notification wrapper:
notifyme --exec python train_model.py
notifyme --exec -m "Training complete!" python train_model.py
Test Configuration
Test your setup:
notifyme test
Command Examples
# Long-running build with notification (recommended)
docker build -t myapp . && notifyme -m "Docker build complete"
# Database backup with notification
pg_dump mydatabase > backup.sql && notifyme -m "Backup finished"
# Machine learning training
python train.py --epochs 100 && notifyme -m "Model training done"
# Run tests and get notified
pytest tests/ && notifyme
# Complex pipeline
bash ./process_data.sh && notifyme -m "Data processing complete"
# Using the wrapper (alternative method)
notifyme --exec pytest tests/
notifyme --exec -m "Training complete!" python train.py
Configuration
Configuration is stored in ~/.notify-me/config.json. The file contains:
{
"bot_token": "your-bot-token-here",
"chat_id": "your-chat-id-here"
}
Security
- Your bot token and chat ID are stored locally on your machine
- No data is sent to external servers except Telegram's API
- Configuration file has restricted permissions (600)
Notification Format
Notifications include:
- ✅/❌ Success or failure status
- Command that was executed
- Execution time
- Timestamp
- Custom message (if provided)
- Exit code (if command failed)
Example notification:
✅ Command completed successfully
Message: Training finished!
Command: python train_model.py
Duration: 2.3 hours
Time: 2024-11-17 14:30:22
Troubleshooting
"Bot not configured" Error
Run notifyme setup to configure your bot token and chat ID.
"Connection error" or timeout
- Check your internet connection
- Verify your bot token is correct
- Make sure your bot hasn't been deleted
"Telegram API error"
- Verify your chat ID is correct
- Make sure you've sent at least one message to your bot
- Check that your bot token is valid
Permission errors
The configuration directory ~/.notify-me/ should be writable by your user.
Development
Running Tests
python -m pytest tests/
Installing for Development
pip install -e ".[dev]"
License
MIT License - see LICENSE file for details.
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if needed
- Submit a pull request
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
Quick Start for Contributors
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and add tests
- Run tests:
make test - Submit a pull request
📝 Changelog
See CHANGELOG.md for a detailed history of changes.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
⭐ Support
If you find this project helpful, please consider:
- Giving it a star on GitHub ⭐
- Reporting bugs or requesting features through issues
- Contributing to the codebase
- Sharing it with others who might find it useful
🤖 Built with AI
This project was created with the assistance of AI (GitHub Copilot) to demonstrate modern Python development practices and open-source project structure. The AI helped with:
- Code architecture and implementation
- Comprehensive documentation and examples
- GitHub workflows and community templates
- Testing and quality assurance setup
- Open-source best practices
🔗 Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file notifyme_cli-1.0.1.tar.gz.
File metadata
- Download URL: notifyme_cli-1.0.1.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcb096deb1da49cb2efa5b9d4a4807c345ea7f886ffcf41b51413ab8dba69563
|
|
| MD5 |
5bddf2132de32cc1b419dd50d54ed922
|
|
| BLAKE2b-256 |
15ef30a6aad2c5155e1734b41752f4f9b8598c513ac03303f8838be877f7d424
|
File details
Details for the file notifyme_cli-1.0.1-py3-none-any.whl.
File metadata
- Download URL: notifyme_cli-1.0.1-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
799ebf931510000db468ce14927ab39f2bf1755ce6b0a44d730292d30c8ca74e
|
|
| MD5 |
4140dbf1c1f7db308ac790814da54542
|
|
| BLAKE2b-256 |
2431afd84a46b84d9a67e3f97740c9e1dc79db89e0129e5db974a23037f6b71e
|