如何捕获电报机器人的任何错误?

时间:2017-04-19 06:37:39

标签: php laravel try-catch telegram-bot

我想知道如何捕获电报机器人API中的任何可能的错误。 因为发生错误时,电报会粘在它上面并且不回复另一个请求。 我想摆脱可能由我的代码中的错误或我使用的网络服务或阻止机器人或...的错误导致的任何错误 如何避免在使用PHP的电报机器人API中坚持一个请求? 我认为我需要的是像波纹管代码,但对于任何类型的错误都更为通用:

try {

    $telegram->sendMessage([
        'chat_id'                  => '<PERSONS_ID>',
        'text'                     => 'Here is some text',
    ]);
} catch (TelegramResponseException $e) {
    $errorData = $e->getResponseData();

    if ($errorData['ok'] === false) {
        $telegram->sendMessage([
            'chat_id' => '<ADMINISTRATOR ID>',
            'text'    => 'There was an error for a user. ' . $errorData['error_code'] . ' ' . $errorData['description'],
        ]);
    }
}

1 个答案:

答案 0 :(得分:0)

最后我通过一个技巧解决了这个问题。我创建了另一个用于错误处理的机器人。 所以我有一个机器人X和一个错误处理机器人Y. 这里的POST方法我从电报收到webhooks:

public function postWebhook(Request $request)

    { .....
        try
        { ....
         bot X token
         everything the bot want to do...
        }
        catch (\Exception $e) 
        {
             bot Y send me the probable problem in my code....
        }
        catch (Throwable $e)
        {
               bot Y send me the probable problem in telegram such 
               as blocking ,..
        }

现在我防止出现错误并且机器人工作得很好。如果我的网络服务的一部分出现问题或我的代码有错误,我甚至会收到通知。