mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2024-11-26 09:16:28 +00:00
error handling: retry or not to retry?
This commit is contained in:
parent
9b138eecbd
commit
de745719dc
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-dev3-24-gb189191
|
#### $$VERSION$$ v0.96-dev3-25-g9b138ee
|
||||||
#
|
#
|
||||||
# Exit Codes:
|
# Exit Codes:
|
||||||
# - 0 sucess (hopefully)
|
# - 0 sucess (hopefully)
|
||||||
@ -364,29 +364,51 @@ else
|
|||||||
[ "${SOURCE}" != "yes" ] && [ -n "${BASHBOT_EVENT_SEND[*]}" ] && event_send "upload" "$@" &
|
[ "${SOURCE}" != "yes" ] && [ -n "${BASHBOT_EVENT_SEND[*]}" ] && event_send "upload" "$@" &
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
# internal function for sendJson sendUplaod etc
|
|
||||||
# checks and processes resukt
|
# checks and processes resukt
|
||||||
# $1 result
|
# $1 result
|
||||||
# $2 function
|
# $2 function
|
||||||
# $3 .. $n original arguments
|
# $3 .. $n original arguments
|
||||||
# first argument ($3) is Chat_id
|
# first argument ($3) is Chat_id
|
||||||
sendJsonResult(){
|
sendJsonResult(){
|
||||||
BOTSENT[OK]="$(JsonGetLine '"ok"' <<< "${3}")"
|
BOTSENT=( )
|
||||||
|
BOTSENT[OK]="$(JsonGetLine '"ok"' <<< "${1}")"
|
||||||
if [ "${BOTSENT[OK]}" = "true" ]; then
|
if [ "${BOTSENT[OK]}" = "true" ]; then
|
||||||
BOTSENT[ID]="$(JsonGetValue '"result","message_id"' <<< "${3}")"
|
BOTSENT[ID]="$(JsonGetValue '"result","message_id"' <<< "${1}")"
|
||||||
[ -n "${BASHBOT_EVENT_SEND[*]}" ] && event_send "send" "${@:2}"
|
[ -n "${BASHBOT_EVENT_SEND[*]}" ] && event_send "send" "${@:2}"
|
||||||
return
|
return
|
||||||
|
# hot path everthing OK!
|
||||||
else
|
else
|
||||||
|
# oops something went wrong!
|
||||||
if [ "${res}" != "" ]; then
|
if [ "${res}" != "" ]; then
|
||||||
BOTSENT[ERROR]="$(JsonGetValue '"error_code"' <<< "${3}")"
|
BOTSENT[ERROR]="$(JsonGeOtValue '"error_code"' <<< "${1}")"
|
||||||
BOTSENT[DESCRIPTION]="$(JsonGetString '"description"' <<< "${3}")"
|
BOTSENT[DESCRIPTION]="$(JsonGetString '"description"' <<< "${1}")"
|
||||||
BOTSENT[RETRY]="$(JsonGetValue '"parameters","retry_after"' <<< "${3}")"
|
BOTSENT[RETRY]="$(JsonGetValue '"parameters","retry_after"' <<< "${1}")"
|
||||||
else
|
else
|
||||||
BOTSENT[ERROR]="999"
|
BOTSENT[ERROR]="999"
|
||||||
BOTSENT[DESCRIPTION]="Timeout or broken/no connection"
|
BOTSENT[DESCRIPTION]="Timeout or broken/no connection"
|
||||||
fi
|
fi
|
||||||
printf "%s: CHAT[ID]=%s ACTION=%s ERROR=%s DESC=%s\n"\
|
# log error
|
||||||
"$(date)" "${3}" "${2}" "${BOTSENT[ERROR]}" "${BOTSENT[DESCRIPTION]}" >>"${LOGDIR}/ERROR.log"
|
printf "%s: RESULT=%s CHAT[ID]=%s ACTION=%s ERROR=%s DESC=%s\n" "$(date)"\
|
||||||
|
"${BOTSENT[OK]}" "${3}" "${2}" "${BOTSENT[ERROR]}" "${BOTSENT[DESCRIPTION]}" >>"${LOGDIR}/ERROR.log"
|
||||||
|
# retry once if we are throttled
|
||||||
|
[ -n "${BOTSEND_RETRY}" ] && return
|
||||||
|
if [ -n "${BOTSENT[RETRY]}" ]; then
|
||||||
|
BOTSEND_RETRY="(( ${BOTSENT[RETRY]} * 15/10 ))"
|
||||||
|
echo "Retry ${2} in ${BOTSEND_RETRY} seconds ..." >>"${LOGDIR}/ERROR.log"
|
||||||
|
fi
|
||||||
|
# timeout or failed connection
|
||||||
|
if [ "${BOTSENT[ERROR]}" == "999" ];then
|
||||||
|
# check if default curl and args are OK
|
||||||
|
if ! curl -sL -k -m 2 "${URL}" >/dev/null 2>&1 ; then
|
||||||
|
echo "BASHBOT is blocked!" >>"${LOGDIR}/ERROR.log"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
# retry without custom curl and args
|
||||||
|
if [ -n "${BASHBOT_CURL_ARGS}" ] || [ -n "${BASHBOT_CURL}" ]; then
|
||||||
|
BOTSEND_RETRY="2"
|
||||||
|
echo "Timeout or broken connection, retry ${2} with default curl parameters ..." >>"${LOGDIR}/ERROR.log"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user