From 17e6d7ae08b9f46b6adc82e9f2aabe8369928034 Mon Sep 17 00:00:00 2001 From: Sergey Date: Mon, 18 May 2026 13:38:01 +0700 Subject: [PATCH] =?UTF-8?q?feat:=20Telegram=20=D1=82=D0=B5=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D1=8C=20=D0=BE=D0=BF=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D0=B9,=20=D0=BA=D0=B0=D0=BA=20MAX?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++++++++---- monitor.py | 6 ++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a307858..c243f78 100644 --- a/README.md +++ b/README.md @@ -111,15 +111,17 @@ docker build -t mikrotik-monitor:latest . | `MIKROTIK_PASSWORD` | ✅ | — | Пароль | | `ADDRESS_LIST_NAME` | ✅ | — | Имя списка в `/ip firewall address-list` | -### Telegram +### Telegram (опционально) | Переменная | Обязательная | По умолчанию | Описание | |---|:---:|---|---| -| `TELEGRAM_BOT_TOKEN` | ✅ | — | Токен бота от @BotFather | -| `TELEGRAM_CHAT_ID` | ✅ | — | ID чата/группы/канала | +| `TELEGRAM_BOT_TOKEN` | | — | Токен бота от @BotFather | +| `TELEGRAM_CHAT_ID` | | — | ID чата/группы/канала | | `TELEGRAM_API_URL` | | `https://api.telegram.org` | URL API (замените на прокси если заблокирован) | -### MAX (VK Teams) +> Если `TELEGRAM_BOT_TOKEN` или `TELEGRAM_CHAT_ID` не заданы — уведомления в Telegram не отправляются. + +### MAX (VK Teams, опционально) | Переменная | Обязательная | По умолчанию | Описание | |---|:---:|---|---| @@ -129,6 +131,8 @@ docker build -t mikrotik-monitor:latest . > Если `MAX_BOT_TOKEN` или `MAX_CHAT_ID` не заданы — уведомления в MAX не отправляются. +> ⚠️ Хотя бы один канал уведомлений должен быть настроен. + ### Мониторинг | Переменная | Обязательная | По умолчанию | Описание | diff --git a/monitor.py b/monitor.py index 72fe970..b2f82d4 100644 --- a/monitor.py +++ b/monitor.py @@ -22,8 +22,8 @@ MIKROTIK_PORT = int(os.getenv("MIKROTIK_PORT", "8728")) MIKROTIK_USER = os.environ["MIKROTIK_USER"] MIKROTIK_PASSWORD = os.environ["MIKROTIK_PASSWORD"] -TELEGRAM_BOT_TOKEN = os.environ["TELEGRAM_BOT_TOKEN"] -TELEGRAM_CHAT_ID = os.environ["TELEGRAM_CHAT_ID"] +TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "") +TELEGRAM_CHAT_ID = os.getenv("TELEGRAM_CHAT_ID", "") TELEGRAM_API_URL = os.getenv("TELEGRAM_API_URL", "https://api.telegram.org") # MAX (VK Teams) — опционально, если не заданы — уведомления не отправляются @@ -54,6 +54,8 @@ log = logging.getLogger(__name__) # Telegram # ────────────────────────────────────────────── async def send_telegram(message: str) -> None: + if not TELEGRAM_BOT_TOKEN or not TELEGRAM_CHAT_ID: + return url = f"{TELEGRAM_API_URL}/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": TELEGRAM_CHAT_ID, "text": message, "parse_mode": "HTML"} async with httpx.AsyncClient(timeout=10) as client: