mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2024-05-28 16:00:52 +00:00
error processing for get update loop
This commit is contained in:
parent
dba4f95e9a
commit
a71d68ee43
40
bashbot.sh
40
bashbot.sh
|
@ -11,7 +11,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.96-pre-11-g7644c6c
|
#### $$VERSION$$ v0.96-pre-12-gdba4f95
|
||||||
#
|
#
|
||||||
# Exit Codes:
|
# Exit Codes:
|
||||||
# - 0 sucess (hopefully)
|
# - 0 sucess (hopefully)
|
||||||
|
@ -787,9 +787,11 @@ process_message() {
|
||||||
start_bot() {
|
start_bot() {
|
||||||
local DEBUG="$1"
|
local DEBUG="$1"
|
||||||
local OFFSET=0
|
local OFFSET=0
|
||||||
local mysleep="100" # ms
|
# adaptive sleep deafults
|
||||||
|
local nextsleep="100" :
|
||||||
local addsleep="100"
|
local addsleep="100"
|
||||||
local maxsleep="$(( ${BASHBOT_SLEEP:-5000} + 100 ))"
|
local maxsleep="$(( ${BASHBOT_SLEEP:-5000} + 100 ))"
|
||||||
|
# redirect to Debug.log
|
||||||
[[ "${DEBUG}" == *"debug" ]] && exec &>>"${LOGDIR}/DEBUG.log"
|
[[ "${DEBUG}" == *"debug" ]] && exec &>>"${LOGDIR}/DEBUG.log"
|
||||||
[ -n "${DEBUG}" ] && date && echo "Start BASHBOT in Mode \"${DEBUG}\""
|
[ -n "${DEBUG}" ] && date && echo "Start BASHBOT in Mode \"${DEBUG}\""
|
||||||
[[ "${DEBUG}" == "xdebug"* ]] && set -x
|
[[ "${DEBUG}" == "xdebug"* ]] && set -x
|
||||||
|
@ -812,21 +814,31 @@ start_bot() {
|
||||||
trap "kill -9 $!; exit" EXIT INT HUP TERM QUIT
|
trap "kill -9 $!; exit" EXIT INT HUP TERM QUIT
|
||||||
fi
|
fi
|
||||||
while true; do
|
while true; do
|
||||||
# ignore timeout error message on waiting for updates
|
set -x
|
||||||
|
# adaptive sleep in ms rounded to next 0.1 s
|
||||||
|
sleep "$(printf '%.1f' "$((nextsleep))e-3")"
|
||||||
|
((nextsleep+= addsleep , nextsleep= nextsleep>maxsleep ?maxsleep:nextsleep))
|
||||||
|
set +x
|
||||||
|
# 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 | iconv -f utf-8 -t utf-8 -c)"
|
||||||
UPDATE="${UPDATE//$/\\$}"
|
# did we ge an responsn0r
|
||||||
# Offset
|
if [ -n "${UPDATE}" ]; then
|
||||||
OFFSET="$(grep <<< "${UPDATE}" '\["result",[0-9]*,"update_id"\]' | tail -1 | cut -f 2)"
|
# we got something, do processing
|
||||||
((OFFSET++))
|
# escape bash $ expansion bug
|
||||||
|
UPDATE="${UPDATE//$/\\$}"
|
||||||
|
# Offset
|
||||||
|
OFFSET="$(grep <<< "${UPDATE}" '\["result",[0-9]*,"update_id"\]' | tail -1 | cut -f 2)"
|
||||||
|
((OFFSET++))
|
||||||
|
|
||||||
if [ "$OFFSET" != "1" ]; then
|
if [ "$OFFSET" != "1" ]; then
|
||||||
mysleep="100"
|
nextsleep="100"
|
||||||
process_updates "${DEBUG}"
|
process_updates "${DEBUG}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# ups, something bad happend, wait maxsleep
|
||||||
|
(( nextsleep=maxsleep ))
|
||||||
|
printf "%s: Ups, got no response on update, sleep %.1fs" "$(date)" "$((nextsleep))e-3" >>"${ERRORLOG}"
|
||||||
fi
|
fi
|
||||||
# adaptive sleep in ms rounded to next lower second
|
|
||||||
[ "${mysleep}" -gt "999" ] && sleep "${mysleep%???}"
|
|
||||||
# bash aritmetic
|
|
||||||
((mysleep+= addsleep , mysleep= mysleep>maxsleep ?maxsleep:mysleep))
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user