#!/bin/bash
# Мониторинг Домового Бота
# Проверяет каждые 30 секунд и перезапускает если упал

LOG_FILE="/home/matrixhasyou/domovoy_bot/logs/monitor.log"
WEB_URL="http://localhost:8000"
CHECK_INTERVAL=30  # секунд

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

check_bot() {
    # Проверяем systemd сервис (бот)
    if ! sudo systemctl is-active --quiet domovoy-bot; then
        log "❌ Бот НЕ активен! Перезапуск..."
        sudo systemctl restart domovoy-bot
        sleep 5
        if sudo systemctl is-active --quiet domovoy-bot; then
            log "✅ Бот перезапущен успешно"
        else
            log "❌ НЕ удалось перезапустить бота!"
            return 1
        fi
    fi
    
    # Проверяем веб-сервер (uvicorn)
    WEB_PID=$(pgrep -f "uvicorn.*8000")
    if [ -z "$WEB_PID" ]; then
        log "❌ Веб-сервер НЕ запущен! Перезапуск..."
        cd /home/matrixhasyou/domovoy_bot
        source venv/bin/activate
        nohup python -m uvicorn web.app:app --host 0.0.0.0 --port 8000 >> logs/web.log 2>&1 &
        sleep 5
        WEB_PID=$(pgrep -f "uvicorn.*8000")
        if [ -n "$WEB_PID" ]; then
            log "✅ Веб-сервер перезапущен (PID: $WEB_PID)"
        else
            log "❌ НЕ удалось перезапустить веб-сервер!"
            return 1
        fi
    fi
    
    # Проверяем веб-панель
    if ! curl -s --max-time 5 "$WEB_URL" > /dev/null; then
        log "❌ Веб-панель НЕ отвечает! Перезапуск..."
        pkill -f "uvicorn.*8000"
        sleep 2
        cd /home/matrixhasyou/domovoy_bot
        source venv/bin/activate
        nohup python -m uvicorn web.app:app --host 0.0.0.0 --port 8000 >> logs/web.log 2>&1 &
        sleep 5
        if curl -s --max-time 5 "$WEB_URL" > /dev/null; then
            log "✅ Веб-панель восстановлена"
        else
            log "❌ Веб-панель НЕ восстановилась!"
            return 1
        fi
    fi
    
    return 0
}

log "🚀 Запуск мониторинга Домового Бота (интервал: ${CHECK_INTERVAL}с)"

while true; do
    check_bot
    sleep $CHECK_INTERVAL
done
