dispose JSON.sh complaint about empty input

This commit is contained in:
Kay Marquardt (Gnadelwartz) 2020-06-11 15:55:15 +02:00
parent 15f6da85dc
commit 38164ba9a2
3 changed files with 20 additions and 13 deletions

View File

@ -11,7 +11,7 @@
# This file is public domain in the USA and all free countries.
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
#
#### $$VERSION$$ v0.96-pre-40-ge663979
#### $$VERSION$$ v0.96-pre-41-g15f6da8
#
# Exit Codes:
# - 0 sucess (hopefully)
@ -319,7 +319,7 @@ if [ -z "${BASHBOT_WGET}" ] && _exists curl ; then
# shellcheck disable=SC2086
res="$("${BASHBOT_CURL}" -s -k ${BASHBOT_CURL_ARGS} -m "${TIMEOUT}"\
-d '{'"${chat} $(iconv -f utf-8 -t utf-8 -c <<<$2)"'}' -X POST "${3}" \
-H "Content-Type: application/json" | "${JSONSHFILE}" -s -b -n )"
-H "Content-Type: application/json" | "${JSONSHFILE}" -s -b -n 2>/dev/null )"
sendJsonResult "${res}" "sendJson (curl)" "$@"
}
#$1 Chat, $2 what , $3 file, $4 URL, $5 caption
@ -348,7 +348,7 @@ else
[ -n "${1}" ] && chat='"chat_id":'"${1}"','
# shellcheck disable=SC2086
res="$(wget --no-check-certificate -t 2 -T "${TIMEOUT}" ${BASHBOT_WGET_ARGS} -qO - --post-data='{'"${chat} $(iconv -f utf-8 -t utf-8 -c <<<$2)"'}' \
--header='Content-Type:application/json' "${3}" | "${JSONSHFILE}" -s -b -n )"
--header='Content-Type:application/json' "${3}" | "${JSONSHFILE}" -s -b -n 2>/dev/null )"
sendJsonResult "${res}" "sendJson (wget)" "$@"
}
sendUpload() {
@ -462,7 +462,7 @@ title2Json(){
# get bot name
getBotName() {
getJson "$ME_URL" | "${JSONSHFILE}" -s -b -n | JsonGetString '"result","username"'
getJson "$ME_URL" | "${JSONSHFILE}" -s -b -n 2>/dev/null | JsonGetString '"result","username"'
}
# pure bash implementaion, done by KayM (@gnadelwartz)
@ -821,7 +821,7 @@ start_bot() {
sleep "$(_round_float "${nextsleep}e-3" "1")"
((nextsleep+= stepsleep , nextsleep= nextsleep>maxsleep ?maxsleep:nextsleep))
# get next update
UPDATE="$(getJson "$UPD_URL$OFFSET" 2>/dev/null | "${JSONSHFILE}" -s -b -n | iconv -f utf-8 -t utf-8 -c)"
UPDATE="$(getJson "$UPD_URL$OFFSET" 2>/dev/null | "${JSONSHFILE}" -s -b -n 2>/dev/null | iconv -f utf-8 -t utf-8 -c)"
# did we ge an responsn0r
if [ -n "${UPDATE}" ]; then
# we got something, do processing

View File

@ -232,7 +232,7 @@ Only if the retry fails also an error is returned. The downside is that send_mes
If you want to disable automatic error processing and handle all errors manually (or don't care)
set ```BASHBOT_RETRY``` to any no zero value.
[Telegram API error codes](https://core.telegram.org/api/errors)
[Telegram Bot API error codes](https://github.com/TelegramBotAPI/errors)
#### Detect bot blocked
@ -274,5 +274,5 @@ Note: If you disable automatic retry, se above, you disable also connection prob
#### [Prev Getting started](2_usage.md)
#### [Next Expert Use](4_expert.md)
#### $$VERSION$$ v0.96-pre-40-ge663979
#### $$VERSION$$ v0.96-pre-41-g15f6da8

View File

@ -43,10 +43,15 @@ If a not mandatory module is used in 'bashbot.sh' or 'commands.sh', the use of `
Addons must register themself to BASHBOT_EVENTS at startup, e.g. to call a function everytime a message is received.
Addons works similar as 'commands.sh' and 'mycommands.sh' but are much more flexible on when functions/commands are triggered.
Another major difference is: **Addons are executed in the context of the main script**, while 'commands.sh' and 'mycommands.sh' are executed new child process on efery execution.
This is why event functions are time critical and must finish as fast as possible.
Another major difference is: While regular command processing is done in as a new sub shell for every command,
**Addons are executed in the context of bashbot event loop!**, This is why event functions are (time) critical
and must return as fast as possible. **If an event function call exit, also bashbot exits!**
*Important*: If an event function e.g. send_messages or need longer time for processing spawn a sub shell!
This prevents blocking or exiting bashbots event loop.
#### Bashbot Events
Addons must register functions to bashbot events by providing their name, and internal identifier and a callback function.
If an event occours each registered function for the event is called.
@ -85,7 +90,9 @@ BASHBOT_EVENT_TEXT["example_1"]="example_echo"
example_echo() {
local event="$1" key="$2"
# all availible bashbot functions and variables can be used
send_normal_message "${CHAT[ID]}" "Event: ${event} Key: ${key} : ${MESSAGE[0]}" & # note the &!
send_normal_message "${CHAT[ID]}" "Event: ${event} Key: ${key} : ${MESSAGE[0]}" & # NOTE the & for sub shell!!!
do_more_processing & # NOTE the & for sub shell!!!
}
```
@ -135,7 +142,7 @@ This means if you register an every 5 minutes callback first execution may < 5 M
* 0 ignored
* 1 execute once every minute
* x execute every x minutes
* -x execute once WHITHIN the next x Minutes (10=between now and 10 Minutes)
* -x execute once WHITHIN the next x Minutes (next 10 Minutes since start "event")
Note: If you want exact "in x minutes" use "EVENT_TIMER plus x" as time: ```-(EVENT_TIMER + x)```
@ -153,7 +160,7 @@ example_everymin() {
# register other callback:
BAHSBOT_EVENT_TIMER["example_every5","5"]="example_every5min"
# execute once in the next 1 to 10 minutes
# execute once on the next 10 minutes since start "event"
BAHSBOT_EVENT_TIMER["example_10min","-10"]="example_in10min"
# once in exact 10 minutes
@ -338,5 +345,5 @@ fi
#### [Prev Function Reference](6_reference.md)
#### $$VERSION$$ v0.96-pre-40-ge663979
#### $$VERSION$$ v0.96-pre-41-g15f6da8