Версия: 1.0.0
Дата: 2026-01-11
Статус: Ready
Персональный Telegram бот для мониторинга системы.
Особенности:
- Работает только для владельца (проверка Telegram ID)
- Интеграция с system/monitor/
- Команды мониторинга и управления системой
- Безопасный (whitelist команд и сервисов)
# Открыть @BotFather в Telegram
# Отправить: /newbot
# Название: My Monitor Bot
# Username: my_monitor_bot (любой свободный)
# Скопировать токен: 123456:ABC-DEF...
# Написать @userinfobot в Telegram
# Скопировать ID: 123456789
# Добавить в ~/.bashrc или создать .env
export MONITOR_BOT_TOKEN='123456:ABC-DEF...'
export OWNER_TELEGRAM_ID='123456789'
# Применить
source ~/.bashrc
cd /opt/claude-workspace
# Проверить что всё работает
python3 system/bots/monitor/bot.py
Бот отправит приветственное сообщение в Telegram.
/status - Текущий статус системы (disk, memory, CPU)
/alerts - Активные алерты за последние 24 часа
/last_check - Результаты последней проверки
/logs [service] - Показать логи сервиса
Примеры: /logs nginx, /logs monitor
/run <task> - Запустить задачу из scheduler
Пример: /run backup
/help - Список команд
/start - Начать работу с ботом
system/bots/monitor/
├── bot.py ← Основной файл бота
├── config.yaml ← Конфигурация
├── README.md ← Эта документация
│
└── handlers/ ← Обработчики команд
├── __init__.py ← Экспорт
├── help.py ← /help, /start
├── monitoring.py ← /status, /alerts, /last_check
└── system.py ← /logs, /run, /restart
Бот работает только для владельца. Проверка по Telegram ID:
def is_allowed(self, user_id: int) -> bool:
return user_id == self.owner_id
Все остальные пользователи получают отказ.
Только разрешённые команды обрабатываются:
handlers = {
'/start', '/help',
'/status', '/alerts', '/last_check',
'/logs', '/run'
}
Для /logs и /restart — только разрешённые сервисы:
allowed_services = {
'nginx', 'monitor', 'system', 'docker'
}
Все команды имеют таймауты:
- /status — 30 секунд
- /logs — 10 секунд
- /run — 120 секунд
Бот использует существующий system/monitor/:
/status → python3 system/monitor/run.py --quick --json
/alerts → чтение .monitor/alerts/
/last_check → чтение system/monitor/output/latest.json
Автоматические уведомления (TODO):
- Monitor может отправлять алерты через бота
- Настраивается в system/monitor/config.yaml
sudo nano /etc/systemd/system/monitor-bot.service
[Unit]
Description=Monitor Bot - Personal Telegram Bot
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/claude-workspace
Environment="MONITOR_BOT_TOKEN=123456:ABC-DEF..."
Environment="OWNER_TELEGRAM_ID=123456789"
ExecStart=/usr/bin/python3 /opt/claude-workspace/system/bots/monitor/bot.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable monitor-bot
sudo systemctl start monitor-bot
# Проверить статус
sudo systemctl status monitor-bot
# Логи
sudo journalctl -u monitor-bot -f
handlers/:# handlers/my_handler.py
def handle_mycommand(bot, args):
"""Обработчик /mycommand"""
return "✅ <b>Результат</b>\n\nТекст ответа"
handlers/__init__.py:from .my_handler import handle_mycommand
__all__ = [..., 'handle_mycommand']
bot.py:handlers = {
...
'/mycommand': handle_mycommand,
}
# Запустить бота в режиме отладки
export MONITOR_BOT_TOKEN='...'
export OWNER_TELEGRAM_ID='...'
python3 -u system/bots/monitor/bot.py
Написать @userinfobot в Telegram.
echo $MONITOR_BOT_TOKENecho $OWNER_TELEGRAM_IDjournalctl -u monitor-bot -fСейчас бот работает только для одного владельца. Для добавления:
bot.py:ALLOWED_IDS = [123456789, 987654321]
def is_allowed(self, user_id: int) -> bool:
return user_id in ALLOWED_IDS
Проверить пути:
ls -la /opt/claude-workspace/system/monitor/run.py
ls -la /opt/claude-workspace/system/monitor/output/latest.json
Часть платформы Claude Workspace.
Версия: 1.0.0
Автор: Claude Sonnet 4.5
Дата: 2026-01-11