add callback processing to commands and mycommands
This commit is contained in:
parent
c90b5658b3
commit
9584068ea3
17
commands.sh
17
commands.sh
|
@ -15,7 +15,7 @@
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.31-dev-13-g127cc85
|
#### $$VERSION$$ v1.35-dev-6-gc90b565
|
||||||
#
|
#
|
||||||
|
|
||||||
# bashbot locale defaults to c.UTF-8, adjust locale in mycommands.sh if needed
|
# bashbot locale defaults to c.UTF-8, adjust locale in mycommands.sh if needed
|
||||||
|
@ -66,6 +66,7 @@ fi
|
||||||
# copy "mycommands.sh.dist" to "mycommands.sh" and change the values there
|
# copy "mycommands.sh.dist" to "mycommands.sh" and change the values there
|
||||||
# defaults to no inline, all commands and nonsense home dir
|
# defaults to no inline, all commands and nonsense home dir
|
||||||
export INLINE="0"
|
export INLINE="0"
|
||||||
|
export CALLBACK="0"
|
||||||
export MEONLY="0"
|
export MEONLY="0"
|
||||||
export FILE_REGEX="${BASHBOT_ETC}/.*"
|
export FILE_REGEX="${BASHBOT_ETC}/.*"
|
||||||
|
|
||||||
|
@ -76,14 +77,18 @@ export FILE_REGEX="${BASHBOT_ETC}/.*"
|
||||||
|
|
||||||
|
|
||||||
if [ -z "$1" ] || [[ "$1" == *"debug"* ]];then
|
if [ -z "$1" ] || [[ "$1" == *"debug"* ]];then
|
||||||
# detect inline commands....
|
#################
|
||||||
# no default commands, all processing is done in myinlines()
|
# detect inline and callback query
|
||||||
if [ "${INLINE}" != "0" ] && [ -n "${iQUERY[ID]}" ]; then
|
if [[ -n "${iQUERY[ID]}" && "${INLINE:-0}" != "0" ]]; then
|
||||||
# forward iinline query to optional dispatcher
|
# forward iinline query to optional dispatcher
|
||||||
_exec_if_function myinlines
|
_exec_if_function myinlines
|
||||||
|
|
||||||
# regular (global) commands ...
|
elif [[ -n "${iBUTTON[ID]}" && "${CALLBACK:-0}" != "0" ]]; then
|
||||||
# your commands are in mycommands()
|
# forward iinline query to optional dispatcher
|
||||||
|
_exec_if_function mycallbacks
|
||||||
|
|
||||||
|
#################
|
||||||
|
# regular command
|
||||||
else
|
else
|
||||||
|
|
||||||
###################
|
###################
|
||||||
|
|
|
@ -216,8 +216,10 @@ _keyboard_numpad
|
||||||
*See also: [Keyboard Markup](https://core.telegram.org/bots/api/#replykeyboardmarkup)*
|
*See also: [Keyboard Markup](https://core.telegram.org/bots/api/#replykeyboardmarkup)*
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
##### send_button
|
##### send_button
|
||||||
`send_button` sends a text message with a single button for opneing and URL.
|
`send_button` sends a text message with a single button to open an URL attached.
|
||||||
|
|
||||||
*usage:* send_button "$CHAT[ID]" "message" "text" "URL"
|
*usage:* send_button "$CHAT[ID]" "message" "text" "URL"
|
||||||
|
|
||||||
|
@ -253,8 +255,8 @@ send_inline_keyboard "${CHAT[ID]}" "message" "$(_button_row "b1|http://rrr.de" "
|
||||||
```
|
```
|
||||||
|
|
||||||
##### send_inline_keyboard
|
##### send_inline_keyboard
|
||||||
`send_inline_keyboard` send a message with attached buttons, buttons are given as an array of buttons in JSON format.
|
`send_inline_keyboard` sends a message with buttons attached, buttons must be given in JSON format.
|
||||||
In contrast to `send_keyboard` the button are attached to a message and do not send text to the chat.
|
In contrast to `send_keyboard` buttons are attached to the message and do not send text.
|
||||||
|
|
||||||
*usage:* send_inline_keyboard "CHAT[ID]" "message" "[JSON button array]"
|
*usage:* send_inline_keyboard "CHAT[ID]" "message" "[JSON button array]"
|
||||||
|
|
||||||
|
@ -1321,5 +1323,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.35-dev-5-gcc7afdb
|
#### $$VERSION$$ v1.35-dev-6-gc90b565
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
# Author: KayM (gnadelwartz), kay@rrr.de
|
# Author: KayM (gnadelwartz), kay@rrr.de
|
||||||
# Created: 09.01.2021 07:27
|
# Created: 09.01.2021 07:27
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.31-dev-15-g07f026c
|
#### $$VERSION$$ v1.35-dev-6-gc90b565
|
||||||
#######################################################
|
#######################################################
|
||||||
|
|
||||||
##########
|
##########
|
||||||
|
@ -47,6 +47,10 @@ Edit commands and messages in mycommands.sh!
|
||||||
# To enable this option in your bot, send the /setinline command to @BotFather.
|
# To enable this option in your bot, send the /setinline command to @BotFather.
|
||||||
export INLINE="0"
|
export INLINE="0"
|
||||||
|
|
||||||
|
# Set CALLBACK to 1 in order to receive callback queries.
|
||||||
|
# callbacks are sent from inline_keyboards (buttons) attached tp bot messages
|
||||||
|
export CALLBACK="0"
|
||||||
|
|
||||||
# if your bot is group admin it get commands sent to other bots
|
# if your bot is group admin it get commands sent to other bots
|
||||||
# Set MEONLY to 1 to ignore commands sent to other bots
|
# Set MEONLY to 1 to ignore commands sent to other bots
|
||||||
export MEONLY="0"
|
export MEONLY="0"
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# License: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# Author: KayM (gnadelwartz), kay@rrr.de
|
# Author: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.30-0-g3266427
|
#### $$VERSION$$ v1.35-dev-6-gc90b565
|
||||||
#######################################################
|
#######################################################
|
||||||
# shellcheck disable=SC1117
|
# shellcheck disable=SC1117
|
||||||
|
|
||||||
|
@ -179,6 +179,40 @@ else
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mycallbacks() {
|
||||||
|
#######################
|
||||||
|
# callbacks from buttons bot has attached to messages can processed here
|
||||||
|
# we have no standard use case for processing callbacks, we log them based on user and chat
|
||||||
|
case "${USER[ID]}+${CHAT[ID]}" in
|
||||||
|
'USERID1+'*) # do something for all callbacks from USER
|
||||||
|
printf "%s: U=%s C=%s D=%s\n" "$(date)" "${iBOTTON[USER_ID]}" "${iBOTTON[CHAT_ID]}" "${iBUTTON[DATA]}"\
|
||||||
|
>>"${DATADIR}/${iBOTTON[USER_ID]}.log"
|
||||||
|
answer_callback_query "${iBUTTON[ID]}" "Request has been logged in your user log..."
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
*'+CHATID1') # do something for all callbacks from CHAT
|
||||||
|
printf "%s: U=%s C=%s D=%s\n" "$(date)" "${iBOTTON[USER_ID]}" "${iBOTTON[CHAT_ID]}" "${iBUTTON[DATA]}"\
|
||||||
|
>>"${DATADIR}/${iBOTTON[CHAT_ID]}.log"
|
||||||
|
answer_callback_query "${iBUTTON[ID]}" "Request has been logged in chat log..."
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
'USERID2+CHATID2') # do something only for callbacks form USER in CHAT
|
||||||
|
printf "%s: U=%s C=%s D=%s\n" "$(date)" "${iBOTTON[USER_ID]}" "${iBOTTON[CHAT_ID]}" "${iBUTTON[DATA]}"\
|
||||||
|
>>"${DATADIR}/${iBOTTON[USER_ID]}-${iBOTTON[CHAT_ID]}.log"
|
||||||
|
answer_callback_query "${iBUTTON[ID]}" "Request has been logged in user-chat log..."
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
*) # all other callbacks are processed here
|
||||||
|
: # your processing here ...
|
||||||
|
:
|
||||||
|
# Telegram needs an ack each callback query, default empty
|
||||||
|
answer_callback_query "${iBUTTON[ID]}" ""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
myinlines() {
|
myinlines() {
|
||||||
#######################
|
#######################
|
||||||
# Inline query examples, do not use them in production (except image search ;-)
|
# Inline query examples, do not use them in production (except image search ;-)
|
||||||
|
|
Loading…
Reference in New Issue