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: