Версия: 1.0.0
Дата: 2026-01-11
Статус: Ready
Тип: Telegram Bot (long polling)
Персональный Telegram бот для мониторинга и управления системой.
Отличия от monitor/run.py:
- Интерактивный (команды в реальном времени)
- Персональный (только для владельца)
- Мобильный (доступ из Telegram)
Telegram → Bot API → MonitorBot → Handlers → system/monitor/
↓ ↓ ↓
Owner Check ID /status → run.py --quick
/alerts → .monitor/alerts/
/logs → journalctl
Компоненты:
- bot.py — Главный файл, long polling, маршрутизация
- handlers/ — Обработчики команд
- config.yaml — Настройки
def is_allowed(self, user_id: int) -> bool:
return user_id == self.owner_id
Только владелец может использовать бота.
handlersnginx, monitor, system, dockersystem/scheduler/run.py --runВсе subprocess с timeout:
- /status — 30s
- /logs — 10s
- /run — 120s
/restart — отключена (требует sudo)
# Установить переменные
export MONITOR_BOT_TOKEN='123456:ABC-DEF...'
export OWNER_TELEGRAM_ID='123456789'
# Запустить
python3 system/bots/monitor/bot.py
/status — Статус системы
/alerts — Активные алерты
/last_check — Последняя проверка
/logs nginx — Логи nginx
/help — Справка
# handlers/monitoring.py
def handle_status(bot, args):
result = subprocess.run([
"python3",
str(MONITOR_PATH / "run.py"),
"--quick",
"--json"
])
data = json.loads(result.stdout)
return format_status(data)
# handlers/system.py
def handle_run(bot, args):
task_name = args[0]
result = subprocess.run([
"python3",
str(WORKSPACE / "system/scheduler/run.py"),
"--run",
task_name
])
return f"✅ Задача {task_name} выполнена"
handlers/:def handle_mycommand(bot, args):
# Логика
return "✅ <b>Результат</b>"
bot.py:handlers = {
'/mycommand': handle_mycommand,
}
TODO: Интеграция с system/monitor/ для отправки алертов автоматически.
# system/monitor/alerts/telegram.py
def send_alert_to_bot(severity, title, message):
bot = MonitorBot.from_env()
bot.send_message(
f"🚨 <b>{title}</b>\n\n{message}"
)
library/connectors/api/telegram/ — TelegramBotsystem/monitor/ — Проверки системыsystem/scheduler/ — Запуск задачВерсия: 1.0.0