05-sep: [feat] menu wizard en bot OpenCode (/menu), menu IDD cierra al elegir + updates en hilos, borrar tarea NAS (0%) desde panel

This commit is contained in:
juanjo
2026-09-05 22:47:22 +02:00
parent 1c6bd113fd
commit 23fe44aecd
4 changed files with 342 additions and 25 deletions

View File

@@ -243,6 +243,24 @@ def _enviar_nuevo(chat_id, texto, teclado=None):
_log(f"send error: {e}")
def _cerrar_menu(chat_id, message_id):
"""Quita los botones del menu (lo deja cerrado como texto estatico)."""
import requests
try:
requests.post(_api("editMessageReplyMarkup"),
data={"chat_id": chat_id, "message_id": message_id},
timeout=10)
except Exception as e:
_log(f"cerrar menu error: {e}")
def _disp(chat_id, message_id, comando):
"""Ejecuta un comando del bot y cierra el menu (opcion elegida)."""
import pi_bot
pi_bot.procesar(comando, chat_id)
_cerrar_menu(chat_id, message_id)
# ----------------------------------------------------------------- menu ----
def enviar_menu(chat_id):
@@ -330,21 +348,23 @@ def procesar_callback(data, chat_id, message_id):
}
_enviar_nuevo(chat_id, preguntas.get(accion, "Escribe el dato:"),
teclado_cancelar())
_cerrar_menu(chat_id, message_id)
return
if ruta == "pausa_min":
nombre = _get_pausa_nombre(chat_id)
if not nombre:
_enviar_nuevo(chat_id, "Empieza de nuevo: /menu", teclado_cancelar())
_cerrar_menu(chat_id, message_id)
return
if partes[1] == "otro":
_guardar_pendiente(chat_id, "pausa_minutos")
_enviar_nuevo(chat_id, "⏱️ ¿Cuántos minutos? (1-1440)", teclado_cancelar())
_cerrar_menu(chat_id, message_id)
return
minutos = partes[1]
import pi_bot
_enviar_nuevo(chat_id, f"⏸️ Pausa {nombre} {minutos} minutos…", None)
pi_bot.procesar(f"parental pausa {nombre} {minutos}", chat_id)
_disp(chat_id, message_id,
f"parental pausa {nombre} {minutos}")
return
if ruta == "acc":
@@ -383,8 +403,7 @@ def _ejecutar_parental(chat_id, message_id, accion, nombre):
teclado_minutos_pausa(nombre))
return
comando = f"parental {'desactivar' if accion == 'desactivar' else 'activar'} {nombre}"
import pi_bot
pi_bot.procesar(comando, chat_id)
_disp(chat_id, message_id, comando)
def _ejecutar_accion(chat_id, message_id, partes):
@@ -408,10 +427,10 @@ def _ejecutar_accion(chat_id, message_id, partes):
"parental_listar": "parental listar",
}
if accion in directos:
pi_bot.procesar(directos[accion], chat_id)
_disp(chat_id, message_id, directos[accion])
return
if accion == "termo":
pi_bot.procesar(f"termo {sub}", chat_id)
_disp(chat_id, message_id, f"termo {sub}")
return
if accion == "router":
mapeo = {
@@ -423,12 +442,12 @@ def _ejecutar_accion(chat_id, message_id, partes):
"reiniciar": "router reiniciar",
"reservar": "router reservar",
}
pi_bot.procesar(mapeo.get(sub, "router ayuda"), chat_id)
_disp(chat_id, message_id, mapeo.get(sub, "router ayuda"))
return
if accion in ("torrents", "bajar"):
numero = int(sub) if sub.isdigit() else 0
if numero:
pi_bot.procesar(f"{accion} {numero}", chat_id)
_disp(chat_id, message_id, f"{accion} {numero}")
return