From c5b4d1c8662cf5596e5187d823d5a4b0c21baa85 Mon Sep 17 00:00:00 2001 From: eleksir Date: Mon, 2 Jan 2023 19:34:38 +0300 Subject: [PATCH] Try to catch and log as most Bot API errors as we can in TelegramBot.pm --- lib/TelegramBot.pm | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/lib/TelegramBot.pm b/lib/TelegramBot.pm index 96842eb..4039872 100644 --- a/lib/TelegramBot.pm +++ b/lib/TelegramBot.pm @@ -118,13 +118,14 @@ sub __on_msg { my $myObj = $self->getMe (); if ($myObj->{error}) { + $log->error ("[ERROR] Unable to call getMe BotAPI method: " . Dumper ($myObj)); return; } - $myid = $myObj->id; - $myusername = $myObj->username; + $myid = $myObj->id; + $myusername = $myObj->username; $myfirst_name = $myObj->first_name; - $mylast_name = $myObj->last_name; + $mylast_name = $myObj->last_name; if (defined ($myfirst_name) && ($myfirst_name ne '') && defined ($mylast_name) && ($mylast_name ne '')) { $myfullname = $myfirst_name . ' ' . $mylast_name; @@ -207,7 +208,12 @@ sub __on_msg { } BotSleep $msg; - $msg->replyMd ($phrase); + my $res = $msg->replyMd ($phrase); + + if ($res->{error}) { + $log->error ("Unable to call sendMessage BotAPI method: " . Dumper ($res)); + } + return; } @@ -250,7 +256,12 @@ sub __on_msg { my $leftuser = sprintf '[%s](tg://user?id=%s)', $member_str, $member->id; $phrase = sprintf $goodbye[irand ($#goodbye + 1)], $leftuser; - $msg->replyMd ($phrase); + my $res = $msg->replyMd ($phrase); + + if ($res->{error}) { + $log->error ("Unable to call sendMessage BotAPI method: " . Dumper ($res)); + } + return; } @@ -310,7 +321,11 @@ sub __on_msg { # И вот тут как раз такая проверка и происходит if (IsCensored $msg) { $log->info (sprintf '[INFO] In public chat %s (%s) message from %s was censored', $chatname, $chatid, $vis_a_vi); - $self->deleteMessage ({chat_id => $chatid, message_id => $msg->{message_id}}); + my $res = $self->deleteMessage ({chat_id => $chatid, message_id => $msg->{message_id}}); + + if ($res->{error}) { + $log->error ("Unable to call sendMessage BotAPI method: " . Dumper ($res)); + } } # Некоторые рекламные товарищи пытаются срать своими каналами в чятик это тоже можно зацензурить ботом и это @@ -322,7 +337,11 @@ sub __on_msg { if (defined $sender_chat) { unless (ChanMsgEnabled ($chatid)) { - $self->deleteMessage ({chat_id => $chatid, message_id => $msg->{message_id}}); + my $res = $self->deleteMessage ({chat_id => $chatid, message_id => $msg->{message_id}}); + + if ($res->{error}) { + $log->error ("Unable to call sendMessage BotAPI method: " . Dumper ($res)); + } } } } @@ -489,7 +508,12 @@ sub __on_msg { $chatname, $chatid, $vis_a_vi, $reply, ) ); - $msg->reply ($reply); + + my $res = $msg->reply ($reply); + + if ($res->{error}) { + $log->error ("Unable to call sendMessage BotAPI method: " . Dumper ($res)); + } } else { $log->debug ( sprintf ( @@ -526,6 +550,8 @@ sub RunTelegramBot { eval { ## no critic (ErrorHandling::RequireCheckingReturnValueOfEval) TelegramBot->new->think; }; + + $log->error ("[ERROR] $EVAL_ERROR"); } return;