Telegram.sh
Send telegram messages right from your command line.
Install / Use
/learn @fabianonline/Telegram.shREADME
telegram.sh
What does it do?
Telegram offers the feature of bots. A bot allows automated systems and servers to send telegram messages to users. Quite often it can be useful to send stuff to yourself. A classic application of this would be receiving results of cronjob tasks via email. Or maybe you want to grab a small file from your server, but downloading it via SCP would be too much work or wouldn't work at all because firewall stuff / filters / proxy servers / whatever.
telegram.sh allows you to send such things via telegram.
Examples
# Send a message to yourself, using a bot token and a chat_id.
telegram -t 123456:AbcDefGhi-JklMnoPrw -c 12345 "Hello, World."
# You can define the token and chat_id in environment variables or config files.
# Then you can just use
telegram "Hello, World."
# Split them into multiple lines
telegram "Hello,"$'\n'"World."
# or
echo -e "Hello\nWorld." | telegram -
# Or you send this one message to another chat:
telegram -c 6789 "Hello, Mars."
# You can also send messages to multiple chats:
telegram -c 1234 -c 6789 "Hello, Planets."
# Send stuff via stdin. It will automatically be sent as monospace code:
ls -l | telegram -
# Use markdown in your message (HTML is available as well):
telegram -M "To *boldly* go, where _no man_ has gone before."
# Send a local file.
telegram -f results.txt "Here are the results."
# Or an image, giving you a preview and stuff.
telegram -i solar_system.png # We don't need to send a message if we're
# sending a file.
# Or a video.
telegram -V video.mp4
# Use environment variables to tell curl to use a proxy server:
HTTPS_PROXY="socks5://127.0.0.1:1234" telegram "Hello, World."
# Check the curl documentation for more info about supported proxy
# protocols.
Requirements
Only bash and curl. Listing known chats with -l requires jq, but you can
easily use this tool without this.
Installation / configuration
- Grab the latest
telegramfile from this repository and put it somewhere. - Create a bot at telegram:
- Search for the user
@botfatherat telegram and start a chat with him. - Use the
/newbotcommand to create a new bot. BotFather will give you a token. Keep this.
- Search for the user
- Use your telegram client to send a message to your new bot. Any message will do.
- Find your chat id. Run telegram.sh with
-l:telegram -t <TOKEN> -l. If you havejqinstalled, it will nicely list its known chats. The number at the front is your chat id. If you don't havejqinstalled, it will print a bit of JSON data and tell you what to look for. - You now have your token and your chat id. Send yourself a first message:
telegram -t <TOKEN> -c <CHAT ID> "Hello there."
Carrying the token and the chat id around can be quite cumbersome. You can define them in 6 different ways:
- In a file
/etc/telegram.sh.conf. - In a file
~/.telegram.sh. - In a file
~/.telegram.sh.conf. - In a file in the same folder as this script, called
./telegram.sh.conf. - In environment variables TELEGRAM_TOKEN and TELEGRAM_CHAT.
- As seen above as parameters.
Later variants overwrite earlier variants, so you could define token and
chat in /etc/telegram.sh.conf and then overwrite the token with your own
in ~/.telegram.sh or on the command line.
The files should look like this:
TELEGRAM_TOKEN="123456:AbcDefGhi-JlkMno"
TELEGRAM_CHAT="12345678"
Multiple chat ids can be defined in a config file as a bash array:
TELEGRAM_TOKEN="123456:AbcDefGhi-JlkMno"
CHATS=(12345678, 23456789, 34567)
With such config command telegram.sh "Hello world" will deliver message to all listed chat ids.
Please be aware that you should keep your token a secret.
You can also add permanent proxy settings in there by adding:
export HTTPS_PROXY="socks5://127.0.0.1:1234"
See the curl documentation for more information about which proxy protocols are supported.
Docker image
docker build -t telegram:latest .
docker run -it --rm telegram
Changelog
Version 0.5
- New option
-Vto send a video file. - Configuration can now also be set from a file called
.telegram.sh.confin the same folder as this script.
Version 0.4
- New option
-mto receive the last received message. You could use this e.g. to regularly poll the last message and react on commands. Format of the response is<Message ID> <Sender ID> <Chat ID> <Text>. You could use this feature like this:telegram -m | read message_id sender_id chat_id text echo "MessageID: $message_id" echo "Text: $text"
Contributors
- abadroot
- dbarthe
- hugows
- kgizdov
- KOPACb
- rerime
- rusalex
- sergiks
Related Skills
node-connect
351.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.8kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
