alert-after-pro


Namealert-after-pro JSON
Version 0.2.2 PyPI version JSON
download
home_pagehttps://github.com/MatrixA/alert-after-pro
SummaryGet notified when your commands complete - supports Telegram, SMS, DingDing, Ntfy, and more
upload_time2025-08-23 10:51:29
maintainerNone
docs_urlNone
authorAlert After Pro Team
requires_python>=3.7
licenseNone
keywords notification alert command monitoring telegram sms dingding ntfy
VCS
bugtrack_url
requirements requests PyYAML
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Alert After Pro πŸš€

*Read this in other languages: [English](README.md), [δΈ­ζ–‡](README_zh.md)*

Get notified when your commands complete! Simply prefix any command with `aa` and receive notifications via Telegram, SMS, DingDing (ι’‰ι’‰), Ntfy, or Pushover.

Perfect for long-running builds, tests, deployments, or any command you want to monitor remotely.

## ✨ Features

- **Super Simple**: Just prefix your command with `aa`
- **Multiple Channels**: Telegram, SMS (Twilio), DingDing, Ntfy, Pushover
- **Rich Notifications**: Command status, duration, exit code, hostname
- **Cross-platform**: Works on Linux, macOS, and Windows
- **Zero Dependencies**: Minimal core dependencies
- **Configurable**: Optional command output capture, multiple simultaneous channels

## πŸš€ Quick Start

### Installation

```bash
pip install alert-after-pro
```

That's it! One line installation.

### Setup

Run the configuration wizard:

```bash
aa --setup
```

Choose your notification channels and provide the necessary credentials.

### Usage

Simply prefix any command with `aa`:

```bash
# Examples
aa make build
aa pytest tests/
aa docker-compose up
aa "sleep 10 && echo done"
aa npm install && npm run build
```

## πŸ“± Supported Notification Channels

