final adjustments for v1.5

This commit is contained in:
Kay Marquardt (Gnadelwartz) 2021-03-08 08:06:35 +01:00
parent 41e6883817
commit 8adca9beea
9 changed files with 52 additions and 30 deletions

View File

@ -11,7 +11,7 @@
# AUTHOR: KayM (gnadelwartz), kay@rrr.de # AUTHOR: KayM (gnadelwartz), kay@rrr.de
# CREATED: 27.01.2021 13:42 # CREATED: 27.01.2021 13:42
# #
#### $$VERSION$$ v1.45-dev-75-gfdb2b3a #### $$VERSION$$ v1.45-dev-85-g41e6883
#=============================================================================== #===============================================================================
# shellcheck disable=SC2059 # shellcheck disable=SC2059
@ -76,7 +76,7 @@ bot_init() {
[ -n "${INTERACTIVE}" ] && read -r runuser [ -n "${INTERACTIVE}" ] && read -r runuser
fi fi
# check if mycommands exist # check if mycommands exist
if [ ! -r "${BASHBOT_ETC:-.}/mycommands.sh" ]; then if [[ ! -r "${BASHBOT_ETC:-.}/mycommands.sh" && -r ${BASHBOT_ETC:-.}/mycommands.sh.dist ]]; then
printf "Mycommands.sh not found, copy ${GREY}<C>lean file, <E>xamples or <N>one${NC} to mycommands.sh? (c/e/N) N\b" printf "Mycommands.sh not found, copy ${GREY}<C>lean file, <E>xamples or <N>one${NC} to mycommands.sh? (c/e/N) N\b"
read -r ANSWER read -r ANSWER
[[ "${ANSWER}" =~ ^[cC] ]] && cp -f "${BASHBOT_ETC:-.}/mycommands.sh.clean" "${BASHBOT_ETC:-.}/mycommands.sh" [[ "${ANSWER}" =~ ^[cC] ]] && cp -f "${BASHBOT_ETC:-.}/mycommands.sh.clean" "${BASHBOT_ETC:-.}/mycommands.sh"

View File

@ -7,7 +7,7 @@
# #
# Options: --notest - skip tests # Options: --notest - skip tests
# #
#### $$VERSION$$ v1.45-dev-84-gae525c4 #### $$VERSION$$ v1.45-dev-85-g41e6883
############################################################## ##############################################################
#shellcheck disable=SC1090 #shellcheck disable=SC1090
@ -20,7 +20,7 @@ DISTDIR="./DIST/${DISTNAME}"
DISTMKDIR="data-bot-bash logs bin bin/logs addons" DISTMKDIR="data-bot-bash logs bin bin/logs addons"
DISTFILES="bashbot.sh commands.sh mycommands.sh.clean bin doc examples scripts modules LICENSE README.md README.txt README.html" DISTFILES="bashbot.sh commands.sh mycommands.sh.clean bin doc examples scripts modules LICENSE README.md README.txt README.html"
DISTFILESDEV="dev/make-standalone.sh dev/make-standalone.sh.include dev/inject-json.sh dev/make-html.sh dev/obfuscate.sh" DISTFILESDEV="dev/make-standalone.sh dev/inject-json.sh dev/make-html.sh dev/obfuscate.sh"
DISTFILESDIST="mycommands.sh mycommands.conf bashbot.rc $(echo "addons/"*.sh)" DISTFILESDIST="mycommands.sh mycommands.conf bashbot.rc $(echo "addons/"*.sh)"
# run tests first! # run tests first!

View File

@ -7,6 +7,7 @@ bashbot.rc
mycommands.sh mycommands.sh
mycommands.conf mycommands.conf
awk-patch.sh awk-patch.sh
make-standalone.sh.include
*.jssh* *.jssh*
botacl botacl
*.flock *.flock

View File

@ -11,7 +11,7 @@
# If you your bot is finished you can use make-standalone.sh to create the # If you your bot is finished you can use make-standalone.sh to create the
# the old all-in-one bashbot: bashbot.sh and commands.sh only! # the old all-in-one bashbot: bashbot.sh and commands.sh only!
# #
#### $$VERSION$$ v1.45-dev-84-gae525c4 #### $$VERSION$$ v1.45-dev-85-g41e6883
################################################################### ###################################################################
# include git config and change to base dir # include git config and change to base dir
@ -37,11 +37,13 @@ fi
#DISTNAME="telegram-bot-bash" #DISTNAME="telegram-bot-bash"
DISTDIR="./STANDALONE" DISTDIR="./STANDALONE"
DISTMKDIR="data-bot-bash logs bin/logs addons" DISTMKDIR="data-bot-bash logs bin/logs addons"
DISTFILES="bashbot.sh bashbot.rc commands.sh mycommands.sh modules scripts LICENSE README.* doc botacl botconfig.jssh addons" DISTFILES="bashbot.sh commands.sh mycommands.sh modules scripts LICENSE README.* doc addons"
DISTBINFILES="bin/bashbot_env.inc.sh bin/bashbot_stats.sh bin/process_batch.sh bin/process_update.sh bin/send_broadcast.sh bin/send_message.sh" DISTBINFILES="bin/bashbot_env.inc.sh bin/bashbot_stats.sh bin/process_batch.sh bin/process_update.sh bin/send_broadcast.sh bin/send_message.sh"
# add extra files # add extra files, minimum mycommands.conf
DISTFILES+=" $(cat "${BASE_DIR}/dev/${0##*/}.include")" extrafile="${BASE_DIR}/dev/${0##*/}.include"
[ ! -f "${extrafile}" ] && printf "bashbot.rc\nbotacl\nbotconfig.jssh\nmycommands.conf\ndev/obfuscate.sh\n" >"${extrafile}"
DISTFILES+=" $(<"${extrafile}")"
# create dir for distribution and copy files # create dir for distribution and copy files
printf "Create directories and copy files\n" printf "Create directories and copy files\n"

View File

@ -1 +1,5 @@
bashbot.rc
botacl
botconfig.jssh
mycommands.conf
dev/obfuscate.sh dev/obfuscate.sh

View File

@ -127,7 +127,7 @@ bin/send_message.sh "CHAT[ID]" "Hey, I just wanted to let you know that the bot'
To replace a message already sent to one user or chat run the following command: To replace a message already sent to one user or chat run the following command:
```bash ```bash
bin/send_edit_message.sh "CHAT[ID]" "12345" "Done!" bin/edit_message.sh "CHAT[ID]" "12345" "Done!"
["OK"] "true" ["OK"] "true"
["ID"] "12345" ["ID"] "12345"
@ -150,9 +150,14 @@ Note: to get help about a script in bin/ run `scriptname.sh --help`
Evertime a Telegram update is received, you can read incoming data using the following variables: Evertime a Telegram update is received, you can read incoming data using the following variables:
In case you need other update values, the array `UPD` contains complete Telegram response. In case you need other update values, the array `UPD` contains complete Telegram response.
### Regular Messages ### Processing Messages
These Variables are always present in regular messages: If an update is received from Telegram, the message is pre processed by Bashbot and the following bash variables are set for use in `mycommands.sh`.
These variables are always present if a message is pre processed:
* `${ME}`: Name of your bot
* `${BOTADMIN}`: User id of bot administrator
* `${MESSAGE}`: Current message text * `${MESSAGE}`: Current message text
* `${MESSAGE[ID]}`: ID of current message * `${MESSAGE[ID]}`: ID of current message
@ -215,11 +220,10 @@ The following variables are set if the message contains optional parts:
### Service Messages ### Service Messages
Service Messages are regular messages not itended for end users, instead they signal special events to the Service Messages are updates not itended for end users, instead they signal special events in a chat, e.g. new users.
client, e.g. new users.
If a service message is received bashbot sets MESSAGE to the service message type as a command, If a service message is received bashbot pre processing sets `${MESSAGE}` according to the service message type,
e.g. if a new user joins a chat MESSAGE is set to "/_new_chat_user". e.g. if a new user joins a chat MESSAGE is set to `/_new_chat_user ...`.
* `$SERVICE`: This array contains info about received service messages. * `$SERVICE`: This array contains info about received service messages.
* `${SERVICE}`: "yes" if service message is received * `${SERVICE}`: "yes" if service message is received
@ -255,10 +259,17 @@ e.g. if a new user joins a chat MESSAGE is set to "/_new_chat_user".
### Inline query messages ### Inline query messages
Inline query messages are special messages used for interaction with the user, Inline query messages are special messages for direct interaction with your bot.
they contain the following variables only: If an user starts an inline conversation an inline query is sent after each user keystroke.
* `${iQUERY}`: Current inline query To receive inline messages you must set `inline=1` in `mycommands.conf` and in botfather.
THe message contatains all characters so far typed from the user.
An received inline query must be anserwered with `answer_inline_query`, see also (Inline Query)[6_reference.md#inline-query]
If an inline query is received only the following variables are available:
* `${iQUERY}`: Inline message typed so far by user
* `$iQUERY`: This array contains the ID, First name, last name, username and user id of the sender of the current inline query. * `$iQUERY`: This array contains the ID, First name, last name, username and user id of the sender of the current inline query.
* `${iQUERY[ID]}`: Inline query ID * `${iQUERY[ID]}`: Inline query ID
* `${iQUERY[USER_ID]}`: User's id * `${iQUERY[USER_ID]}`: User's id
@ -266,9 +277,9 @@ they contain the following variables only:
* `${iQUERY[LAST_NAME]}`: User's last name * `${iQUERY[LAST_NAME]}`: User's last name
### Callback button messages ### Callback button messages
Callback button messages special messages swedn from callback buttons, Callback button messages special messages swend from callback buttons, they contain the following variables only:
they contain the following variables only:
* `$iBUTTON`: This array contains the ID, First name, last name, username and user id of the user clicked on the button * `$iBUTTON`: This array contains the ID, First name, last name, username and user id of the user clicked on the button
* `${iBUTTON[ID]}`: Callback query ID * `${iBUTTON[ID]}`: Callback query ID
@ -287,6 +298,8 @@ they contain the following variables only:
After every `send_xxx` `get_xxx` call the array BOTSENT contains the most important values from Telegram response. After every `send_xxx` `get_xxx` call the array BOTSENT contains the most important values from Telegram response.
In case you need other response values , the array `UPD` contains complete Telegram response. In case you need other response values , the array `UPD` contains complete Telegram response.
You can use the array values to check if a commands was successful and get returned values from Telegram.
### BOTSENT array ### BOTSENT array
* `$BOTSENT`: This array contains the parsed results from the last transmission to telegram. * `$BOTSENT`: This array contains the parsed results from the last transmission to telegram.
@ -377,5 +390,5 @@ send_action "${CHAT[ID]}" "action"
#### [Prev Create Bot](1_firstbot.md) #### [Prev Create Bot](1_firstbot.md)
#### [Next Advanced Usage](3_advanced.md) #### [Next Advanced Usage](3_advanced.md)
#### $$VERSION$$ v1.45-dev-75-gfdb2b3a #### $$VERSION$$ v1.45-dev-85-g41e6883

View File

@ -826,7 +826,7 @@ fi
---- ----
### Inline Queries - answer direct queries to bot ### Inline Query
Inline Queries allows users to interact with your bot directly without sending extra commands. Inline Queries allows users to interact with your bot directly without sending extra commands.
As an answer to an inline query you can send back one or more results to the Telegram client. As an answer to an inline query you can send back one or more results to the Telegram client.
The Telegram client will then show the results to the user and let him select one. The Telegram client will then show the results to the user and let him select one.
@ -1673,5 +1673,5 @@ The name of your bot is available as bash variable "$ME", there is no need to ca
#### [Prev Best Practice](5_practice.md) #### [Prev Best Practice](5_practice.md)
#### [Next Notes for Developers](7_develop.md) #### [Next Notes for Developers](7_develop.md)
#### $$VERSION$$ v1.45-dev-75-gfdb2b3a #### $$VERSION$$ v1.45-dev-85-g41e6883

View File

@ -9,8 +9,7 @@ If your server is reachable from the Internet its possible to use the method des
Prerequisite for receiving Telegram updates with webhook is a valid SSL certificate, a self signed certificate will not be sufficient. Prerequisite for receiving Telegram updates with webhook is a valid SSL certificate, a self signed certificate will not be sufficient.
*Note:* You need at least sudo rights to setup webhook. Webhook processing require special setup on server and Telegram side, therefore it's implemented as separate scripts and you need at least sudo rights to setup.
#### Setup Apache webhook #### Setup Apache webhook
@ -99,5 +98,5 @@ webhook updates only over secure TLS connections with a valid SSL certificate ch
`socat` looks like a tool to listen for Telegram updates from bash scripts, let's see ... `socat` looks like a tool to listen for Telegram updates from bash scripts, let's see ...
#### $$VERSION$$ v1.45-dev-77-g235f26a #### $$VERSION$$ v1.45-dev-85-g41e6883

View File

@ -4,7 +4,7 @@
# File: processUpdates.sh # File: processUpdates.sh
# Note: DO NOT EDIT! this file will be overwritten on update # Note: DO NOT EDIT! this file will be overwritten on update
# #
#### $$VERSION$$ v1.45-dev-75-gfdb2b3a #### $$VERSION$$ v1.45-dev-85-g41e6883
################################################################## ##################################################################
############## ##############
@ -296,9 +296,12 @@ start_bot() {
DEBUGMSG="Start BASHBOT updates in Mode \"${1:-normal}\" ==========" DEBUGMSG="Start BASHBOT updates in Mode \"${1:-normal}\" =========="
log_update "${DEBUGMSG}" log_update "${DEBUGMSG}"
# redirect to Debug.log # redirect to Debug.log
# shellcheck disable=SC2153 if [[ "$1" == *"debug" ]]; then
[[ "$1" == *"debug" ]] && exec &>>"${DEBUGLOG}" # shellcheck disable=SC2153
log_debug "${DEBUGMSG}"; DEBUGMSG="$1" exec &>>"${DEBUGLOG}"
log_debug "${DEBUGMSG}";
fi
DEBUGMSG="$1"
[[ "${DEBUGMSG}" == "xdebug"* ]] && set -x [[ "${DEBUGMSG}" == "xdebug"* ]] && set -x
# cleaup old pipes and empty logfiles # cleaup old pipes and empty logfiles
find "${DATADIR}" -type p -not -name "webhook-fifo-*" -delete find "${DATADIR}" -type p -not -name "webhook-fifo-*" -delete