mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2024-11-26 01:07:34 +00:00
update doc for error processing
This commit is contained in:
parent
6c02bab1bd
commit
15928bd58f
@ -203,8 +203,72 @@ answer_inline_query "${iQUERY[ID]}" "cached_sticker" "identifier for the sticker
|
|||||||
```
|
```
|
||||||
See also [answer_inline_multi, answer_inline_compose](6_reference.md#answer_inline_multi) and [mycommands.sh](../mycommands.sh) for more information.
|
See also [answer_inline_multi, answer_inline_compose](6_reference.md#answer_inline_multi) and [mycommands.sh](../mycommands.sh) for more information.
|
||||||
|
|
||||||
|
|
||||||
|
### Handle send message errors
|
||||||
|
|
||||||
|
Usually the exmaples do not care if an error happen while sending a message, this is because bashbot detects if a message is
|
||||||
|
not sent and try to recover when possible, e.g. resend on throttling.
|
||||||
|
|
||||||
|
In addition on every transmission to telegram the results are provided as bash in bash variables.
|
||||||
|
|
||||||
|
#### Trasmission results
|
||||||
|
|
||||||
|
**Note**: the values of the variables contains always the result of the LAST transmission to telegram,
|
||||||
|
everey send action will overwrite them!
|
||||||
|
|
||||||
|
* ```$BOTSENT```: This array contains the parsed results from the last transmission to telegram.
|
||||||
|
* ```${BOTSENT[OK]}```: contain's the string 'true' after a successful transmission
|
||||||
|
* ```${BOTSENT[ERROR]}```: Error code if OK is not true
|
||||||
|
* ```${BOTSENT[DESC]}```: Description text for error
|
||||||
|
* ```${BOTSENT[RETRY]}```: Seconds to wait ifntelegram requests throtteling.
|
||||||
|
* ```$res```: temporary variable containing the full transmission result, may be overwritten by any bashbot function.
|
||||||
|
|
||||||
|
By default you don't have to care about retry, as bashbot resend the message after the requested time automatically.
|
||||||
|
Only if the retry fails also an error is returned. The downside is that send_message functions will wait until resend is done.
|
||||||
|
|
||||||
|
If you want to disbale all automtic 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)
|
||||||
|
|
||||||
|
|
||||||
|
#### Detect bot blocked
|
||||||
|
|
||||||
|
If the we can't connect to telegram, e.g. blocked from telegram server but also any other reason,
|
||||||
|
bashbot set ```BOTSENT[ERROR]``` to '999'.
|
||||||
|
|
||||||
|
To get a notification on every connection problem create a function named ```bashbotBlockRecover``` and handle blocks there.
|
||||||
|
If the function returns true (0 or no value) bashbot will retry once and then return to the calling function.
|
||||||
|
In case you return any non 0 value bashbot will return to the calling function without retry.
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# somewhere in myfunctions.sh ...
|
||||||
|
MYBLOCKED="0"
|
||||||
|
|
||||||
|
function bashbotBlockRecover() {
|
||||||
|
# ups, we are blocked!
|
||||||
|
(( MYBLOCKED++ ))
|
||||||
|
# log what we gotr
|
||||||
|
printf "%s: Blocked %d times: %s\n" "$(date)" "${MYBLOCKED}" "$*" >>"${ERRORLOG}"
|
||||||
|
|
||||||
|
if [ "${MYBLOCKED}" -gt 10 ]; then
|
||||||
|
printf "Permanent problem abort current command: %s\n" "${MESSAGE}">>"${ERRORLOG}"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
if do_something_to_unblock; then
|
||||||
|
# may be we removed block, e.g. changed IP address, try again
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
# do not retry if we cant recover
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
#### [Prev Getting started](2_usage.md)
|
#### [Prev Getting started](2_usage.md)
|
||||||
#### [Next Expert Use](4_expert.md)
|
#### [Next Expert Use](4_expert.md)
|
||||||
|
|
||||||
#### $$VERSION$$ v0.96-dev3-13-g601fe0e
|
#### $$VERSION$$ v0.96-pre-37-g6c02bab
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user