diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-04-12 01:11:18 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-04-12 01:11:18 +0000 |
| commit | 197ee9466e551706073a7421c37ec6c6d3557cf8 (patch) | |
| tree | f1160528e6307e3296f57a65d25fce274832bc81 /python-telegram-send.spec | |
| parent | 5cd1805d889f48886cc284c5632d97335e268d9d (diff) | |
automatic import of python-telegram-send
Diffstat (limited to 'python-telegram-send.spec')
| -rw-r--r-- | python-telegram-send.spec | 1011 |
1 files changed, 1011 insertions, 0 deletions
diff --git a/python-telegram-send.spec b/python-telegram-send.spec new file mode 100644 index 0000000..7b93511 --- /dev/null +++ b/python-telegram-send.spec @@ -0,0 +1,1011 @@ +%global _empty_manifest_terminate_build 0 +Name: python-telegram-send +Version: 0.34 +Release: 1 +Summary: Send messages and files over Telegram from the command-line. +License: GPLv3+ +URL: https://github.com/rahiel/telegram-send +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/92/8c/0ef8546d52cfc5bfb942033cb8e1064cf14e6b1c754196229cda5ecaf8a4/telegram-send-0.34.tar.gz +BuildArch: noarch + +Requires: python3-telegram-bot +Requires: python3-colorama +Requires: python3-appdirs + +%description +# telegram-send + +[](https://pypi.org/project/telegram-send/) +[](https://pypi.org/project/telegram-send/) +[](https://pypistats.org/packages/telegram-send) +[](https://github.com/rahiel/telegram-send/blob/master/LICENSE.txt) + +Telegram-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. + +<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc --> +**Table of Contents** + +- [Usage](#usage) +- [Installation](#installation) +- [Examples](#examples) + - [Alert on completion of shell commands](#alert-on-completion-of-shell-commands) + - [Periodic messages with cron](#periodic-messages-with-cron) + - [Supervisor process state notifications](#supervisor-process-state-notifications) + - [Usage from Python](#usage-from-python) + - [Cron job output](#cron-job-output) + - [ASCII pictures](#ascii-pictures) +- [Questions & Answers](#questions--answers) + - [How to use a proxy?](#how-to-use-a-proxy) + - [How to send the same message to multiple users?](#how-to-send-the-same-message-to-multiple-users) +- [Uninstallation](#uninstallation) + +<!-- markdown-toc end --> + +# Usage + +To send a message: +``` shell +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: +```shell +telegram-send --format markdown "Only the *bold* use _italics_" +telegram-send --format html "<pre>fixed-width messages</pre> are <i>also</i> supported" +telegram-send --format markdown "||Do good and find good!||" +``` +Note that not all Markdown syntax or all HTML tags are supported. For more +information on supported formatting, see the [formatting options][]. We use the +MarkdownV2 style for Markdown. + +[formatting options]: https://core.telegram.org/bots/api#formatting-options + +The `--pre` flag formats messages as fixed-width text: +``` shell +telegram-send --pre "monospace" +``` + +To send a message without link previews: +``` shell +telegram-send --disable-web-page-preview "https://github.com/rahiel/telegram-send" +``` + +To send a message from stdin: +``` shell +printf 'With\nmultiple\nlines' | telegram-send --stdin +``` +With this option you can send the output of any program. + +To send a file (maximum file size of 50 MB) with an optional caption: +``` shell +telegram-send --file quran.pdf --caption "The Noble Qur'an" +``` + +To send an image (maximum file size of 10 MB) with an optional caption: +``` shell +telegram-send --image moon.jpg --caption "The Moon at Night" +``` + +To send a sticker: +``` shell +telegram-send --sticker sticker.webp +``` + +To 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: +``` shell +telegram-send --animation kitty.gif --caption "🐱" +``` + +To send an MP4 video (maximum file size of 50 MB) with an optional caption: +``` shell +telegram-send --video birds.mp4 --caption "Singing Birds" +``` + +To send an audio file with an optional caption: +``` shell +telegram-send --audio "Pachelbel's Canon.mp3" --caption "Johann Pachelbel - Canon in D" +``` + +To send a location via latitude and longitude: +``` shell +telegram-send --location 35.5398033 -79.7488965 +``` + +All captions can be optionally formatted with Markdown or html: +``` shell +telegram-send --image moon.jpg --caption "The __Moon__ at *Night*" --format markdown +``` + +Telegram-send integrates into your file manager (Thunar, Nautilus and Nemo): + + + +# Installation + +Install telegram-send system-wide with pip: +``` shell +sudo pip3 install telegram-send +``` + +Or if you want to install it for a single user without root permissions: +``` shell +pip3 install telegram-send +``` + +If installed for a single user you need to add `~/.local/bin` to their path, +refer to this [guide][] for instructions. + +And finally configure it with `telegram-send --configure` if you want to send to +your account, `telegram-send --configure-group` to send to a group or with +`telegram-send --configure-channel` to send to a channel. + +Use the `--config` option 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 `-g` option uses the global configuration at `/etc/telegram-send.conf`. +Configure it once: `sudo telegram-send -g --configure` and all users on the +system can send messages with this config: `telegram-send -g "GNU"` (provided +you've installed it system-wide.) + +[guide]: https://www.rahielkasim.com/installing-programs-from-non-system-package-managers-without-sudo/ + +# Examples + +Here are some examples to get a taste of what is possible with telegram-send. + +## Alert on completion of shell commands + +Receive an alert when long-running commands finish with the `tg` alias, based on +Ubuntu's built-in `alert`. Put the following in your `~/.bashrc`: + +``` shell +alias tg='telegram-send "$([ $? = 0 ] && echo "" || echo "error: ") $(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*tg$//'\'')"' +``` + +And then use it like `sleep 10; tg`. This will send you a message with the +completed command, in this case `sleep 10`. + +What if you started a program and forgot to set the alert? Suspend the program +with Ctrl+Z and then enter `fg; telegram-send "your message here"`. + +To automatically receive notifications for long running commands, use [ntfy][] +with the Telegram backend. + +[ntfy]: https://github.com/dschep/ntfy + +## Periodic messages with cron + +We can combine telegram-send with [cron][] to periodically send messages. Here +we will set up a cron job to send the [Astronomy Picture of the Day][apod] to +the [astropod][] channel. + +Create a bot by talking to the [BotFather][], 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 run `telegram-send --configure-channel +--config astropod.conf`. We will use the [apod.py][] script 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 +SHELL=/bin/sh +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + +# m h dom mon dow user command +0 1 * * * telegram ~/apod.py --config ~/astropod.conf +``` + +Make sure the file ends with a newline. Cron will then execute the script every +day at 1:00 as the user `telegram`. Join the [astropod][] channel to see the +result. + +[cron]: https://en.wikipedia.org/wiki/Cron +[apod]: http://apod.nasa.gov/apod/astropix.html +[astropod]: https://telegram.me/astropod +[botfather]: https://telegram.me/botfather +[apod.py]: https://github.com/rahiel/telegram-send/blob/master/examples/apod.py + +## Supervisor process state notifications + +[Supervisor][] controls and monitors processes. It can start processes at boot, +restart them if they fail and also report on their status. [Supervisor-alert][] +is a simple plugin for Supervisor that sends messages on process state updates +to an arbitrary program. Using it with telegram-send (by using the `--telegram` +option), you can receive notifications whenever one of your processes exits. + +[supervisor]: http://supervisord.org +[supervisor-alert]: https://github.com/rahiel/supervisor-alert + +## Usage from Python + +Because telegram-send is written in Python, you can use its functionality +directly from other Python programs: `import telegram_send`. Look at the +[documentation][]. + +[documentation]: https://www.rahielkasim.com/telegram-send/docs/api/ + +## Cron job output + +Cron 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 +SHELL=/bin/sh +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + +# m h dom mon dow user command +0 * * * * rahiel chronic ~/script.bash 2>&1 | telegram-send -g --stdin +``` + +The command is `chronic ~/script.bash 2>&1 | telegram-send -g --stdin`. We run +the cron job with `chronic`, a tool from [moreutils][]. 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 with `sudo` and use the global +configuration (`-g`) so `telegram-send` is 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. + +[moreutils]: https://joeyh.name/code/moreutils/ + +## ASCII pictures + +Combining `--stdin` and `--pre`, we can send ASCII pictures: + +``` shell +ncal -bh | telegram-send --pre --stdin +apt-get moo | telegram-send --pre --stdin +``` + +# Questions & Answers + +## How to use a proxy? + +You can set a proxy with an environment variable: +``` shell +https_proxy=https://ip:port telegram-send "hello" +``` + +Within Python you can set the environment variable with: +``` python +os.environ["https_proxy"] = "https://ip:port" +``` + +If you have a SOCKS proxy, you need to install support for it: +``` python +pip3 install pysocks +``` +If you installed `telegram-send` with `sudo`, you also need to install `pysocks` +with `sudo`. + +## How to send the same message to multiple users? + +First you configure telegram-send for every recipient you want to send messages to: +``` shell +telegram-send --config user1.conf --configure +telegram-send --config group1.conf --configure-group +telegram-send --config group2.conf --configure-group +telegram-send --config channel1.conf --configure-channel +``` + +You will need all of the above config files. Now to send a message to all of the +above configured recipients: +``` shell +telegram-send --config user1.conf \ + --config group1.conf \ + --config group2.conf \ + --config channel1.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 saved `webp` file with `telegram-send --sticker sticker.webp`. + +# Uninstallation + +``` shell +sudo telegram-send --clean +sudo pip3 uninstall telegram-send +``` + +Or if you installed it for a single user: +``` shell +telegram-send --clean +pip3 uninstall telegram-send +``` + + + + +%package -n python3-telegram-send +Summary: Send messages and files over Telegram from the command-line. +Provides: python-telegram-send +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-telegram-send +# telegram-send + +[](https://pypi.org/project/telegram-send/) +[](https://pypi.org/project/telegram-send/) +[](https://pypistats.org/packages/telegram-send) +[](https://github.com/rahiel/telegram-send/blob/master/LICENSE.txt) + +Telegram-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. + +<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc --> +**Table of Contents** + +- [Usage](#usage) +- [Installation](#installation) +- [Examples](#examples) + - [Alert on completion of shell commands](#alert-on-completion-of-shell-commands) + - [Periodic messages with cron](#periodic-messages-with-cron) + - [Supervisor process state notifications](#supervisor-process-state-notifications) + - [Usage from Python](#usage-from-python) + - [Cron job output](#cron-job-output) + - [ASCII pictures](#ascii-pictures) +- [Questions & Answers](#questions--answers) + - [How to use a proxy?](#how-to-use-a-proxy) + - [How to send the same message to multiple users?](#how-to-send-the-same-message-to-multiple-users) +- [Uninstallation](#uninstallation) + +<!-- markdown-toc end --> + +# Usage + +To send a message: +``` shell +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: +```shell +telegram-send --format markdown "Only the *bold* use _italics_" +telegram-send --format html "<pre>fixed-width messages</pre> are <i>also</i> supported" +telegram-send --format markdown "||Do good and find good!||" +``` +Note that not all Markdown syntax or all HTML tags are supported. For more +information on supported formatting, see the [formatting options][]. We use the +MarkdownV2 style for Markdown. + +[formatting options]: https://core.telegram.org/bots/api#formatting-options + +The `--pre` flag formats messages as fixed-width text: +``` shell +telegram-send --pre "monospace" +``` + +To send a message without link previews: +``` shell +telegram-send --disable-web-page-preview "https://github.com/rahiel/telegram-send" +``` + +To send a message from stdin: +``` shell +printf 'With\nmultiple\nlines' | telegram-send --stdin +``` +With this option you can send the output of any program. + +To send a file (maximum file size of 50 MB) with an optional caption: +``` shell +telegram-send --file quran.pdf --caption "The Noble Qur'an" +``` + +To send an image (maximum file size of 10 MB) with an optional caption: +``` shell +telegram-send --image moon.jpg --caption "The Moon at Night" +``` + +To send a sticker: +``` shell +telegram-send --sticker sticker.webp +``` + +To 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: +``` shell +telegram-send --animation kitty.gif --caption "🐱" +``` + +To send an MP4 video (maximum file size of 50 MB) with an optional caption: +``` shell +telegram-send --video birds.mp4 --caption "Singing Birds" +``` + +To send an audio file with an optional caption: +``` shell +telegram-send --audio "Pachelbel's Canon.mp3" --caption "Johann Pachelbel - Canon in D" +``` + +To send a location via latitude and longitude: +``` shell +telegram-send --location 35.5398033 -79.7488965 +``` + +All captions can be optionally formatted with Markdown or html: +``` shell +telegram-send --image moon.jpg --caption "The __Moon__ at *Night*" --format markdown +``` + +Telegram-send integrates into your file manager (Thunar, Nautilus and Nemo): + + + +# Installation + +Install telegram-send system-wide with pip: +``` shell +sudo pip3 install telegram-send +``` + +Or if you want to install it for a single user without root permissions: +``` shell +pip3 install telegram-send +``` + +If installed for a single user you need to add `~/.local/bin` to their path, +refer to this [guide][] for instructions. + +And finally configure it with `telegram-send --configure` if you want to send to +your account, `telegram-send --configure-group` to send to a group or with +`telegram-send --configure-channel` to send to a channel. + +Use the `--config` option 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 `-g` option uses the global configuration at `/etc/telegram-send.conf`. +Configure it once: `sudo telegram-send -g --configure` and all users on the +system can send messages with this config: `telegram-send -g "GNU"` (provided +you've installed it system-wide.) + +[guide]: https://www.rahielkasim.com/installing-programs-from-non-system-package-managers-without-sudo/ + +# Examples + +Here are some examples to get a taste of what is possible with telegram-send. + +## Alert on completion of shell commands + +Receive an alert when long-running commands finish with the `tg` alias, based on +Ubuntu's built-in `alert`. Put the following in your `~/.bashrc`: + +``` shell +alias tg='telegram-send "$([ $? = 0 ] && echo "" || echo "error: ") $(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*tg$//'\'')"' +``` + +And then use it like `sleep 10; tg`. This will send you a message with the +completed command, in this case `sleep 10`. + +What if you started a program and forgot to set the alert? Suspend the program +with Ctrl+Z and then enter `fg; telegram-send "your message here"`. + +To automatically receive notifications for long running commands, use [ntfy][] +with the Telegram backend. + +[ntfy]: https://github.com/dschep/ntfy + +## Periodic messages with cron + +We can combine telegram-send with [cron][] to periodically send messages. Here +we will set up a cron job to send the [Astronomy Picture of the Day][apod] to +the [astropod][] channel. + +Create a bot by talking to the [BotFather][], 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 run `telegram-send --configure-channel +--config astropod.conf`. We will use the [apod.py][] script 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 +SHELL=/bin/sh +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + +# m h dom mon dow user command +0 1 * * * telegram ~/apod.py --config ~/astropod.conf +``` + +Make sure the file ends with a newline. Cron will then execute the script every +day at 1:00 as the user `telegram`. Join the [astropod][] channel to see the +result. + +[cron]: https://en.wikipedia.org/wiki/Cron +[apod]: http://apod.nasa.gov/apod/astropix.html +[astropod]: https://telegram.me/astropod +[botfather]: https://telegram.me/botfather +[apod.py]: https://github.com/rahiel/telegram-send/blob/master/examples/apod.py + +## Supervisor process state notifications + +[Supervisor][] controls and monitors processes. It can start processes at boot, +restart them if they fail and also report on their status. [Supervisor-alert][] +is a simple plugin for Supervisor that sends messages on process state updates +to an arbitrary program. Using it with telegram-send (by using the `--telegram` +option), you can receive notifications whenever one of your processes exits. + +[supervisor]: http://supervisord.org +[supervisor-alert]: https://github.com/rahiel/supervisor-alert + +## Usage from Python + +Because telegram-send is written in Python, you can use its functionality +directly from other Python programs: `import telegram_send`. Look at the +[documentation][]. + +[documentation]: https://www.rahielkasim.com/telegram-send/docs/api/ + +## Cron job output + +Cron 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 +SHELL=/bin/sh +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + +# m h dom mon dow user command +0 * * * * rahiel chronic ~/script.bash 2>&1 | telegram-send -g --stdin +``` + +The command is `chronic ~/script.bash 2>&1 | telegram-send -g --stdin`. We run +the cron job with `chronic`, a tool from [moreutils][]. 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 with `sudo` and use the global +configuration (`-g`) so `telegram-send` is 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. + +[moreutils]: https://joeyh.name/code/moreutils/ + +## ASCII pictures + +Combining `--stdin` and `--pre`, we can send ASCII pictures: + +``` shell +ncal -bh | telegram-send --pre --stdin +apt-get moo | telegram-send --pre --stdin +``` + +# Questions & Answers + +## How to use a proxy? + +You can set a proxy with an environment variable: +``` shell +https_proxy=https://ip:port telegram-send "hello" +``` + +Within Python you can set the environment variable with: +``` python +os.environ["https_proxy"] = "https://ip:port" +``` + +If you have a SOCKS proxy, you need to install support for it: +``` python +pip3 install pysocks +``` +If you installed `telegram-send` with `sudo`, you also need to install `pysocks` +with `sudo`. + +## How to send the same message to multiple users? + +First you configure telegram-send for every recipient you want to send messages to: +``` shell +telegram-send --config user1.conf --configure +telegram-send --config group1.conf --configure-group +telegram-send --config group2.conf --configure-group +telegram-send --config channel1.conf --configure-channel +``` + +You will need all of the above config files. Now to send a message to all of the +above configured recipients: +``` shell +telegram-send --config user1.conf \ + --config group1.conf \ + --config group2.conf \ + --config channel1.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 saved `webp` file with `telegram-send --sticker sticker.webp`. + +# Uninstallation + +``` shell +sudo telegram-send --clean +sudo pip3 uninstall telegram-send +``` + +Or if you installed it for a single user: +``` shell +telegram-send --clean +pip3 uninstall telegram-send +``` + + + + +%package help +Summary: Development documents and examples for telegram-send +Provides: python3-telegram-send-doc +%description help +# telegram-send + +[](https://pypi.org/project/telegram-send/) +[](https://pypi.org/project/telegram-send/) +[](https://pypistats.org/packages/telegram-send) +[](https://github.com/rahiel/telegram-send/blob/master/LICENSE.txt) + +Telegram-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. + +<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc --> +**Table of Contents** + +- [Usage](#usage) +- [Installation](#installation) +- [Examples](#examples) + - [Alert on completion of shell commands](#alert-on-completion-of-shell-commands) + - [Periodic messages with cron](#periodic-messages-with-cron) + - [Supervisor process state notifications](#supervisor-process-state-notifications) + - [Usage from Python](#usage-from-python) + - [Cron job output](#cron-job-output) + - [ASCII pictures](#ascii-pictures) +- [Questions & Answers](#questions--answers) + - [How to use a proxy?](#how-to-use-a-proxy) + - [How to send the same message to multiple users?](#how-to-send-the-same-message-to-multiple-users) +- [Uninstallation](#uninstallation) + +<!-- markdown-toc end --> + +# Usage + +To send a message: +``` shell +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: +```shell +telegram-send --format markdown "Only the *bold* use _italics_" +telegram-send --format html "<pre>fixed-width messages</pre> are <i>also</i> supported" +telegram-send --format markdown "||Do good and find good!||" +``` +Note that not all Markdown syntax or all HTML tags are supported. For more +information on supported formatting, see the [formatting options][]. We use the +MarkdownV2 style for Markdown. + +[formatting options]: https://core.telegram.org/bots/api#formatting-options + +The `--pre` flag formats messages as fixed-width text: +``` shell +telegram-send --pre "monospace" +``` + +To send a message without link previews: +``` shell +telegram-send --disable-web-page-preview "https://github.com/rahiel/telegram-send" +``` + +To send a message from stdin: +``` shell +printf 'With\nmultiple\nlines' | telegram-send --stdin +``` +With this option you can send the output of any program. + +To send a file (maximum file size of 50 MB) with an optional caption: +``` shell +telegram-send --file quran.pdf --caption "The Noble Qur'an" +``` + +To send an image (maximum file size of 10 MB) with an optional caption: +``` shell +telegram-send --image moon.jpg --caption "The Moon at Night" +``` + +To send a sticker: +``` shell +telegram-send --sticker sticker.webp +``` + +To 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: +``` shell +telegram-send --animation kitty.gif --caption "🐱" +``` + +To send an MP4 video (maximum file size of 50 MB) with an optional caption: +``` shell +telegram-send --video birds.mp4 --caption "Singing Birds" +``` + +To send an audio file with an optional caption: +``` shell +telegram-send --audio "Pachelbel's Canon.mp3" --caption "Johann Pachelbel - Canon in D" +``` + +To send a location via latitude and longitude: +``` shell +telegram-send --location 35.5398033 -79.7488965 +``` + +All captions can be optionally formatted with Markdown or html: +``` shell +telegram-send --image moon.jpg --caption "The __Moon__ at *Night*" --format markdown +``` + +Telegram-send integrates into your file manager (Thunar, Nautilus and Nemo): + + + +# Installation + +Install telegram-send system-wide with pip: +``` shell +sudo pip3 install telegram-send +``` + +Or if you want to install it for a single user without root permissions: +``` shell +pip3 install telegram-send +``` + +If installed for a single user you need to add `~/.local/bin` to their path, +refer to this [guide][] for instructions. + +And finally configure it with `telegram-send --configure` if you want to send to +your account, `telegram-send --configure-group` to send to a group or with +`telegram-send --configure-channel` to send to a channel. + +Use the `--config` option 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 `-g` option uses the global configuration at `/etc/telegram-send.conf`. +Configure it once: `sudo telegram-send -g --configure` and all users on the +system can send messages with this config: `telegram-send -g "GNU"` (provided +you've installed it system-wide.) + +[guide]: https://www.rahielkasim.com/installing-programs-from-non-system-package-managers-without-sudo/ + +# Examples + +Here are some examples to get a taste of what is possible with telegram-send. + +## Alert on completion of shell commands + +Receive an alert when long-running commands finish with the `tg` alias, based on +Ubuntu's built-in `alert`. Put the following in your `~/.bashrc`: + +``` shell +alias tg='telegram-send "$([ $? = 0 ] && echo "" || echo "error: ") $(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*tg$//'\'')"' +``` + +And then use it like `sleep 10; tg`. This will send you a message with the +completed command, in this case `sleep 10`. + +What if you started a program and forgot to set the alert? Suspend the program +with Ctrl+Z and then enter `fg; telegram-send "your message here"`. + +To automatically receive notifications for long running commands, use [ntfy][] +with the Telegram backend. + +[ntfy]: https://github.com/dschep/ntfy + +## Periodic messages with cron + +We can combine telegram-send with [cron][] to periodically send messages. Here +we will set up a cron job to send the [Astronomy Picture of the Day][apod] to +the [astropod][] channel. + +Create a bot by talking to the [BotFather][], 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 run `telegram-send --configure-channel +--config astropod.conf`. We will use the [apod.py][] script 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 +SHELL=/bin/sh +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + +# m h dom mon dow user command +0 1 * * * telegram ~/apod.py --config ~/astropod.conf +``` + +Make sure the file ends with a newline. Cron will then execute the script every +day at 1:00 as the user `telegram`. Join the [astropod][] channel to see the +result. + +[cron]: https://en.wikipedia.org/wiki/Cron +[apod]: http://apod.nasa.gov/apod/astropix.html +[astropod]: https://telegram.me/astropod +[botfather]: https://telegram.me/botfather +[apod.py]: https://github.com/rahiel/telegram-send/blob/master/examples/apod.py + +## Supervisor process state notifications + +[Supervisor][] controls and monitors processes. It can start processes at boot, +restart them if they fail and also report on their status. [Supervisor-alert][] +is a simple plugin for Supervisor that sends messages on process state updates +to an arbitrary program. Using it with telegram-send (by using the `--telegram` +option), you can receive notifications whenever one of your processes exits. + +[supervisor]: http://supervisord.org +[supervisor-alert]: https://github.com/rahiel/supervisor-alert + +## Usage from Python + +Because telegram-send is written in Python, you can use its functionality +directly from other Python programs: `import telegram_send`. Look at the +[documentation][]. + +[documentation]: https://www.rahielkasim.com/telegram-send/docs/api/ + +## Cron job output + +Cron 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 +SHELL=/bin/sh +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + +# m h dom mon dow user command +0 * * * * rahiel chronic ~/script.bash 2>&1 | telegram-send -g --stdin +``` + +The command is `chronic ~/script.bash 2>&1 | telegram-send -g --stdin`. We run +the cron job with `chronic`, a tool from [moreutils][]. 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 with `sudo` and use the global +configuration (`-g`) so `telegram-send` is 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. + +[moreutils]: https://joeyh.name/code/moreutils/ + +## ASCII pictures + +Combining `--stdin` and `--pre`, we can send ASCII pictures: + +``` shell +ncal -bh | telegram-send --pre --stdin +apt-get moo | telegram-send --pre --stdin +``` + +# Questions & Answers + +## How to use a proxy? + +You can set a proxy with an environment variable: +``` shell +https_proxy=https://ip:port telegram-send "hello" +``` + +Within Python you can set the environment variable with: +``` python +os.environ["https_proxy"] = "https://ip:port" +``` + +If you have a SOCKS proxy, you need to install support for it: +``` python +pip3 install pysocks +``` +If you installed `telegram-send` with `sudo`, you also need to install `pysocks` +with `sudo`. + +## How to send the same message to multiple users? + +First you configure telegram-send for every recipient you want to send messages to: +``` shell +telegram-send --config user1.conf --configure +telegram-send --config group1.conf --configure-group +telegram-send --config group2.conf --configure-group +telegram-send --config channel1.conf --configure-channel +``` + +You will need all of the above config files. Now to send a message to all of the +above configured recipients: +``` shell +telegram-send --config user1.conf \ + --config group1.conf \ + --config group2.conf \ + --config channel1.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 saved `webp` file with `telegram-send --sticker sticker.webp`. + +# Uninstallation + +``` shell +sudo telegram-send --clean +sudo pip3 uninstall telegram-send +``` + +Or if you installed it for a single user: +``` shell +telegram-send --clean +pip3 uninstall telegram-send +``` + + + + +%prep +%autosetup -n telegram-send-0.34 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-telegram-send -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed Apr 12 2023 Python_Bot <Python_Bot@openeuler.org> - 0.34-1 +- Package Spec generated |
