Skip to main content

Send telegram notifications

Project description

What is this?

Super fast (<5min setup) telegram notifications for task-completion, task progress, errors and more. This is a minimal module (one file, no pip dependencies).

How do I use this?

  1. pip install telepy_notify

  2. Take 30sec to get a token:

  1. DM your bot to initialize it (important!)

  2. Use it

from telepy_notify import Notifier

# 
# setup
# 
notify = Notifier(
    # read from file
    token_path="some/file/thats/git/ignored/telegram.token",
    # # OR read from ENV var, ex:
    # token_env_var="TELEGRAM_TOKEN",
    # # OR give the token directly, ex:
    # token="alkdsfjakjfoirj029294ijfoi24j4-2",
    
    # optional: a prefix for all messages (good if multiple machines)
    message_prefix="Lambda Machine: Experiment 19:",
    # optional: set to true when debugging to avoid a million notifications
    disable=False,
)
# NOTE:
#    other people can run your code without setting up a bot
#    because telepy will NEVER throw errors 
#    if a notification fails, or if a token is bad
#    it will intentionally only print warnings instead of
#    crashing whatever long-running process you have

# 
# Basic notification
# 
notify.send("Howdy!")
notify.send("Howdy! <b>I'm bold</b>")
notify.send("Howdy! <b>I'm bold</b>\n<code>thing = [1,3,4]</code>")

# 
# get duration and/or error information
# 
with notify.when_done:
    blah_blah_blah = 10
    for blah in range(blah_blah_blah):
        from time import sleep
        sleep(0.1)
    raise Exception(f'''Hello Telegram :)''')
# """
# process took: 1sec, ended at: Sun Aug 20 11:23:38 2023 however it ended with an error: Exception('Hello Telegram :)')
# """

# 
# Progress notifications
# 
#    - gives ETA and other time-info
#    - can limit notify-rate (by time passed or percent-progress)
#        e.g. percent_per_notify=50 => message me after 50% progress
#        e.g. minutes_per_notify=30 => message once every 30min
#    - notify_iter_delay is used to wait a few iterations before sending an ETA
#      (makes the ETA of the first notification more accurate)
for progress, epoch in notify.progress(range(100), percent_per_notify=50, minutes_per_notify=30, notify_iter_delay=1):
    index = progress.index
    
    # do stuff
    import random
    accuracy = random.random()
    if accuracy > 0.99:
        notify.send("Gottem 🎉🎉🎉")
    # end do stuff
    
    progress.message = f"recent accuracy: <code>{accuracy}</code>"

# that^ outputs:
# message1:
#     [=================>.................] 50.00% 
#     |  50/100 
#     | remaining: 0sec 
#     | eta: 11:52:48 
#     | elapsed: 0sec 
#     | recent accuracy: 0.5086382690344122
# message2:
#     Done in 1sec at 11:52:49

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

telepy_notify-0.2.1.tar.gz (8.5 MB view details)

Uploaded Source

Built Distribution

telepy_notify-0.2.1-py3-none-any.whl (238.7 kB view details)

Uploaded Python 3

File details

Details for the file telepy_notify-0.2.1.tar.gz.

File metadata

  • Download URL: telepy_notify-0.2.1.tar.gz
  • Upload date:
  • Size: 8.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/6.6.0 pkginfo/1.9.6 requests/2.30.0 requests-toolbelt/1.0.0 tqdm/4.65.0 CPython/3.8.13

File hashes

Hashes for telepy_notify-0.2.1.tar.gz
Algorithm Hash digest
SHA256 6b72dfe81b4281606342746194d89ec7da94cd4d8a41cb69a8bde2999c7f2b87
MD5 c3e9cbc0660efc0f4f1b3dd4290efb4c
BLAKE2b-256 5585238064d33e38eb5534eabafdd431cf13bc7ad435bac4014d790d55dc4a25

See more details on using hashes here.

File details

Details for the file telepy_notify-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: telepy_notify-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 238.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/6.6.0 pkginfo/1.9.6 requests/2.30.0 requests-toolbelt/1.0.0 tqdm/4.65.0 CPython/3.8.13

File hashes

Hashes for telepy_notify-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f620ae868ef1d84ea56c67125767d0b39466e6d004fbfc830ad91f58441d3f5c
MD5 e6d39c90299a324b616a8e042d10c182
BLAKE2b-256 8196113a80a3305f564ccb01e5612579f08f93c19f111924736995da189d76e1

See more details on using hashes here.

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