use yii\base\Action;
use yii_app\records\ErrorLog;
+use yii_app\services\TelegramService;
/**
* График сотрудников
'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() ?? '<no referrer>',
+ date('Y-m-d H:i:s', $log->log_time),
+ $log->ip,
+ $log->user_agent,
+ $log->file ?? '<no file>',
+ $log->line ?? '<no line>',
+ $log->col ?? '<no col>',
+ $log->message,
+ $log->context ?? '<no context>'
+ );
+
+ // Отправляем сообщение об ошибке в Telegram через TelegramService
+ TelegramService::sendErrorToTelegramMessage($errorMessage);
+ }
}
}
->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 ?? '<no file>',
+ $line ?? '<no line>',
+ $messageText,
+ $context ?? '<no context>'
+ );
+
+ // Отправляем сообщение в Telegram
+ TelegramService::sendErrorToTelegramMessage($telegramMessage);
}
}
$apiErrorLog->payload = $jsonString;
$apiErrorLog->ip = Yii::$app->request->remoteIP ?? '<no ip>';
$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 ?? '<no ip>';
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) {
$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