shell2telegram alternatives and similar packages
Based on the "Utility" category.
Alternatively, view shell2telegram alternatives based on common mentions on social networks and blogs.
-
Koazee
A StreamLike, Immutable, Lazy Loading and smart Golang Library to deal with slices. -
gotabulate
Gotabulate - Easily pretty-print your tabular data with Go -
strutil-go
Golang metrics for calculating string similarity and other string utility functions -
regroup
Match regex group into go struct using struct tags and automatic parsing -
html2data
Library and cli for extracting data from HTML via CSS selectors -
frontmatter
Go library for detecting and decoding various content front matter formats -
Tagify
Tagify produces a set of tags from a given source. Source can be either an HTML page, a Markdown document or a plain text. Supports English, Russian, Chinese, Hindi, Spanish, Arabic, Japanese, German, Hebrew, French and Korean languages. -
parseargs-go
A string argument parser that understands quotes and backslashes -
TySug
A project around helping to prevent typing typos. TySug (Typo Suggestions) suggests alternative words with respect to keyboard layouts
Static code analysis for 29 languages.
Do you think we are missing an alternative of shell2telegram or a related project?
README
shell2telegram
Create Telegram bot from command-line
Install
MacOS:
brew tap msoap/tools
brew install shell2telegram
# update:
brew upgrade shell2telegram
Or download binaries from: releases (OS X/Linux/Windows/RaspberryPi)
Or build from source:
# install Go
# set $GOPATH if needed
go get -u github.com/msoap/shell2telegram
ln -s $GOPATH/bin/shell2telegram ~/bin/shell2telegram # or add $GOPATH/bin to $PATH
Or build image and run with Docker.
Example of test-bot.Dockerfile
for bot who say current date:
FROM msoap/shell2telegram
# may be install some alpine packages:
# RUN apk add --no-cache ...
ENV TB_TOKEN=*******
CMD ["/date", "date"]
And build and run:
docker build -f test-bot.Dockerfile -t test-bot .
docker run --rm test-bot
# or run with set token from command line
docker run -e TB_TOKEN=******* --rm test-bot
Mirror docker repository: quay.io/msoap/shell2telegram:latest
Using snap (Ubuntu or any Linux distribution with snap):
# install stable version:
sudo snap install shell2telegram
# install the latest version:
sudo snap install --edge shell2telegram
# update
sudo snap refresh shell2telegram
Usage
Get token from BotFather bot, and set TB_TOKEN var in shell
export TB_TOKEN=*******
shell2telegram [options] /chat_command 'shell command' /chat_command2 'shell command2'
options:
-allow-users=<NAMES> : telegram users who are allowed to chat with the bot ("user1,user2")
-root-users=<NAMES> : telegram users, who confirms new users in their private chat ("user1,user2")
-allow-all : allow all users (DANGEROUS!)
-add-exit : adding "/shell2telegram exit" command for terminate bot (for roots only)
-log-commands : logging all commands
-tb-token=<TOKEN> : setting bot token (or set TB_TOKEN variable)
-timeout=N : setting timeout for bot (default 60 sec)
-description=<TITLE> : setting description of bot
-bind-addr=<ADDRESS> : address to listen incoming webhook requests
-webhook=<URL> : url for registering a webhook
-persistent-users : load/save users from file (default ~/.config/shell2telegram.json)
-users-db=<FILENAME> : file for store users
-cache=N : caching command out for N seconds
-one-thread : run each shell command in one thread
-public : bot is public (don't add /auth* commands)
-sh-timeout=N : set timeout for execute shell command (in seconds)
-shell="shell" : shell for execute command, "" - without shell (default "sh")
-version
-help
If not define -allow-users/-root-users options - authorize users via secret code from console or via chat with exists root users.
All text after /chat_command will be sent to STDIN of shell command.
Special chat commands
for private chats only:
/:plain_text
- get user message without any /command.
TODO:
/:image
- for get image from user. Example:/:image 'cat > file.jpg; echo ok'
/:file
- for get file from user/:location
- for get geo-location from user
Possible long-running shell processes (for example alarm/timer bot).
Autodetect images (png/jpg/gif/bmp) out from shell command, for example: /get_image 'cat file.png'
Setting environment variables for shell commands:
- S2T_LOGIN - telegram @login (may be empty)
- S2T_USERID - telegram user ID
- S2T_USERNAME - telegram user name
- S2T_CHATID - chat ID
Modificators for bot commands
:desc
- setting the description of command,/cmd:desc="Command name" 'shell cmd'
:vars
- to create environment variables instead of text output to STDIN,/cmd:vars=VAR1,VAR2 'echo $VAR1 / $VAR2'
:md
- to send message as markdown text,/cmd:md 'echo "*bold* and _italic_"'
TODO:
/cmd:cron=3600
— periodic exec command,/cmd:on args
- on,/cmd:off
- off
Predefined bot commands
/help
- list available commands/auth
- begin authorize new user/auth <CODE>
- authorize with code from console or from exists root user/authroot
- same for new root user/authroot <CODE>
- same for new root user
for root users only:
/shell2telegram stat
- show users statistics/shell2telegram search <query>
- search users by name/id/shell2telegram ban <user_id|@username>
- ban user/shell2telegram exit
- terminate bot (for run with -add-exit)/shell2telegram desc <description>
- set bot description/shell2telegram rm </command>
- delete command/shell2telegram broadcast_to_root <message>
- send message to all root users in private chat/shell2telegram message_to_user <user_id|@username> <message>
- send message to user in private chat/shell2telegram version
- show version
Examples
# system information
shell2telegram /top:desc="System information" 'top -l 1 | head -10' /date 'date' /ps 'ps aux -m | head -20'
# sort any input
shell2telegram /:plain_text sort
# alarm bot:
# /alarm time_in_seconds message
shell2telegram /alarm:vars=SLEEP,MSG 'sleep $SLEEP; echo Hello $S2T_USERNAME; echo Alarm: $MSG'
# sound volume control via telegram (Mac OS)
shell2telegram /get 'osascript -e "output volume of (get volume settings)"' \
/up 'osascript -e "set volume output volume (($(osascript -e "output volume of (get volume settings)")+10))"' \
/down 'osascript -e "set volume output volume (($(osascript -e "output volume of (get volume settings)")-10))"'
# using with webhook instead of poll
shell2telegram -bind-addr=0.0.0.0:8080 -webhook=https://bot.example.com/path/to/bot \
/date /date