Разработка бота уведомлений в Telegram о критических событиях сайта

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Разработка бота уведомлений в Telegram о критических событиях сайта
Простая
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Разработка бота уведомлений в Telegram о критических событиях сайта

Мониторинг критических событий через Telegram — быстрый способ получать алерты о проблемах сайта на мобильный телефон, минуя email и системы мониторинга. Бот уведомляет: упал сайт, ошибка оплаты, переполнился диск, появились 500-е ошибки.

Типы событий

// Список критических событий с уровнями важности
enum AlertLevel: string {
    case CRITICAL = '🔴';  // требует немедленной реакции
    case WARNING  = '🟡';  // требует внимания
    case INFO     = '🔵';  // информационное
}

class SiteEventAlerter
{
    public function alert(AlertLevel $level, string $event, array $context = []): void
    {
        $message = "{$level->value} <b>{$event}</b>\n\n";

        foreach ($context as $key => $value) {
            $message .= "<b>{$key}:</b> {$value}\n";
        }

        $message .= "\n⏰ " . now()->format('d.m.Y H:i:s');

        // Критические события — личные сообщения дежурному
        $recipients = $level === AlertLevel::CRITICAL
            ? $this->getOnCallEngineers()
            : [$this->alertsChannelId];

        foreach ($recipients as $chatId) {
            $this->telegram->sendMessage($chatId, $message);
        }
    }
}

Интеграция в код

// В обработчике исключений (Handler.php)
public function report(Throwable $exception): void
{
    if ($exception instanceof PaymentException) {
        app(SiteEventAlerter::class)->alert(
            AlertLevel::CRITICAL,
            'Ошибка платёжного шлюза',
            [
                'Gateway' => $exception->getGateway(),
                'Order'   => $exception->getOrderId(),
                'Error'   => $exception->getMessage(),
            ]
        );
    }

    parent::report($exception);
}

// В планировщике (Kernel.php)
$schedule->call(function () {
    $freeSpace = disk_free_space('/') / disk_total_space('/') * 100;
    if ($freeSpace < 10) {
        app(SiteEventAlerter::class)->alert(
            AlertLevel::WARNING,
            'Мало свободного места на диске',
            ['Свободно' => round($freeSpace, 1) . '%']
        );
    }
})->hourly();

Антиспам

Одна и та же ошибка может генерировать сотни алертов в минуту. Дедупликация через Redis:

private function shouldSend(string $eventKey): bool
{
    $cacheKey = "alert_dedup:{$eventKey}";
    if (Cache::has($cacheKey)) return false;
    Cache::put($cacheKey, 1, now()->addMinutes(15));
    return true;
}

Время реализации: 1–2 рабочих дня.