return;
}
- $message = new Message($this->messages[0]);
-
$isDev = TelegramService::isDevEnv();
+ $serverName = getenv('SERVER_NAME') ?: "";
+ $hasError = false;
+ $parts = [];
+
+ foreach ($this->messages as $rawMessage) {
+ $message = new Message($rawMessage);
+
+ if ($message->message[1] === Logger::LEVEL_ERROR) {
+ $hasError = true;
+ }
+
+ $errorText = $message->getText();
+ if (!$this->shouldSendMessage($errorText)) {
+ continue;
+ }
+
+ $level = isset($this->levelEmojis[$message->message[1]])
+ ? $this->levelEmojis[$message->message[1]] . ' '
+ : '*' . ucfirst($message->getLevel()) . '* @ ';
+ if ($message->getIsConsoleRequest()) {
+ $level .= '```' . $message->getCommandLine() . '```';
+ } else {
+ $level .= '[' . $message->getUrl() . '](' . $message->getUrl() . ')';
+ }
+
+ $parts[] = implode("\n", [
+ $level,
+ " ",
+ "```" . mb_substr("\n" . $errorText, 0, 800) . "```",
+ " ",
+ "```" . $message->getStackTrace() . "```",
+ "🙂 " . $message->getUserIp() . " " . $serverName,
+ ]);
+ }
- // Проверка наличия подобных сообщений
- /*if (!$this->shouldSendMessage($errorText)) {
+ if (empty($parts)) {
return;
- }*/
-
- // Формирование уровня и основного сообщения
- $level = isset($this->levelEmojis[$message->message[1]]) ? $this->levelEmojis[$message->message[1]] . ' ' : '*' . ucfirst($message->getLevel()) . '* @ ';
- if ($message->getIsConsoleRequest()) {
- $level .= '```' . $message->getCommandLine() . '```';
- } else {
- $level .= '[' . $message->getUrl() . '](' . $message->getUrl() . ')';
}
- $serverName = getenv('SERVER_NAME') ? getenv('SERVER_NAME') : "";
- // Текст сообщения
- $text = [
- $level,
- " ",
- "```" . mb_substr( "\n" . $message->getText(), 0, 3300) . "```",
- " ",
- "```" . $message->getStackTrace() . "```",
- "🙂 " . $message->getUserIp() . " " . $serverName,
- ];
-
- $formattedMessage = implode("\n", $text);
+ $formattedMessage = mb_substr(implode("\n\n---\n\n", $parts), 0, 4000);
$formattedMessage = TelegramService::escapeMarkdown($formattedMessage);
- // Настройка уведомления для сообщений уровня ERROR
- $disableNotification = $message->message[1] !== Logger::LEVEL_ERROR;
+ $disableNotification = !$hasError;
- // Отправка сообщения через TelegramService
try {
TelegramService::sendErrorToTelegramMessage($formattedMessage, $disableNotification, $isDev);
} catch (\Exception $e) {