Дата: 2026-01-11
Статус: Планирование
Превратить систему мониторинга в персонального Telegram бота.
Текущая схема:
system/monitor/run.py
↓ проверки
Telegram уведомления (library/connectors/api/telegram/)
Новая схема:
Telegram бот (@my_monitor_bot)
↓ только для твоего номера
Команды + мониторинг + диалог
↓ отдельная сессия Claude
Интерактивный помощник
/status - Текущий статус всех систем
/alerts - Активные алерты
/last_check - Результаты последней проверки
Автоматически:
- Отправляет алерты при проблемах
- Ежедневный отчёт (утром)
/run <задача> - Запустить задачу
/tasks - Список задач scheduler
/logs <сервис> - Показать логи
/restart <сервис> - Перезапустить сервис
Любой текст → отдельная сессия Claude
"Проверь что с ботами"
"Какие проблемы были сегодня"
"Запусти синхронизацию OZON"
Особенность: Бот помнит контекст разговора, понимает команды на русском.
/backup - Запустить бэкап
/cleanup - Очистка диска
/update - Обновить репозиторий
system/bots/monitor/
├── bot.py ← Основной файл бота
├── handlers/ ← Обработчики команд
│ ├── monitoring.py ← Мониторинг команды
│ ├── system.py ← Системные команды
│ └── chat.py ← Диалог с Claude
├── session.py ← Управление сессией Claude
└── config.yaml ← Настройки бота
# 1. Получение сообщения
@bot.message_handler(func=lambda m: True)
def handle_message(message):
# Проверка номера телефона
if message.from_user.phone != ALLOWED_PHONE:
bot.send_message(message.chat.id, "Access denied")
return
# Команда или диалог?
if message.text.startswith('/'):
handle_command(message)
else:
handle_chat(message)
# 2. Обработка команды
def handle_command(message):
if message.text == '/status':
status = monitor.get_status()
bot.send_message(message.chat.id, format_status(status))
# 3. Обработка диалога
def handle_chat(message):
# Отдельная сессия Claude
response = claude_session.ask(
user_id=message.from_user.id,
question=message.text,
context={
'role': 'system_monitor',
'capabilities': ['run_tasks', 'check_status', 'read_logs']
}
)
bot.send_message(message.chat.id, response)
Отдельный контекст для бота:
# session.yaml
session_id: monitor_bot_session_{user_id}
model: claude-sonnet-4
system_prompt: |
Ты персональный помощник по мониторингу системы.
Ты можешь:
- Проверять статус сервисов
- Запускать задачи
- Читать логи
- Объяснять проблемы
Доступные системы:
- Telegram боты
- OZON синхронизация
- Мониторинг
- Планировщик задач
Отвечай коротко и по делу.
Механизм:
1. Каждый пользователь = отдельная сессия
2. Сессия живёт 24 часа
3. Контекст сохраняется между сообщениями
4. НЕ мешается с основными сессиями Claude Code
ALLOWED_PHONE = os.getenv("OWNER_PHONE") # +79991234567
def is_allowed(user):
# Telegram предоставляет номер только если пользователь разрешил
return user.phone_number == ALLOWED_PHONE
ALLOWED_USER_ID = os.getenv("OWNER_TELEGRAM_ID") # 123456789
def is_allowed(user):
return user.id == ALLOWED_USER_ID
Рекомендация: Использовать Telegram ID (проще и надёжнее).
ALLOWED_COMMANDS = {
'/status': 'safe',
'/alerts': 'safe',
'/run': 'dangerous', # Только с подтверждением
'/restart': 'dangerous',
}
system/monitor/run.py
→ проверки (checks/)
→ алерты (alerts/)
→ Telegram уведомления
# monitor/run.py
from system.bots.monitor import send_alert
def run_checks():
results = check_all()
if results.has_errors():
# Старый способ (сохранить)
save_alert(results)
# Новый способ (через бота)
send_alert(
severity='critical',
title='Проблема с сервисом',
message=results.format()
)
# .env
MONITOR_BOT_TOKEN=123456:ABC-DEF... # От @BotFather
OWNER_TELEGRAM_ID=123456789 # Твой Telegram ID
CLAUDE_API_KEY=sk-ant-... # Для сессии
# 1. Открыть @BotFather в Telegram
# 2. /newbot
# 3. Название: My Monitor Bot
# 4. Username: my_monitor_bot
# 5. Скопировать токен
# Однократно
python system/bots/monitor/bot.py
# Как сервис (systemd)
sudo systemctl start monitor-bot
sudo systemctl enable monitor-bot
# Написать @userinfobot в Telegram
# Он ответит твоим ID
Итого: ~2-3 часа до рабочего прототипа
Версия: 1.0