feat: Telegram теперь опциональный, как MAX

This commit is contained in:
2026-05-18 13:38:01 +07:00
parent 2a41fa8df4
commit 17e6d7ae08
2 changed files with 12 additions and 6 deletions
+8 -4
View File
@@ -111,15 +111,17 @@ docker build -t mikrotik-monitor:latest .
| `MIKROTIK_PASSWORD` | ✅ | — | Пароль | | `MIKROTIK_PASSWORD` | ✅ | — | Пароль |
| `ADDRESS_LIST_NAME` | ✅ | — | Имя списка в `/ip firewall address-list` | | `ADDRESS_LIST_NAME` | ✅ | — | Имя списка в `/ip firewall address-list` |
### Telegram ### Telegram (опционально)
| Переменная | Обязательная | По умолчанию | Описание | | Переменная | Обязательная | По умолчанию | Описание |
|---|:---:|---|---| |---|:---:|---|---|
| `TELEGRAM_BOT_TOKEN` | | — | Токен бота от @BotFather | | `TELEGRAM_BOT_TOKEN` | | — | Токен бота от @BotFather |
| `TELEGRAM_CHAT_ID` | | — | ID чата/группы/канала | | `TELEGRAM_CHAT_ID` | | — | ID чата/группы/канала |
| `TELEGRAM_API_URL` | | `https://api.telegram.org` | URL API (замените на прокси если заблокирован) | | `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 не отправляются. > Если `MAX_BOT_TOKEN` или `MAX_CHAT_ID` не заданы — уведомления в MAX не отправляются.
> ⚠️ Хотя бы один канал уведомлений должен быть настроен.
### Мониторинг ### Мониторинг
| Переменная | Обязательная | По умолчанию | Описание | | Переменная | Обязательная | По умолчанию | Описание |
+4 -2
View File
@@ -22,8 +22,8 @@ MIKROTIK_PORT = int(os.getenv("MIKROTIK_PORT", "8728"))
MIKROTIK_USER = os.environ["MIKROTIK_USER"] MIKROTIK_USER = os.environ["MIKROTIK_USER"]
MIKROTIK_PASSWORD = os.environ["MIKROTIK_PASSWORD"] MIKROTIK_PASSWORD = os.environ["MIKROTIK_PASSWORD"]
TELEGRAM_BOT_TOKEN = os.environ["TELEGRAM_BOT_TOKEN"] TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "")
TELEGRAM_CHAT_ID = os.environ["TELEGRAM_CHAT_ID"] TELEGRAM_CHAT_ID = os.getenv("TELEGRAM_CHAT_ID", "")
TELEGRAM_API_URL = os.getenv("TELEGRAM_API_URL", "https://api.telegram.org") TELEGRAM_API_URL = os.getenv("TELEGRAM_API_URL", "https://api.telegram.org")
# MAX (VK Teams) — опционально, если не заданы — уведомления не отправляются # MAX (VK Teams) — опционально, если не заданы — уведомления не отправляются
@@ -54,6 +54,8 @@ log = logging.getLogger(__name__)
# Telegram # Telegram
# ────────────────────────────────────────────── # ──────────────────────────────────────────────
async def send_telegram(message: str) -> None: 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" url = f"{TELEGRAM_API_URL}/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
payload = {"chat_id": TELEGRAM_CHAT_ID, "text": message, "parse_mode": "HTML"} payload = {"chat_id": TELEGRAM_CHAT_ID, "text": message, "parse_mode": "HTML"}
async with httpx.AsyncClient(timeout=10) as client: async with httpx.AsyncClient(timeout=10) as client: