我正在制作一个电报机器人。我正在使用laravel和Telegram Bot SDK。今天我遇到了一个问题,机器人递归地向用户发送相同的屏幕截图响应。或者只是“我认为”的信息。
\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确定问题后设置块。日志中有 499 和 500 错误。关于错误处理的问题,以避免来自机器人的垃圾邮件。是否有必要在其他地方捕获错误。如何登录,包括服务器状态代码?
可能没有人会感到惊讶,但这当然是值得的。
对于日志记录,请使用 Laravel 的标准功能:
并且以记录服务器状态代码为代价,您自己在上面写道,您查看了日志。如果您的意思是在线,以便您可以快速做出反应,请查看https://www.statuscake.com的示例
有这样的问题,调用 sendMessage 方法时,相同的消息多次出现而没有停止。
在代码中调用方法后
sendMessage,我添加以下行:有什么意义,如果 bot 在 header 中没有收到 200 的状态,它会用相同的数据重复处理,依此类推,直到响应为 200。