telegram-bot-bash/doc/8_custom.md

252 lines
8.5 KiB
Markdown
Raw Normal View History

2019-05-16 14:43:44 +00:00
#### [Home](../README.md)
2019-05-23 10:26:53 +00:00
## Expert use
### Use bashbot from CLI and scripts
2019-05-23 12:06:38 +00:00
You can use bashbot to send *messages*, *locations*, *venues*, *pictures* etc. from command line and scripts
by sourcing it:
2019-05-23 10:26:53 +00:00
2019-05-23 12:06:38 +00:00
*usage:* . bashbot.sh source
2019-05-23 10:26:53 +00:00
2019-05-23 12:06:38 +00:00
Before sourcing 'bahsbot.sh' for interactive and script use, you should export and set BASHBOT_HOME to bashbots installation dir,
e.g. '/usr/local/telegram-bot-bash'. see [Bashbot Environemt](#Bashbot-environment)
2019-05-23 12:06:38 +00:00
**Note:** *If you don't set BASHBOT_HOME bashbot will use the actual directory as NEW home directory
which means it will create all needed files and ask for bot token and botadmin if you are not in the real bot home!*
*Examples:*
```bash
# if you are in the bashbot directory
2019-05-23 12:06:38 +00:00
. bashbot.sh source
# same, but more readable in scripts
source ./bashbot.sh source
# use bashbot config in BASHBOT_HOME from any directory
export BASHBOT_HOME=/usr/local/telegram-bot-bash
source ${BASHBOT_HOME}/bashbot.sh source
# use / create new config in current directory
unset BASHBOT_HOME
source /path/to/bashbot.sh source
```
2019-05-23 10:26:53 +00:00
#### Environment variable exported from bashbot
2019-05-23 12:06:38 +00:00
If you have sourced 'bashbot.sh' you have the following bashot internal variables availible:
```bash
COMMANDS # default: ./commands.sh"
MODULEDIR # default: ./modules"
TOKENFILE # default: ./token"
BOTADMIN # default: ./botadmin"
BOTACL # default: ./botacl"
TMPDIR # default: ./data-bot-bash"
COUNTFILE # default: ./count"
BOTTOKEN # default: content of ${TOKENFILE}
URL # telegram api URL - default: https://api.telegram.org/bot${BOTTOKEN}"
2019-05-23 10:26:53 +00:00
```
#### Interacctive use
2019-05-23 12:06:38 +00:00
For testing your setup or sending messages yoursel you can use bashbot functions from bash command line:
2019-05-23 10:26:53 +00:00
```bash
# are we running bash?
echo $SHELL
/bin/bash
# source bashbot.sh WITHOUT BASHBOT_HOME set
./bashbot.sh source
# output bashbot internal variables
echo $COMMANDS $MODULEDIR $TOKENFILE $BOTADMIN $BOTACL $TMPDIR $COUNTFILE
./commands.sh ./modules ./token ./botadmin ./botacl ./data-bot-bash ./count
2019-05-23 12:06:38 +00:00
2019-05-23 10:26:53 +00:00
# source bashbot.sh WITH BASHBOT_HOME set
export BASHBOT_HOME=/usr/local/telegram-bot-bash
source ./bashbot.sh source
# output bashbot internal variables
echo $COMMANDS $MODULEDIR $TOKENFILE $BOTADMIN $BOTACL $TMPDIR $COUNTFILE
/usr/local/telegram-bot-bash/commands.sh /usr/local/telegram-bot-bash/modules /usr/local/telegram-bot-bash/token
/usr/local/telegram-bot-bash/botadmin /usr/local/telegram-bot-bash/botacl /usr/local/telegram-bot-bash/data-bot-bash
/usr/local/telegram-bot-bash/count
```
2019-05-23 12:06:38 +00:00
After sourcing you can use bashbot functions to send Messages, Locations, Pictures etc. to any Telegram
2019-05-23 10:26:53 +00:00
User or Chat you are in. See [Send Messages](2_usage.md#sending-messages).
*Examples:* You can test this by sending messages to yourself:
```bash
# fist Hello World
send_normal_message "$(< $BOTADMIN)" "Hello World! This is my first message"
# now with some markdown and HTML
send_markdown_message "$(< $BOTADMIN)" '*Hello World!* _This is my first markdown message_'
send_html_message "$(< $BOTADMIN)" '<b>Hello World!</b> <em>This is my first HTML message</em>'
send_keyboard "$(< $BOTADMIN)" 'Do you like it?' '[ "Yep" , "No" ]'
```
2019-05-23 12:06:38 +00:00
Now something more useful ...
2019-05-23 10:26:53 +00:00
```bash
# sending output from system commands:
send_normal_message "$(< $BOTADMIN)" "$(date)"
send_normal_message "$(< $BOTADMIN)" "$(uptime)"
send_normal_message "$(< $BOTADMIN)" '`'$(free)'`'
2019-05-23 12:06:38 +00:00
# same but markdown style 'code' (monospaced)
2019-05-23 10:26:53 +00:00
send_markdown_message "$(< $BOTADMIN)" "\`$(free)\`"
```
### Bashbot environment
2019-05-16 14:43:44 +00:00
This section describe how you can customize bashbot to your needs by setting environment variables.
2019-05-23 10:26:53 +00:00
#### Change file locations
2019-05-16 14:43:44 +00:00
In standard setup bashbot is self containing, this means you can place 'telegram-bot-bash' any location
and run it from there. All files - programm, config, data etc - will reside in 'telegram-bot-bash'.
If you want to have other locations for config, data etc, define and export the following environment variables.
**Note: all specified directories and files must exist or running 'bashbot.sh' will fail.**
2019-05-23 10:26:53 +00:00
##### BASHBOT_ETC
2019-05-16 14:43:44 +00:00
Location of the files ```commands.sh```, ```mycommands.sh```, ```token```, ```botadmin```, ```botacl``` ...
```bash
unset BASHBOT_ETC # keep in telegram-bot-bash (default)
export BASHBOT_ETC "" # keep in telegram-bot-bash
export BASHBOT_ETC "/etc/bashbot" # unix like config location
export BASHBOT_ETC "/etc/bashbot/bot1" # multibot configuration bot 1
export BASHBOT_ETC "/etc/bashbot/bot2" # multibot configuration bot 2
```
e.g. /etc/bashbot
2019-05-23 10:26:53 +00:00
##### BASHBOT_VAR
2019-05-16 14:43:44 +00:00
Location of runtime data ```data-bot-bash```, ```count```
```bash
unset BASHBOT_VAR # keep in telegram-bot-bash (default)
export BASHBOT_VAR "" # keep in telegram-bot-bash
export BASHBOT_VAR "/var/spool/bashbot" # unix like config location
export BASHBOT_VAR "/var/spool/bashbot/bot1" # multibot configuration bot 1
export BASHBOT_VAR "/var/spool/bashbot/bot2" # multibot configuration bot 2
```
2019-05-23 10:26:53 +00:00
##### BASHBOT_JSONSH
2019-05-16 14:43:44 +00:00
Full path to JSON.sh script, default: './JSON.sh/JSON.sh', must end with '/JSON.sh'.
```bash
unset BASHBOT_JSONSH # telegram-bot-bash/JSON.sh/JSON.sh (default)
export BASHBOT_JSONSH "" # telegram-bot-bash/JSON.sh/JSON.sh
export BASHBOT_JSONSH "/usr/local/bin/JSON.sh" # installed in /usr/local/bin
```
2019-05-23 10:26:53 +00:00
##### BASHBOT_HOME
2019-05-23 12:06:38 +00:00
Set bashbot home directory, where bashot will look for additional files.
If BASHBOT_ETC, BASHBOT_VAR or BASHBOT_JSONSH are set the have precedence over BASHBOT_HOME.
2019-05-23 10:26:53 +00:00
2019-05-23 12:06:38 +00:00
This is also usefull if you want to force bashbot to always use full pathnames instead of relative ones.
2019-05-23 10:26:53 +00:00
```bash
unset BASHBOT_HOME # autodetection (default)
export BASHBOT_HOME "" # autodetection
export BASHBOT_HOME "/usr/local/telegram-bot-bash" # unix like location
2019-05-23 12:06:38 +00:00
export BASHBOT_HOME "/usr/local/bin" # Note: you MUST set ETC, VAR and JSONSH to other locations to make this work!
2019-05-23 10:26:53 +00:00
```
----
#### Change config values
2019-05-16 14:43:44 +00:00
2019-05-23 10:26:53 +00:00
##### BASHBOT_URL
2019-05-16 14:43:44 +00:00
Uses given URL instead of offical telegram API URL, useful if you have your own telegram server or for testing.
```bash
unset BASHBOT_URL # use Telegram URL https://api.telegram.org/bot<token> (default)
export BASHBOT_URL "" # use use Telegram https://api.telegram.org/bot<token>
export BASHBOT_URL "https://my.url.com/bot" # use your URL https://my.url.com/bot<token>
```
2019-05-23 10:26:53 +00:00
##### BASHBOT_TOKEN
2019-05-16 14:43:44 +00:00
2019-05-23 10:26:53 +00:00
##### BASHBOT_WGET
2019-05-16 14:43:44 +00:00
Bashbot uses ```curl``` to communicate with telegram server. if ```curl``` is not availible ```wget``` is used.
If 'BASHBOT_WGET' is set to any value (not undefined or not empty) wget is used even is curl is availible.
```bash
unset BASHBOT_WGET # use curl (default)
export BASHBOT_WGET "" # use curl
export BASHBOT_WGET "yes" # use wget
export BASHBOT_WGET "no" # use wget!
```
2019-05-23 10:26:53 +00:00
##### BASHBOT_SLEEP
2019-05-16 14:43:44 +00:00
Instead of polling permanently or with a fixed delay, bashbot offers a simple adaptive polling.
If messages are recieved bashbot polls with no dealy. If no messages are availible bashbot add 100ms delay
for every poll until the maximum of BASHBOT_SLEEP ms.
```bash
unset BASHBOT_SLEEP # 5000ms (default)
export BASHBOT_SLEEP "" # 5000ms
export BASHBOT_SLEEP "1000" # 1s maximum sleep
export BASHBOT_SLEEP "10000" # 10s maximum sleep
export BASHBOT_SLEEP "1" # values < 1000 disables sleep (not recommended)
```
2019-05-23 10:26:53 +00:00
#### Testet configs as of v.07 release
2019-05-16 14:43:44 +00:00
**Note: Environment variables are not stored, you must setup them before every call to bashbot.sh, e.g. from a script.**
2019-05-23 10:26:53 +00:00
##### simple Unix like config, for one bot. bashbot is installed in '/usr/local/telegram-bot-bash'
2019-05-16 14:43:44 +00:00
```bash
# Note: all dirs and files must exist!
export BASHBOT_ETC "/etc/bashbot"
export BASHBOT_VAR "/var/spool/bashbot"
/usr/local/telegram-bot-bash/bashbot.sh start
```
2019-05-23 10:26:53 +00:00
##### Unix like config for one bot. bashbot.sh is installed in '/usr/bin'
2019-05-16 14:43:44 +00:00
```bash
# Note: all dirs and files must exist!
export BASHBOT_ETC "/etc/bashbot"
export BASHBOT_VAR "/var/spool/bashbot"
export BASHBOT_JSONSH "/var/spool/bashbot"
/usr/local/bin/bashbot.sh start
```
2019-05-23 10:26:53 +00:00
##### simple multibot config, everything is keept inside 'telegram-bot-bash' dir
2019-05-16 14:43:44 +00:00
```bash
# config for running Bot 1
# Note: all dirs and files must exist!
export BASHBOT_ETC "./mybot1"
export BASHBOT_VAR "./mybot1"
/usr/local/telegram-bot-bash/bashbot.sh start
```
```bash
# config for running Bot 2
# Note: all dirs and files must exist!
export BASHBOT_ETC "./mybot2"
export BASHBOT_VAR "./mybot2"
/usr/local/telegram-bot-bash/bashbot.sh start
```
#### [Prev Notes for Developers](7_develop.md)
2019-05-26 14:50:19 +00:00
#### $$VERSION$$ v0.90-dev2-0-gec85636
2019-05-16 14:43:44 +00:00