fix nasty workaround for external scripts

This commit is contained in:
Kay Marquardt (Gnadelwartz) 2019-04-27 21:10:55 +02:00
parent 07dc7b4432
commit 3cd6eebdf2
10 changed files with 50 additions and 36 deletions

View File

@ -17,8 +17,8 @@ Most complete [UTF-8 support for bashbot](doc/4_expert.md#Bashbot-UTF-8-Support)
Bashbot [Documentation](https://github.com/topkecleon/telegram-bot-bash) and [Downloads](https://github.com/topkecleon/telegram-bot-bash/releases) are availible on www.github.com Bashbot [Documentation](https://github.com/topkecleon/telegram-bot-bash) and [Downloads](https://github.com/topkecleon/telegram-bot-bash/releases) are availible on www.github.com
## Documentation ## Documentation
* [Bots: Introduction for developers](https://core.telegram.org/bots) * [Introdution to Telegram Bots](https://core.telegram.org/bots)
* [The one to rule them all](https://core.telegram.org/bots#3-how-do-i-create-a-bot) * [One Bot to rule them all](https://core.telegram.org/bots#3-how-do-i-create-a-bot)
* [Bot commands](https://core.telegram.org/bots#commands) * [Bot commands](https://core.telegram.org/bots#commands)
* [Install Bashbot](doc/0_install.md) * [Install Bashbot](doc/0_install.md)
* Install release * Install release
@ -45,7 +45,11 @@ Bashbot [Documentation](https://github.com/topkecleon/telegram-bot-bash) and [Do
* Seperate logic from commands * Seperate logic from commands
* Test your Bot with shellcheck * Test your Bot with shellcheck
* [Bashbot function reference](doc/6_reference.md) * [Bashbot function reference](doc/6_reference.md)
* [Notes for bashbot developers](doc/7_develop.md) * [Deveoper Notess](doc/7_develop.md)
* Setup your environment
* Test, Add, Push changes
* Prepare a new version
* Bashbot testsuite
* [Customize bashbot environment](doc/8_customize.md) * [Customize bashbot environment](doc/8_customize.md)
@ -82,10 +86,11 @@ Well, thats a damn good question ... may be because I'm an Unix/Linux admin from
- easy to integrate with other shell script, e.g. for sending system message / health status - easy to integrate with other shell script, e.g. for sending system message / health status
- no need to install or learn a new programming language, library or framework - no need to install or learn a new programming language, library or framework
- no database, not event driven, not OO ... - no database, not event driven, not OO ...
@Gnadelwartz @Gnadelwartz
## That's it! ## That's it!
If you feel that there's something missing or if you found a bug, feel free to submit a pull request! If you feel that there's something missing or if you found a bug, feel free to submit a pull request!
#### $$VERSION$$ v0.70-pre1-4-g0d38a67 #### $$VERSION$$ v0.70-pre1-5-g07dc7b4

View File

@ -27,8 +27,8 @@ are availible on www.github.com
Documentation Documentation
~~~~~~~~~~~~~ ~~~~~~~~~~~~~
* https://core.telegram.org/bots[Bots: Introduction for developers] * https://core.telegram.org/bots[Introdution to Telegram Bots]
** https://core.telegram.org/bots#3-how-do-i-create-a-bot[The one to ** https://core.telegram.org/bots#3-how-do-i-create-a-bot[One Bot to
rule them all] rule them all]
** https://core.telegram.org/bots#commands[Bot commands] ** https://core.telegram.org/bots#commands[Bot commands]
* link:doc/0_install.md[Install Bashbot] * link:doc/0_install.md[Install Bashbot]
@ -56,7 +56,11 @@ rule them all]
** Seperate logic from commands ** Seperate logic from commands
** Test your Bot with shellcheck ** Test your Bot with shellcheck
* link:doc/6_reference.md[Bashbot function reference] * link:doc/6_reference.md[Bashbot function reference]
* link:doc/7_develop.md[Notes for bashbot developers] * link:doc/7_develop.md[Deveoper Notess]
** Setup your environment
** Test, Add, Push changes
** Prepare a new version
** Bashbot testsuite
* link:doc/8_customize.md[Customize bashbot environment] * link:doc/8_customize.md[Customize bashbot environment]
Security Considerations Security Considerations
@ -121,7 +125,7 @@ language, we have done our best to make it as secure as possible. But
YOU are responsible for the bot commands you wrote and you should know YOU are responsible for the bot commands you wrote and you should know
about the risks ... about the risks ...
Why Bash and not the much better ...? Why Bash and not the much better xyz?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Well, thats a damn good question ... may be because I'm an Unix/Linux Well, thats a damn good question ... may be because I'm an Unix/Linux
@ -129,12 +133,13 @@ admin from stone age. Nevertheless there are more reasons from my side:
* bashbot will run everywhere where bash is availible, from ebedded * bashbot will run everywhere where bash is availible, from ebedded
linux to mainframe linux to mainframe
* easy to integrate with other shell/bashscripts for system admins to * easy to integrate with other shell script, e.g. for sending system
send status updates message / health status
* no need to install or learn a new programming language, library or * no need to install or learn a new programming language, library or
framwework framework
* no database, not event driven, not OO ... * no database, not event driven, not OO ...
*
@Gnadelwartz
That's it! That's it!
~~~~~~~~~~ ~~~~~~~~~~
@ -142,5 +147,5 @@ That's it!
If you feel that there's something missing or if you found a bug, feel If you feel that there's something missing or if you found a bug, feel
free to submit a pull request! free to submit a pull request!
latexmath:[\[VERSION\]] v0.70-pre1-4-g0d38a67 latexmath:[\[VERSION\]] v0.70-pre1-5-g07dc7b4
+++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++

View File

@ -5,7 +5,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$$ v0.70-pre1-4-g0d38a67 #### $$VERSION$$ v0.70-pre1-5-g07dc7b4
# source from commands.sh if you want ro use interactive or background jobs # source from commands.sh if you want ro use interactive or background jobs
@ -15,51 +15,49 @@ export res
#### ####
# I placed send_message here because main use case is interactive chats and background jobs # I placed send_message here because main use case is interactive chats and background jobs
send_message() { send_message() {
local text arg keyboard btext burl no_keyboard file lat long title address sent
[ "$2" = "" ] && return [ "$2" = "" ] && return
local mychat="$1" local text keyboard btext burl no_keyboard file lat long title address sent
text="$(sed <<< "${2}" 's/ mynewlinestartshere/\r\n/g; s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')" text="$(sed <<< "${2}" 's/ *mynewlinestartshere */\r\n/g;s/ mykeyboardend.*//;s/ *my[a-z]\{3,15\}startshere.*//')$(sed <<< "${2}" -n '/mytextstartshere/ s/.*mytextstartshere//p')"
arg="$3" [ "$3" != "safe" ] && {
[ "$arg" != "safe" ] && {
no_keyboard="$(sed <<< "${2}" '/mykeyboardendshere/!d;s/.*mykeyboardendshere.*/mykeyboardendshere/')" no_keyboard="$(sed <<< "${2}" '/mykeyboardendshere/!d;s/.*mykeyboardendshere.*/mykeyboardendshere/')"
keyboard="$(sed <<< "${2}" '/mykeyboardstartshere /!d;s/.*mykeyboardstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')" keyboard="$(sed <<< "${2}" '/mykeyboardstartshere /!d;s/.*mykeyboardstartshere *//;s/ *my[nkfltab][a-z]\{2,13\}startshere.*//;s/ *mykeyboardendshere.*//')"
btext="$(sed <<< "${2}" '/mybtextstartshere /!d;s/.*mybtextstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')" btext="$(sed <<< "${2}" '/mybtextstartshere /!d;s/.*mybtextstartshere //;s/ *my[nkfltab][a-z]\{2,13\}startshere.*//;s/ *mykeyboardendshere.*//')"
burl="$(sed <<< "${2}" '/myburlstartshere /!d;s/.*myburlstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')" burl="$(sed <<< "${2}" '/myburlstartshere /!d;s/.*myburlstartshere //;s/ *my[nkfltab][a-z]\{2,13\}startshere.*//g;s/ *mykeyboardendshere.*//g')"
file="$(sed <<< "${2}" '/myfilelocationstartshere /!d;s/.*myfilelocationstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')" file="$(sed <<< "${2}" '/myfilelocationstartshere /!d;s/.*myfilelocationstartshere //;s/ *my[nkfltab][a-z]\{2,13\}startshere.*//;s/ *mykeyboardendshere.*//')"
lat="$(sed <<< "${2}" '/mylatstartshere /!d;s/.*mylatstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')" lat="$(sed <<< "${2}" '/mylatstartshere /!d;s/.*mylatstartshere //;s/ *my[nkfltab][a-z]\{2,13\}startshere.*//;s/ *mykeyboardendshere.*//')"
long="$(sed <<< "${2}" '/mylongstartshere /!d;s/.*mylongstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')" long="$(sed <<< "${2}" '/mylongstartshere /!d;s/.*mylongstartshere //;s/ *my[nkfltab][a-z]\{2,13\}startshere.*//;s/ *mykeyboardendshere.*//')"
title="$(sed <<< "${2}" '/mytitlestartshere /!d;s/.*mytitlestartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')" title="$(sed <<< "${2}" '/mytitlestartshere /!d;s/.*mytitlestartshere //;s/ *my[kfltab][a-z]\{2,13\}startshere.*//;s/ *mykeyboardendshere.*//')"
address="$(sed <<< "${2}" '/myaddressstartshere /!d;s/.*myaddressstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')" address="$(sed <<< "${2}" '/myaddressstartshere /!d;s/.*myaddressstartshere //;s/ *my[nkfltab][a-z]\{2,13\}startshere.*//;s/ *mykeyboardendshere.*//')"
} }
if [ "$no_keyboard" != "" ]; then if [ "$no_keyboard" != "" ]; then
remove_keyboard "$mychat" "$text" remove_keyboard "$1" "$text"
sent=y sent=y
fi fi
if [ "$keyboard" != "" ]; then if [ "$keyboard" != "" ]; then
if [[ "$keyboard" != *"["* ]]; then # pre 0.60 style if [[ "$keyboard" != *"["* ]]; then # pre 0.60 style
keyboard="[ ${keyboard//\" \"/\" \] , \[ \"} ]" keyboard="[ ${keyboard//\" \"/\" \] , \[ \"} ]"
fi fi
send_keyboard "$mychat" "$text" "$keyboard" send_keyboard "$1" "$text" "$keyboard"
sent=y sent=y
fi fi
if [ "$btext" != "" ] && [ "$burl" != "" ]; then if [ "$btext" != "" ] && [ "$burl" != "" ]; then
send_button "$mychat" "$text" "$btext" "$burl" send_button "$1" "$text" "$btext" "$burl"
sent=y sent=y
fi fi
if [ "$file" != "" ]; then if [ "$file" != "" ]; then
send_file "$mychat" "$file" "$text" send_file "$1" "$file" "$text"
sent=y sent=y
fi fi
if [ "$lat" != "" ] && [ "$long" != "" ]; then if [ "$lat" != "" ] && [ "$long" != "" ]; then
if [ "$address" != "" ] && [ "$title" != "" ]; then if [ "$address" != "" ] && [ "$title" != "" ]; then
send_venue "$mychat" "$lat" "$long" "$title" "$address" send_venue "$1" "$lat" "$long" "$title" "$address"
else else
send_location "$mychat" "$lat" "$long" send_location "$1" "$lat" "$long"
fi fi
sent=y sent=y
fi fi
if [ "$sent" != "y" ];then if [ "$sent" != "y" ];then
send_text "$mychat" "$text" send_text "$1" "$text"
fi fi
} }

0
test/a-commit-test.sh Executable file → Normal file
View File

0
test/d-JSON.sh-test.sh Executable file → Normal file
View File

0
test/d-process_message-test.sh Executable file → Normal file
View File

View File

@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#### $$VERSION$$ v0.70-pre1-0-g490c472 #### $$VERSION$$ v0.70-pre1-5-g07dc7b4
# include common functions and definitions # include common functions and definitions
# shellcheck source=test/ALL-tests.inc.sh # shellcheck source=test/ALL-tests.inc.sh
@ -31,7 +31,7 @@ while IFS='' read -r line || [[ -n "$line" ]]; do
done < "${INPUTFILE}" 2>>"${LOGFILE}" done < "${INPUTFILE}" 2>>"${LOGFILE}"
echo " done." echo " done."
diff -c "${REFFILE}" "${OUTPUTFILE}" || exit 1 { diff -c "${REFFILE}" "${OUTPUTFILE}" || exit 1; } | cat -v
echo " ... all \"send_message\" functions seems to work as expected." echo " ... all \"send_message\" functions seems to work as expected."
echo "${SUCCESS}" echo "${SUCCESS}"

View File

@ -15,3 +15,4 @@ All in one will appear in chat mykeyboardstartshere [ "Yep, sure" , "No, highly
# test for new inline button # test for new inline button
Text plus keyboard will appear in chat mybtextstartshere Button Text myburlstartshere https://www... Text plus keyboard will appear in chat mybtextstartshere Button Text myburlstartshere https://www...
STABILO 88/240 Fineliner point 88 mynewlinestartshere mynewlinestartshere [https://images-na.ssl-images-amazon.com/images/I/41oypA3kmHL.l_SX300.jpg] mynewlinestartshere mybtextstartshere Bei Amazon ansehen ... myburlstartshere https://www.amazon.de/dp/B014TN3JYW mytextstartshere second part of text

View File

@ -52,3 +52,8 @@ URL:https://api.telegram.org/botbashbottestscript/sendMessage
chat:123456 JSON:"text":"Text plus keyboard will appear in chat", "reply_markup": {"inline_keyboard": [ [ {"text":"Button Text", "url":"https://www..."}] ]} chat:123456 JSON:"text":"Text plus keyboard will appear in chat", "reply_markup": {"inline_keyboard": [ [ {"text":"Button Text", "url":"https://www..."}] ]}
URL:https://api.telegram.org/botbashbottestscript/sendMessage URL:https://api.telegram.org/botbashbottestscript/sendMessage
chat:123456 JSON:"text":"STABILO 88/240 Fineliner point 88
[https://images-na.ssl-images-amazon.com/images/I/41oypA3kmHL.l_SX300.jpg] second part of text", "reply_markup": {"inline_keyboard": [ [ {"text":"Bei Amazon ansehen ...", "url":"https://www.amazon.de/dp/B014TN3JYW"}] ]}
URL:https://api.telegram.org/botbashbottestscript/sendMessage

0
test/d-user_is-test.sh Executable file → Normal file
View File