Skip to main content

A PyPI package to deliver notifications via your own telegram bot

Project description

PyPI - Downloads PyPI - Version

Logo

Introduction

notipi is a python library to send custom notifications on Telegram and MacOS

Use cases include:

  • Getting notified whenever a long running scripts finishes execution
  • Knowing whenever a milestone is reached during ML / DL trainings

Installation

$ pip install notipi 

Setup

If you wish to use just the MacOS notifications and not Telegram - you don't need anymore steps and start using the library right away. Refer the Usage examples below.

To use Telegram - you would be needing two environment variables: BOT_API_TOKEN and CHAT_ID

To get BOT_API_TOKEN:

  • In the telegram app, initiate conversation with @BotFather (you can also click here).
  • Send /newbot as the message to @BotFather and provide a new name and username for your bot account as per the instructions.
  • @BotFather will reply with a unique api token - this is your BOT_API_TOKEN
    (Note: Detailed instructions to create a new bot can be found at Telegram website)

Logo

To get CHAT_ID:

  • Once a new bot is created, send a dummy message to the bot via Telegram app so that your chat gets assigned an ID.
  • Run the following script with your BOT_API_TOKEN to get your CHAT_ID
from notipi.notipi import get_chat_id
get_chat_id(BOT_API_TOKEN)

This will give the following output:

Your CHAT ID: 1234567890

Once the BOT_API_TOKEN and CHAT_ID are obtained, set the environment variables

export BOT_API_TOKEN=<bot_api_token>
export CHAT_ID=<chat_id>

Usage

Once the required environment variables are in place, you can use notipi in the following ways to send messages via Telegram.
(NOTE: If the environment variables are not set - the messages will be sent only via MacOS notifications by default)

(1) As a regular function

from notipi.notipi import notify

def func():
    for i in range(1000):
        if i%100==0:
            notify(f"Currently at {i}")

(2) As a decorator

from notipi.notipi import notify

@notify
def func():
    for i in range(1000):
        pass

When func() is invoked - you will be notified once it finishes execution

NOTE: Both Approaches (1) and (2) are compatible inside Jupyter Notebook as well

Once func3() is invoked - you will receive two notifications - first one after func1() is processed and second one after func2() is executed.

(3) As a command line tool

$ noticli -c python example.py

A notification will be sent once example.py finishes execution

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

notipi-1.1.0.tar.gz (44.8 kB view hashes)

Uploaded Source

Built Distribution

notipi-1.1.0-py3-none-any.whl (42.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page