### Telegram
1. Create a bot via [@BotFather](https://t.me/BotFather)
2. Get your bot token
3. Send a message to your bot
4. Get your chat ID from: `https://api.telegram.org/bot<TOKEN>/getUpdates`

### Ntfy (ntfy.sh or self-hosted)
- **Server**: Use `https://ntfy.sh` or your own server
- **Topic**: Any topic name (e.g., "my-alerts")
- **Auth**: Optional username/password for private servers

### DingDing (ι’‰ι’‰)
1. Create a robot in your DingDing group
2. Get the webhook URL
3. Optional: Enable signature verification with secret

### SMS (via Twilio)
1. Sign up at [Twilio](https://www.twilio.com)
2. Get your Account SID and Auth Token
3. Get a phone number

### Pushover
1. Sign up at [Pushover](https://pushover.net)
2. Create an application
3. Get your app token and user key

## πŸ”§ Command Options

```bash
aa --help                # Show help
aa --setup               # Run configuration wizard
aa --test                # Send test notification
aa --silent <command>    # Run command without notifications
```

## πŸ“ Configuration

Configuration is stored in `~/.aa/config.yaml`:

```yaml
enabled_notifiers:
  - telegram
  - ntfy

capture_output: false

telegram:
  bot_token: "your_bot_token"
  chat_id: "your_chat_id"

ntfy:
  server: "https://ntfy.sh"
  topic: "my-alerts"
  username: "optional"
  password: "optional"

dingding:
  webhook: "https://oapi.dingtalk.com/robot/send?access_token=..."
  secret: "optional_secret"

sms:
  provider: "twilio"
  account_sid: "your_account_sid"
  auth_token: "your_auth_token"
  from_number: "+1234567890"
  to_number: "+0987654321"

pushover:
  app_token: "your_app_token"
  user_key: "your_user_key"
```

## πŸ“‹ What You'll Get

Rich notifications include:
- βœ…/❌ Command status (success/failure)
- πŸ–₯️ Hostname
- πŸ’» Full command
- ⏱️ Execution duration
- πŸ“Š Exit code
- πŸ• Start and end times
- πŸ“‹ Command output (optional)
- ❌ Error messages (on failure)

## πŸ› οΈ Development

### Local Development

```bash
git clone https://github.com/alert-after-pro/alert-after-pro
cd alert-after-pro
pip install -e .
```

### Testing

```bash
# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Test specific notifier
aa --test
```

### Project Structure

```
alert-after-pro/
β”œβ”€β”€ src/alert_after_pro/
β”‚   β”œβ”€β”€ main.py              # Entry point
β”‚   β”œβ”€β”€ config.py            # Configuration management
β”‚   └── notifiers/           # Notification implementations
β”‚       β”œβ”€β”€ base.py          # Abstract base class
β”‚       β”œβ”€β”€ telegram.py
β”‚       β”œβ”€β”€ ntfy.py
β”‚       β”œβ”€β”€ dingding.py
β”‚       β”œβ”€β”€ sms.py
β”‚       └── pushover.py
β”œβ”€β”€ setup.py
└── requirements.txt
```

## 🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. Areas for contribution:

- New notification channels
- Improved error handling
- Better message formatting
- Documentation improvements
- Testing

## πŸ“„ License

MIT License - see [LICENSE](LICENSE) file for details.

## πŸ™ Acknowledgments

Inspired by [alert-after](https://github.com/frewsxcv/alert-after). Built for developers who want to be notified when their long-running commands complete.

---

**Happy coding! πŸŽ‰**

Made with ❀️ for developers who like to step away from their terminals.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/MatrixA/alert-after-pro",
    "name": "alert-after-pro",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "notification alert command monitoring telegram sms dingding ntfy",
    "author": "Alert After Pro Team",
    "author_email": "alert@afterpro.dev",
    "download_url": "https://files.pythonhosted.org/packages/97/15/3b43285b5a568e43d0209aeaa41261867dab85f1eb160679e0ac558dcdfe/alert_after_pro-0.2.2.tar.gz",
    "platform": null,
    "description": "# Alert After Pro \ud83d\ude80\n\n*Read this in other languages: [English](README.md), [\u4e2d\u6587](README_zh.md)*\n\nGet notified when your commands complete! Simply prefix any command with `aa` and receive notifications via Telegram, SMS, DingDing (\u9489\u9489), Ntfy, or Pushover.\n\nPerfect for long-running builds, tests, deployments, or any command you want to monitor remotely.\n\n## \u2728 Features\n\n- **Super Simple**: Just prefix your command with `aa`\n- **Multiple Channels**: Telegram, SMS (Twilio), DingDing, Ntfy, Pushover\n- **Rich Notifications**: Command status, duration, exit code, hostname\n- **Cross-platform**: Works on Linux, macOS, and Windows\n- **Zero Dependencies**: Minimal core dependencies\n- **Configurable**: Optional command output capture, multiple simultaneous channels\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n```bash\npip install alert-after-pro\n```\n\nThat's it! One line installation.\n\n### Setup\n\nRun the configuration wizard:\n\n```bash\naa --setup\n```\n\nChoose your notification channels and provide the necessary credentials.\n\n### Usage\n\nSimply prefix any command with `aa`:\n\n```bash\n# Examples\naa make build\naa pytest tests/\naa docker-compose up\naa \"sleep 10 && echo done\"\naa npm install && npm run build\n```\n\n## \ud83d\udcf1 Supported Notification Channels\n\n### Telegram\n1. Create a bot via [@BotFather](https://t.me/BotFather)\n2. Get your bot token\n3. Send a message to your bot\n4. Get your chat ID from: `https://api.telegram.org/bot<TOKEN>/getUpdates`\n\n### Ntfy (ntfy.sh or self-hosted)\n- **Server**: Use `https://ntfy.sh` or your own server\n- **Topic**: Any topic name (e.g., \"my-alerts\")\n- **Auth**: Optional username/password for private servers\n\n### DingDing (\u9489\u9489)\n1. Create a robot in your DingDing group\n2. Get the webhook URL\n3. Optional: Enable signature verification with secret\n\n### SMS (via Twilio)\n1. Sign up at [Twilio](https://www.twilio.com)\n2. Get your Account SID and Auth Token\n3. Get a phone number\n\n### Pushover\n1. Sign up at [Pushover](https://pushover.net)\n2. Create an application\n3. Get your app token and user key\n\n## \ud83d\udd27 Command Options\n\n```bash\naa --help                # Show help\naa --setup               # Run configuration wizard\naa --test                # Send test notification\naa --silent <command>    # Run command without notifications\n```\n\n## \ud83d\udcc1 Configuration\n\nConfiguration is stored in `~/.aa/config.yaml`:\n\n```yaml\nenabled_notifiers:\n  - telegram\n  - ntfy\n\ncapture_output: false\n\ntelegram:\n  bot_token: \"your_bot_token\"\n  chat_id: \"your_chat_id\"\n\nntfy:\n  server: \"https://ntfy.sh\"\n  topic: \"my-alerts\"\n  username: \"optional\"\n  password: \"optional\"\n\ndingding:\n  webhook: \"https://oapi.dingtalk.com/robot/send?access_token=...\"\n  secret: \"optional_secret\"\n\nsms:\n  provider: \"twilio\"\n  account_sid: \"your_account_sid\"\n  auth_token: \"your_auth_token\"\n  from_number: \"+1234567890\"\n  to_number: \"+0987654321\"\n\npushover:\n  app_token: \"your_app_token\"\n  user_key: \"your_user_key\"\n```\n\n## \ud83d\udccb What You'll Get\n\nRich notifications include:\n- \u2705/\u274c Command status (success/failure)\n- \ud83d\udda5\ufe0f Hostname\n- \ud83d\udcbb Full command\n- \u23f1\ufe0f Execution duration\n- \ud83d\udcca Exit code\n- \ud83d\udd50 Start and end times\n- \ud83d\udccb Command output (optional)\n- \u274c Error messages (on failure)\n\n## \ud83d\udee0\ufe0f Development\n\n### Local Development\n\n```bash\ngit clone https://github.com/alert-after-pro/alert-after-pro\ncd alert-after-pro\npip install -e .\n```\n\n### Testing\n\n```bash\n# Install with dev dependencies\npip install -e \".[dev]\"\n\n# Run tests\npytest\n\n# Test specific notifier\naa --test\n```\n\n### Project Structure\n\n```\nalert-after-pro/\n\u251c\u2500\u2500 src/alert_after_pro/\n\u2502   \u251c\u2500\u2500 main.py              # Entry point\n\u2502   \u251c\u2500\u2500 config.py            # Configuration management\n\u2502   \u2514\u2500\u2500 notifiers/           # Notification implementations\n\u2502       \u251c\u2500\u2500 base.py          # Abstract base class\n\u2502       \u251c\u2500\u2500 telegram.py\n\u2502       \u251c\u2500\u2500 ntfy.py\n\u2502       \u251c\u2500\u2500 dingding.py\n\u2502       \u251c\u2500\u2500 sms.py\n\u2502       \u2514\u2500\u2500 pushover.py\n\u251c\u2500\u2500 setup.py\n\u2514\u2500\u2500 requirements.txt\n```\n\n## \ud83e\udd1d Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request. Areas for contribution:\n\n- New notification channels\n- Improved error handling\n- Better message formatting\n- Documentation improvements\n- Testing\n\n## \ud83d\udcc4 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\nInspired by [alert-after](https://github.com/frewsxcv/alert-after). Built for developers who want to be notified when their long-running commands complete.\n\n---\n\n**Happy coding! \ud83c\udf89**\n\nMade with \u2764\ufe0f for developers who like to step away from their terminals.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Get notified when your commands complete - supports Telegram, SMS, DingDing, Ntfy, and more",
    "version": "0.2.2",
    "project_urls": {
        "Bug Reports": "https://github.com/MatrixA/alert-after-pro/issues",
        "Homepage": "https://github.com/MatrixA/alert-after-pro",
        "Source": "https://github.com/MatrixA/alert-after-pro"
    },
    "split_keywords": [
        "notification",
        "alert",
        "command",
        "monitoring",
        "telegram",
        "sms",
        "dingding",
        "ntfy"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f2a6d268c99cba741b20015c9d63ad3c60723c0f0e3a1bf2f58a9f8116c98ec2",
                "md5": "bcac5044d0eb97b3b1ab0eb60f38dc8c",
                "sha256": "9b09e7278f13fb92f7d33553bd7aa770bc0a2a240ff5e2683fdebf1142933f12"
            },
            "downloads": -1,
            "filename": "alert_after_pro-0.2.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "bcac5044d0eb97b3b1ab0eb60f38dc8c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 17546,
            "upload_time": "2025-08-23T10:51:27",
            "upload_time_iso_8601": "2025-08-23T10:51:27.536039Z",
            "url": "https://files.pythonhosted.org/packages/f2/a6/d268c99cba741b20015c9d63ad3c60723c0f0e3a1bf2f58a9f8116c98ec2/alert_after_pro-0.2.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "97153b43285b5a568e43d0209aeaa41261867dab85f1eb160679e0ac558dcdfe",
                "md5": "080be06fefa7a616fcf2673bcfc0dd5c",
                "sha256": "4a06a6d64e18ea45abfb44c443dca65fc76ac98d7dbf62a706ab9be3258b408d"
            },
            "downloads": -1,
            "filename": "alert_after_pro-0.2.2.tar.gz",
            "has_sig": false,
            "md5_digest": "080be06fefa7a616fcf2673bcfc0dd5c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 15793,
            "upload_time": "2025-08-23T10:51:29",
            "upload_time_iso_8601": "2025-08-23T10:51:29.166365Z",
            "url": "https://files.pythonhosted.org/packages/97/15/3b43285b5a568e43d0209aeaa41261867dab85f1eb160679e0ac558dcdfe/alert_after_pro-0.2.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-23 10:51:29",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "MatrixA",
    "github_project": "alert-after-pro",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.25.0"
                ]
            ]
        },
        {
            "name": "PyYAML",
            "specs": [
                [
                    ">=",
                    "5.4.0"
                ]
            ]
        }
    ],
    "lcname": "alert-after-pro"
}
        
Elapsed time: 1.80266s