错误处理程序电报机器人

时间:2017-10-19 13:07:28

标签: php laravel telegram-bot

我使用laravel和sdk创建电报机器人今天有一个问题 - 机器人递归地向用户发送相同的消息,如picture

\Telegram::sendMessage([
                'chat_id' => $chatid,
                'text' => "Считаю...",
            ]);

            $controller = $this->getReportControllerName($text);
            $method = $this->getReportMethodName($text);
            $report_data = new $controller();
            $report_data = $report_data->$method($chatid);

            try
            {
                \Telegram::sendMessage([
                    'chat_id' => $chatid,
                    'text' => $report_data,
                ]);
            }
            catch (TelegramResponseException $e)
            {
                $errorData = $e->getResponseData();

                if ($errorData['ok'] === false) {
                    \Telegram::sendMessage([
                        'chat_id' => '123456789',
                        'text'    => 'There was an error for a user. ' . $errorData['error_code'] . ' ' . $errorData['description'],
                    ]);
                }
            }

Try-catch block添加检测后问题。在我的日志中,有很多499500错误。我还能做些什么来解决这个问题?将try-catch添加到程序的其他部分或其他内容?

1 个答案:

答案 0 :(得分:0)

您需要在webhook上回复200 OK,否则电报会一次又一次地尝试发送消息。

您需要捕获所有异常并在每个请求上回复200 OK。

您可以使用以下代码部分:

try
        {
            return \Telegram::sendMessage([
                'chat_id' => $chatid,
                'text' => $report_data,
            ]);
        }