Package: telegram-send
telegram-sendTelegram-send is a command-line tool to send messages and files over Telegram to
your account, to a group or to a channel. It provides a simple interface that
can be easily called from other programs.Table of ContentsUsageInstallationExamplesAlert on completion of shell commandsPeriodic messages with cronSupervisor process state notificationsUsage from PythonCron job outputASCII picturesQuestions & AnswersHow to use a proxy?How to send the same message to multiple users?UninstallationUsageTo send a message:telegram-send"Hello, World!"There is a maximum message length of 4096 characters, larger messages will be
automatically split up into smaller ones and sent separately.To send a message using Markdown or HTML formatting:telegram-send--formatmarkdown"Only the *bold* use _italics_"telegram-send--formathtml"<pre>fixed-width messages</pre> are <i>also</i> supported"telegram-send--formatmarkdown"||Do good and find good!||"Note that not all Markdown syntax or all HTML tags are supported. For more
information on supported formatting, see theformatting options. We use the
MarkdownV2 style for Markdown.The--preflag formats messages as fixed-width text:telegram-send--pre"monospace"To send a message without link previews:telegram-send--disable-web-page-preview"https://github.com/rahiel/telegram-send"To send a message from stdin:printf'With\nmultiple\nlines'|telegram-send--stdinWith this option you can send the output of any program.To send a file (maximum file size of 50 MB) with an optional caption:telegram-send--filequran.pdf--caption"The Noble Qur'an"To send an image (maximum file size of 10 MB) with an optional caption:telegram-send--imagemoon.jpg--caption"The Moon at Night"To send a sticker:telegram-send--stickersticker.webpTo send a GIF or a soundless MP4 video (encoded as H.264/MPEG-4 AVC with a maximum file size of 50 MB) with an optional caption:telegram-send--animationkitty.gif--caption"🐱"To send an MP4 video (maximum file size of 50 MB) with an optional caption:telegram-send--videobirds.mp4--caption"Singing Birds"To send an audio file with an optional caption:telegram-send--audio"Pachelbel's Canon.mp3"--caption"Johann Pachelbel - Canon in D"To send a location via latitude and longitude:telegram-send--location35.5398033-79.7488965All captions can be optionally formatted with Markdown or html:telegram-send--imagemoon.jpg--caption"The __Moon__ at *Night*"--formatmarkdownTelegram-send integrates into your file manager (Thunar, Nautilus and Nemo):InstallationInstall telegram-send system-wide with pip:sudopip3installtelegram-sendOr if you want to install it for a single user without root permissions:pip3installtelegram-sendIf installed for a single user you need to add~/.local/binto their path,
refer to thisguidefor instructions.And finally configure it withtelegram-send --configureif you want to send to
your account,telegram-send --configure-groupto send to a group or withtelegram-send --configure-channelto send to a channel.Use the--configoption to use multiple configurations. For example to set up
sending to a channel in a non-default configuration:telegram-send --config channel.conf --configure-channel. Then always specify the config file to use
it:telegram-send --config channel.conf "Bismillah".The-goption uses the global configuration at/etc/telegram-send.conf.
Configure it once:sudo telegram-send -g --configureand all users on the
system can send messages with this config:telegram-send -g "GNU"(provided
you've installed it system-wide.)ExamplesHere are some examples to get a taste of what is possible with telegram-send.Alert on completion of shell commandsReceive an alert when long-running commands finish with thetgalias, based on
Ubuntu's built-inalert. Put the following in your~/.bashrc:aliastg='telegram-send "$([ $? = 0 ] && echo "" || echo "error: ") $(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*tg$//'\'')"'And then use it likesleep 10; tg. This will send you a message with the
completed command, in this casesleep 10.What if you started a program and forgot to set the alert? Suspend the program
with Ctrl+Z and then enterfg; telegram-send "your message here".To automatically receive notifications for long running commands, usentfywith the Telegram backend.Periodic messages with cronWe can combine telegram-send withcronto periodically send messages. Here
we will set up a cron job to send theAstronomy Picture of the Dayto
theastropodchannel.Create a bot by talking to theBotFather, create a public channel and add
your bot as administrator to the channel. You will need to explicitly search for
your bot's username when adding it. Then runtelegram-send --configure-channel --config astropod.conf. We will use theapod.pyscript that gets the daily
picture and calls telegram-send to post it to the channel.We create a cron job/etc/cron.d/astropod(as root) with the content:SHELL=/bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin# m h dom mon dow user  command01***telegram~/apod.py--config~/astropod.confMake sure the file ends with a newline. Cron will then execute the script every
day at 1:00 as the usertelegram. Join theastropodchannel to see the
result.Supervisor process state notificationsSupervisorcontrols and monitors processes. It can start processes at boot,
restart them if they fail and also report on their status.Supervisor-alertis a simple plugin for Supervisor that sends messages on process state updates
to an arbitrary program. Using it with telegram-send (by using the--telegramoption), you can receive notifications whenever one of your processes exits.Usage from PythonBecause telegram-send is written in Python, you can use its functionality
directly from other Python programs:import telegram_send. Look at thedocumentation.Cron job outputCron has a built-in feature to send the output of jobs via mail. In this example
we'll send cron output over Telegram. Here is the example cron job:SHELL=/bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin# m h dom mon dow user  command0****rahielchronic~/script.bash2>&1|telegram-send-g--stdinThe command ischronic ~/script.bash 2>&1 | telegram-send -g --stdin. We run
the cron job withchronic, a tool frommoreutils. Chronic makes sure that
a command produces no output unless it fails. No news is good news! If our
script fails, chronic passes the output through the pipe (|) to telegram-send.
We also send the output of stderr by redirecting stderr to stdout (2>&1).Here we've installed telegram-send system-wide withsudoand use the global
configuration (-g) sotelegram-sendis usable in the cron job. Place the
cron job in/etc/cron.d/and make sure the file ends with a newline. The
filename can't contain a.either.ASCII picturesCombining--stdinand--pre, we can send ASCII pictures:ncal-bh|telegram-send--pre--stdin
apt-getmoo|telegram-send--pre--stdinQuestions & AnswersHow to use a proxy?You can set a proxy with an environment variable:https_proxy=https://ip:porttelegram-send"hello"Within Python you can set the environment variable with:os.environ["https_proxy"]="https://ip:port"If you have a SOCKS proxy, you need to install support for it:pip3installpysocksIf you installedtelegram-sendwithsudo, you also need to installpysockswithsudo.How to send the same message to multiple users?First you configure telegram-send for every recipient you want to send messages to:telegram-send--configuser1.conf--configure
telegram-send--configgroup1.conf--configure-group
telegram-send--configgroup2.conf--configure-group
telegram-send--configchannel1.conf--configure-channelYou will need all of the above config files. Now to send a message to all of the
above configured recipients:telegram-send--configuser1.conf\--configgroup1.conf\--configgroup2.conf\--configchannel1.conf\"Multicasting!"How to get sticker files?In Telegram Desktop you right click a sticker and choose "Save Image As...". You
can then send the savedwebpfile withtelegram-send --sticker sticker.webp.Uninstallationsudotelegram-send--clean
sudopip3uninstalltelegram-sendOr if you installed it for a single user:telegram-send--clean
pip3uninstalltelegram-send