From 696589ad361bfac1df317ee2fa2695a9cf97901f Mon Sep 17 00:00:00 2001 From: fomichev Date: Wed, 30 Oct 2024 18:02:44 +0300 Subject: [PATCH] =?utf8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?utf8?q?=D0=B8=D0=B5=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= =?utf8?q?=20=D0=BB=D0=BE=D0=B3=D0=BE=D0=B2=20=D0=B8=20=D0=B7=20=D0=B4?= =?utf8?q?=D1=80=D1=83=D0=B3=D0=B8=D1=85=20=D0=B8=D1=81=D1=82=D0=BE=D1=87?= =?utf8?q?=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/actions/log/CollectAction.php | 29 +++++++++++++++++++++++++++- erp24/services/InfoLogService.php | 20 ++++++++++++++++--- erp24/services/LogService.php | 18 +++++++++++++++++ erp24/services/TelegramService.php | 30 +++++++++++++++++++++++++++++ 4 files changed, 93 insertions(+), 4 deletions(-) diff --git a/erp24/actions/log/CollectAction.php b/erp24/actions/log/CollectAction.php index dbdf20a4..b87a6e27 100755 --- a/erp24/actions/log/CollectAction.php +++ b/erp24/actions/log/CollectAction.php @@ -5,6 +5,7 @@ namespace yii_app\actions\log; use yii\base\Action; use yii_app\records\ErrorLog; +use yii_app\services\TelegramService; /** * График сотрудников @@ -26,7 +27,33 @@ class CollectAction extends Action 'message'=> $this->controller->request->post('message', ''), 'context'=> $this->controller->request->post('context', null), ]); - $log->save(); + // Сохраняем лог в базе данных + if ($log->save()) { + // Формируем сообщение для отправки в Telegram с использованием MarkdownV2 + $errorMessage = sprintf( + "*JavaScript Error Detected*\n\n" . + "*URL:*\n```%s```\n\n" . + "*Created At:*\n```%s```\n\n" . + "*IP:*\n```%s```\n\n" . + "*User Agent:*\n```%s```\n\n" . + "*File:* `%s`\n" . + "*Line:* `%s`, *Column:* `%s`\n" . + "*Message:*\n```%s```\n\n" . + "*Context:*\n```%s```", + $this->controller->request->getReferrer() ?? '', + date('Y-m-d H:i:s', $log->log_time), + $log->ip, + $log->user_agent, + $log->file ?? '', + $log->line ?? '', + $log->col ?? '', + $log->message, + $log->context ?? '' + ); + + // Отправляем сообщение об ошибке в Telegram через TelegramService + TelegramService::sendErrorToTelegramMessage($errorMessage); + } } } diff --git a/erp24/services/InfoLogService.php b/erp24/services/InfoLogService.php index 591f74a4..6aaae416 100644 --- a/erp24/services/InfoLogService.php +++ b/erp24/services/InfoLogService.php @@ -22,9 +22,23 @@ class InfoLogService ->setMessage($messageText) ->setLogTime() ->setCreatedAt(); - $validate = $infoLog->validate(); - if ($validate) { - $infoLog->save(); + // Валидация и сохранение лога в базе данных + if ($infoLog->validate() && $infoLog->save()) { + // Форматируем сообщение для отправки в Telegram + $telegramMessage = sprintf( + "*Info Log Detected*\n\n" . + "*File:* `%s`\n" . + "*Line:* `%s`\n" . + "*Message:*\n```%s```\n\n" . + "*Context:*\n```%s```", + $file ?? '', + $line ?? '', + $messageText, + $context ?? '' + ); + + // Отправляем сообщение в Telegram + TelegramService::sendErrorToTelegramMessage($telegramMessage); } } diff --git a/erp24/services/LogService.php b/erp24/services/LogService.php index 06baca0c..efee9ec7 100644 --- a/erp24/services/LogService.php +++ b/erp24/services/LogService.php @@ -61,6 +61,24 @@ class LogService $apiErrorLog->payload = $jsonString; $apiErrorLog->ip = Yii::$app->request->remoteIP ?? ''; $apiErrorLog->save(); + + // Форматируем сообщение об ошибке для Telegram с использованием MarkdownV2 + $errorMessage = sprintf( + "*API Error Detected*\n\n" . + "*URL:*\n```%s```\n\n" . + "*Created At:*\n```%s```\n\n" . + "*IP:*\n```%s```\n\n" . + "*Payload:*\n```json\n%s```", + $apiErrorLog->url, + $apiErrorLog->created_at, + $apiErrorLog->ip, + $jsonString + ); + + // Отправляем сообщение об ошибке в Telegram + TelegramService::sendErrorToTelegramMessage($errorMessage); + + } else { $h->actualed_at = date('Y-m-d H:i:s'); $h->ip = Yii::$app->request->remoteIP ?? ''; diff --git a/erp24/services/TelegramService.php b/erp24/services/TelegramService.php index 84eedf5b..c75dc0c5 100644 --- a/erp24/services/TelegramService.php +++ b/erp24/services/TelegramService.php @@ -2,7 +2,15 @@ namespace yii_app\services; +use GuzzleHttp\Client; +use Yii; + class TelegramService { + + + const TELEGRAM_API_URL = "8063257458:AAGnMf4cxwJWlYLF1wS_arn4PrOaLs9ERQQ"; + + const CHAT_CHANNEL_ID ="-1001861631125"; public static function sendMessage($admin_id, $message, $reply_markup = null) { $url = "https://api2.bazacvetov24.ru/telegram/send-message?admin_id=$admin_id&message=$message"; if ($reply_markup) { @@ -11,4 +19,26 @@ class TelegramService { $client = new \GuzzleHttp\Client(); return $client->request('GET', $url); } + +public static function sendErrorToTelegramMessage($message) +{ + $botToken = self::TELEGRAM_API_URL; + $chatId = self::CHAT_CHANNEL_ID; + $apiURL = "https://api.telegram.org/bot{$botToken}/sendMessage"; + + $client = new Client(); + try { + $client->post($apiURL, [ + 'json' => [ + 'chat_id' => $chatId, + 'text' => $message, + 'parse_mode' => 'MarkdownV2' + ], + ]); + } catch (\Exception $e) { + Yii::error("Ошибка отправки сообщения в Telegram: " . $e->getMessage(), 'telegram'); + } +} + + } \ No newline at end of file -- 2.39.5