Files
INFRAESTRUCTURA/docs/TELEGRAM_BOT_PC_FIXES.md

4.2 KiB

Correcciones Bot Telegram Control PC (20-sep-2026)

Problemas reportados por el usuario

  1. ✅ Apagado forzoso sin confirmación → El bot apagaba directamente sin esperar confirmación del asistente
  2. ✅ No comprobaba estado tras apagar → No verificaba automáticamente si el PC se apagó correctamente
  3. ✅ Encendido no respondía → Enviaba WoL pero no verificaba si el PC arrancó
  4. ✅ Login crea usuario nuevo → Problema de configuración de autologon (documentado en FIX_PROBLEMA_AUTOLOGON_USUARIO_NUEVO.md)

Cambios implementados

1. Apagado con confirmación obligatoria

ANTES:

# Apagaba directamente al pulsar el botón
await apagar_pc() → requests.post(HA_WEBHOOK_APAGAR)

AHORA:

# Pide confirmación con botones SÍ/NO
await apagar_pc() → muestra mensaje de confirmación
await apagar_pc_confirmar() → ejecuta apagado SOLO tras confirmar

Flujo:

  1. Usuario pulsa "🔴 Apagar PC"
  2. Bot muestra mensaje: "⚠️ ¿Seguro que quieres apagar?"
  3. Botones: "✅ SÍ, apagar" | "❌ Cancelar"
  4. Solo si confirma → ejecuta webhook

2. Watchdog de estado tras apagar

ANTES:

# Enviaba comando y mostraba mensaje genérico
response = requests.post(HA_WEBHOOK_APAGAR)
await msg.edit_text("✅ PC apagado correctamente")  # ASUME que funcionó

AHORA:

# Espera 30s y VERIFICA con ping
response = requests.post(HA_WEBHOOK_APAGAR)
await asyncio.sleep(30)  # Espera a que se apague

# Ping de verificación
result = subprocess.run(["powershell", "-Command", f"Test-Connection -ComputerName {PC_IP} -Count 1 -Quiet"])
online = "True" in result.stdout

if online:
    await msg.edit_text("⚠️ APAGADO FALLIDO - PC sigue online")
else:
    await msg.edit_text("✅ PC APAGADO CONFIRMADO - IP sin respuesta")

3. Watchdog de encendido con reintentos

ANTES:

# Enviaba WoL y mostraba mensaje genérico
response = requests.post(HA_WEBHOOK_ENCENDER)
await msg.edit_text("✅ Proceso iniciado. Usa /estado para verificar.")  # Usuario tenía que comprobar manualmente

AHORA:

# Espera 90s y verifica con 3 reintentos
response = requests.post(HA_WEBHOOK_ENCENDER)
await asyncio.sleep(90)  # Espera inicial

# 3 intentos de ping con 15s entre cada uno
intentos = 0
max_intentos = 3
online = False

while intentos < max_intentos and not online:
    result = subprocess.run([...ping...])
    online = "True" in result.stdout
    if not online:
        intentos += 1
        await asyncio.sleep(15)

if online:
    await msg.edit_text("✅ PC ENCENDIDO CORRECTAMENTE - Responde en {tiempo}s")
else:
    await msg.edit_text("❌ ENCENDIDO FALLIDO - Verifica regleta/WoL/BIOS")

4. Botón de cancelar

Añadido callback cancelar que vuelve al menú principal si el usuario cancela el apagado.

Tiempos de espera

Operación Tiempo espera Verificaciones
Apagado 30 segundos 1 ping
Encendido 90 + (hasta 45s) 3 intentos de ping con 15s entre cada uno

Archivos modificados

  • INFRAESTRUCTURA/scripts/telegram_bot_pc.py — Bot corregido
  • INFRAESTRUCTURA/docs/FIX_PROBLEMA_AUTOLOGON_USUARIO_NUEVO.md — Solución al problema de usuario nuevo
  • INFRAESTRUCTURA/docs/TELEGRAM_BOT_PC_FIXES.md — Este documento

Cómo usar el bot corregido

# Detener el bot anterior si está corriendo
Get-Process python | Where-Object { $_.CommandLine -match "telegram_bot_pc" } | Stop-Process

# Arrancar bot corregido
python C:\Users\juanm\Documents\Github\INFRAESTRUCTURA\scripts\telegram_bot_pc.py

En Telegram:

  1. /start o /menu → Menú principal
  2. "🔴 Apagar PC" → AHORA pide confirmación
  3. "✅ SÍ, apagar" → Ejecuta y verifica automáticamente en 30s
  4. "🟢 Encender PC" → Ejecuta y verifica automáticamente en ~90-135s
  5. "📊 Estado PC" → Ping manual (sin cambios)

Pendientes

  • Crear tarea programada para arrancar el bot al iniciar Windows
  • Añadir logging a archivo (telegram_bot_pc.log)
  • Decidir sobre autologon (ver FIX_PROBLEMA_AUTOLOGON_USUARIO_NUEVO.md)
  • Script de verificación de configuración: check_autologon_status.ps1