06-sep: [menu] toda accion vuelve al menu de su categoria (menu_cat + reenviar)
This commit is contained in:
@@ -291,16 +291,17 @@ def _cerrar_menu(chat_id, message_id):
|
|||||||
_log(f"cerrar menu error: {e}")
|
_log(f"cerrar menu error: {e}")
|
||||||
|
|
||||||
|
|
||||||
def _disp(chat_id, message_id, comando):
|
def _disp(chat_id, message_id, comando, categoria=None):
|
||||||
"""Ejecuta un comando del bot y cierra el menu (opcion elegida)."""
|
"""Ejecuta un comando, cierra el menu viejo y devuelve al menu."""
|
||||||
import pi_bot
|
import pi_bot
|
||||||
pi_bot.procesar(comando, chat_id)
|
pi_bot.procesar(comando, chat_id)
|
||||||
_cerrar_menu(chat_id, message_id)
|
_cerrar_menu(chat_id, message_id)
|
||||||
|
_reenviar_menu(chat_id, categoria)
|
||||||
|
|
||||||
|
|
||||||
def _fin_accion(chat_id):
|
def _fin_accion(chat_id, categoria=None):
|
||||||
"""Tras una accion: deja ver el resultado, limpia toda la pantalla
|
"""Tras una accion terminal: deja ver el resultado, limpia toda la
|
||||||
y deja el mensaje para volver al menu."""
|
pantalla y devuelve al menu de la categoria."""
|
||||||
import time as _time
|
import time as _time
|
||||||
import pi_bot
|
import pi_bot
|
||||||
_time.sleep(4)
|
_time.sleep(4)
|
||||||
@@ -308,7 +309,7 @@ def _fin_accion(chat_id):
|
|||||||
pi_bot.limpiar_pantalla(chat_id)
|
pi_bot.limpiar_pantalla(chat_id)
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
_enviar_nuevo(chat_id, "✅ Hecho. Pulsa /menu para volver al menú.", None)
|
_reenviar_menu(chat_id, categoria)
|
||||||
|
|
||||||
|
|
||||||
def _reabrir(chat_id, message_id, categoria, comando):
|
def _reabrir(chat_id, message_id, categoria, comando):
|
||||||
@@ -329,9 +330,7 @@ def _reabrir(chat_id, message_id, categoria, comando):
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
_borrar(chat_id, message_id)
|
_borrar(chat_id, message_id)
|
||||||
teclado = _teclado_categoria(chat_id, categoria)
|
_reenviar_menu(chat_id, categoria)
|
||||||
if teclado is not None:
|
|
||||||
_enviar_nuevo(chat_id, _header(categoria), teclado)
|
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------- menu ----
|
# ----------------------------------------------------------------- menu ----
|
||||||
@@ -359,6 +358,34 @@ def _header(categoria):
|
|||||||
return nombres.get(categoria, "🧭 <b>Menú IDD</b>")
|
return nombres.get(categoria, "🧭 <b>Menú IDD</b>")
|
||||||
|
|
||||||
|
|
||||||
|
# Ultima categoria visitada por chat: a ella se vuelve tras cada accion.
|
||||||
|
menu_cat = {}
|
||||||
|
|
||||||
|
|
||||||
|
def _record_cat(chat_id, categoria):
|
||||||
|
menu_cat[chat_id] = categoria
|
||||||
|
|
||||||
|
|
||||||
|
def _reenviar_menu(chat_id, categoria=None):
|
||||||
|
"""Envia de nuevo el menu de la categoria (con su volver operativo)."""
|
||||||
|
cat = categoria or menu_cat.get(chat_id)
|
||||||
|
if not cat:
|
||||||
|
_enviar_nuevo(chat_id, "🧭 <b>Menú IDD</b>\nElige una categoría:",
|
||||||
|
teclado_principal())
|
||||||
|
return
|
||||||
|
teclado = _teclado_categoria(chat_id, cat)
|
||||||
|
if teclado is None:
|
||||||
|
_enviar_nuevo(chat_id, "🧭 <b>Menú IDD</b>\nElige una categoría:",
|
||||||
|
teclado_principal())
|
||||||
|
return
|
||||||
|
_enviar_nuevo(chat_id, _header(cat), teclado)
|
||||||
|
|
||||||
|
|
||||||
|
def volver_al_menu(chat_id, categoria=None):
|
||||||
|
"""API para pi_bot: tras un texto libre del menu, devuelve al menu."""
|
||||||
|
_reenviar_menu(chat_id, categoria)
|
||||||
|
|
||||||
|
|
||||||
def _teclado_categoria(chat_id, categoria):
|
def _teclado_categoria(chat_id, categoria):
|
||||||
teclados = {
|
teclados = {
|
||||||
"videoclub": lambda: teclado_videoclub(chat_id),
|
"videoclub": lambda: teclado_videoclub(chat_id),
|
||||||
@@ -376,6 +403,7 @@ def _teclado_categoria(chat_id, categoria):
|
|||||||
|
|
||||||
|
|
||||||
def _abrir_categoria(chat_id, message_id, categoria):
|
def _abrir_categoria(chat_id, message_id, categoria):
|
||||||
|
_record_cat(chat_id, categoria)
|
||||||
teclado = _teclado_categoria(chat_id, categoria)
|
teclado = _teclado_categoria(chat_id, categoria)
|
||||||
if teclado is None:
|
if teclado is None:
|
||||||
return False
|
return False
|
||||||
@@ -400,11 +428,14 @@ def procesar_callback(data, chat_id, message_id):
|
|||||||
# sub:torrents / sub:bajar / sub:router / sub:parental:<acc>
|
# sub:torrents / sub:bajar / sub:router / sub:parental:<acc>
|
||||||
sub = partes[1]
|
sub = partes[1]
|
||||||
if sub in ("router",):
|
if sub in ("router",):
|
||||||
|
_record_cat(chat_id, "router")
|
||||||
_enviar_edit(chat_id, message_id, _header("router"), teclado_router())
|
_enviar_edit(chat_id, message_id, _header("router"), teclado_router())
|
||||||
return
|
return
|
||||||
if sub in ("torrents", "bajar"):
|
if sub in ("torrents", "bajar"):
|
||||||
|
_record_cat(chat_id, "videoclub")
|
||||||
return _mostrar_resultados(chat_id, message_id, sub)
|
return _mostrar_resultados(chat_id, message_id, sub)
|
||||||
if len(partes) == 2 and sub in ("desactivar", "activar", "pausa"):
|
if len(partes) == 2 and sub in ("desactivar", "activar", "pausa"):
|
||||||
|
_record_cat(chat_id, "parental")
|
||||||
_enviar_edit(chat_id, message_id,
|
_enviar_edit(chat_id, message_id,
|
||||||
f"¿Sobre qué dispositivo? ({sub})",
|
f"¿Sobre qué dispositivo? ({sub})",
|
||||||
teclado_nombres(sub))
|
teclado_nombres(sub))
|
||||||
@@ -419,6 +450,13 @@ def procesar_callback(data, chat_id, message_id):
|
|||||||
# pide un dato por teclado: lo captura el siguiente mensaje
|
# pide un dato por teclado: lo captura el siguiente mensaje
|
||||||
accion = partes[1]
|
accion = partes[1]
|
||||||
_guardar_pendiente(chat_id, accion)
|
_guardar_pendiente(chat_id, accion)
|
||||||
|
CAT_TXT = {
|
||||||
|
"busca": "videoclub", "pelicula": "videoclub", "serie": "videoclub",
|
||||||
|
"tv": "tv", "alarma": "tv", "youtube": "tv",
|
||||||
|
"descargar": "nas",
|
||||||
|
"desactivar": "parental", "activar": "parental",
|
||||||
|
}
|
||||||
|
_record_cat(chat_id, CAT_TXT.get(accion, "sistema"))
|
||||||
preguntas = {
|
preguntas = {
|
||||||
"busca": "🔎 ¿Qué busco? Escribe el nombre.",
|
"busca": "🔎 ¿Qué busco? Escribe el nombre.",
|
||||||
"pelicula": "🎬 ¿Qué película busco?",
|
"pelicula": "🎬 ¿Qué película busco?",
|
||||||
@@ -447,8 +485,10 @@ def procesar_callback(data, chat_id, message_id):
|
|||||||
_cerrar_menu(chat_id, message_id)
|
_cerrar_menu(chat_id, message_id)
|
||||||
return
|
return
|
||||||
minutos = partes[1]
|
minutos = partes[1]
|
||||||
_disp(chat_id, message_id,
|
import pi_bot
|
||||||
f"parental pausa {nombre} {minutos}")
|
pi_bot.procesar(f"parental pausa {nombre} {minutos}", chat_id)
|
||||||
|
_cerrar_menu(chat_id, message_id)
|
||||||
|
_fin_accion(chat_id, "parental")
|
||||||
return
|
return
|
||||||
|
|
||||||
if ruta == "acc":
|
if ruta == "acc":
|
||||||
@@ -481,13 +521,17 @@ def _mostrar_resultados(chat_id, message_id, tipo):
|
|||||||
|
|
||||||
def _ejecutar_parental(chat_id, message_id, accion, nombre):
|
def _ejecutar_parental(chat_id, message_id, accion, nombre):
|
||||||
if accion == "pausa":
|
if accion == "pausa":
|
||||||
|
_record_cat(chat_id, "parental")
|
||||||
_set_pausa_nombre(chat_id, nombre)
|
_set_pausa_nombre(chat_id, nombre)
|
||||||
_enviar_edit(chat_id, message_id,
|
_enviar_edit(chat_id, message_id,
|
||||||
f"⏸️ Pausa para <b>{nombre}</b>. ¿Cuántos minutos?",
|
f"⏸️ Pausa para <b>{nombre}</b>. ¿Cuántos minutos?",
|
||||||
teclado_minutos_pausa(nombre))
|
teclado_minutos_pausa(nombre))
|
||||||
return
|
return
|
||||||
comando = f"parental {'desactivar' if accion == 'desactivar' else 'activar'} {nombre}"
|
comando = f"parental {'desactivar' if accion == 'desactivar' else 'activar'} {nombre}"
|
||||||
_disp(chat_id, message_id, comando)
|
import pi_bot
|
||||||
|
pi_bot.procesar(comando, chat_id)
|
||||||
|
_cerrar_menu(chat_id, message_id)
|
||||||
|
_fin_accion(chat_id, "parental")
|
||||||
|
|
||||||
|
|
||||||
def _ejecutar_accion(chat_id, message_id, partes):
|
def _ejecutar_accion(chat_id, message_id, partes):
|
||||||
@@ -512,23 +556,32 @@ def _ejecutar_accion(chat_id, message_id, partes):
|
|||||||
if accion == "parental_listar":
|
if accion == "parental_listar":
|
||||||
_reabrir(chat_id, message_id, "parental", "parental listar")
|
_reabrir(chat_id, message_id, "parental", "parental listar")
|
||||||
return
|
return
|
||||||
|
CAT_ACC = {
|
||||||
|
"ayuda": None, "genero": "videoclub", "novedades": "videoclub",
|
||||||
|
"descargas": "nas", "estado": "sistema", "temperatura": "sistema",
|
||||||
|
"panorama": "sistema", "limpieza": "sistema", "limpiar": "sistema",
|
||||||
|
"aimesh": "sistema", "qos": "sistema", "limite": "sistema",
|
||||||
|
"seguridad": "sistema",
|
||||||
|
}
|
||||||
if accion in directos:
|
if accion in directos:
|
||||||
_disp(chat_id, message_id, directos[accion])
|
_disp(chat_id, message_id, directos[accion], CAT_ACC.get(accion))
|
||||||
return
|
return
|
||||||
if accion == "termo":
|
if accion == "termo":
|
||||||
if sub == "estado":
|
if sub == "estado":
|
||||||
_reabrir(chat_id, message_id, "termo", "termo estado")
|
_reabrir(chat_id, message_id, "termo", "termo estado")
|
||||||
elif sub in ("on", "off"):
|
elif sub in ("on", "off"):
|
||||||
_disp(chat_id, message_id, f"termo {sub}")
|
pi_bot.procesar(f"termo {sub}", chat_id)
|
||||||
_fin_accion(chat_id)
|
_cerrar_menu(chat_id, message_id)
|
||||||
|
_fin_accion(chat_id, "termo")
|
||||||
return
|
return
|
||||||
if accion == "aspiradora":
|
if accion == "aspiradora":
|
||||||
if sub in ("estado", "start", "stop", "home", "pause", "locate"):
|
if sub in ("estado", "start", "stop", "home", "pause", "locate"):
|
||||||
if sub == "estado":
|
if sub == "estado":
|
||||||
_reabrir(chat_id, message_id, "aspi", "aspiradora estado")
|
_reabrir(chat_id, message_id, "aspi", "aspiradora estado")
|
||||||
else:
|
else:
|
||||||
_disp(chat_id, message_id, f"aspiradora {sub}")
|
pi_bot.procesar(f"aspiradora {sub}", chat_id)
|
||||||
_fin_accion(chat_id)
|
_cerrar_menu(chat_id, message_id)
|
||||||
|
_fin_accion(chat_id, "aspi")
|
||||||
return
|
return
|
||||||
if accion == "tablets":
|
if accion == "tablets":
|
||||||
if sub in ("bloquear", "desbloquear"):
|
if sub in ("bloquear", "desbloquear"):
|
||||||
@@ -536,7 +589,7 @@ def _ejecutar_accion(chat_id, message_id, partes):
|
|||||||
pi_bot.procesar(f"parental {verbo} Inés", chat_id)
|
pi_bot.procesar(f"parental {verbo} Inés", chat_id)
|
||||||
pi_bot.procesar(f"parental {verbo} Carolina", chat_id)
|
pi_bot.procesar(f"parental {verbo} Carolina", chat_id)
|
||||||
_cerrar_menu(chat_id, message_id)
|
_cerrar_menu(chat_id, message_id)
|
||||||
_fin_accion(chat_id)
|
_fin_accion(chat_id, "parental")
|
||||||
return
|
return
|
||||||
if accion == "router":
|
if accion == "router":
|
||||||
mapeo = {
|
mapeo = {
|
||||||
@@ -548,12 +601,12 @@ def _ejecutar_accion(chat_id, message_id, partes):
|
|||||||
"reiniciar": "router reiniciar",
|
"reiniciar": "router reiniciar",
|
||||||
"reservar": "router reservar",
|
"reservar": "router reservar",
|
||||||
}
|
}
|
||||||
_disp(chat_id, message_id, mapeo.get(sub, "router ayuda"))
|
_disp(chat_id, message_id, mapeo.get(sub, "router ayuda"), "router")
|
||||||
return
|
return
|
||||||
if accion in ("torrents", "bajar"):
|
if accion in ("torrents", "bajar"):
|
||||||
numero = int(sub) if sub.isdigit() else 0
|
numero = int(sub) if sub.isdigit() else 0
|
||||||
if numero:
|
if numero:
|
||||||
_disp(chat_id, message_id, f"{accion} {numero}")
|
_disp(chat_id, message_id, f"{accion} {numero}", "videoclub")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
@@ -623,6 +676,7 @@ def resolver_pausa_minutos(chat_id, texto):
|
|||||||
return True
|
return True
|
||||||
import pi_bot
|
import pi_bot
|
||||||
pi_bot.procesar(f"parental pausa {nombre} {minutos}", chat_id)
|
pi_bot.procesar(f"parental pausa {nombre} {minutos}", chat_id)
|
||||||
|
_reenviar_menu(chat_id, "parental")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -412,7 +412,12 @@ def procesar(texto, chat_id):
|
|||||||
enviar("⏱️ Escribe un número de minutos entre 1 y 1440.", chat_id)
|
enviar("⏱️ Escribe un número de minutos entre 1 y 1440.", chat_id)
|
||||||
return
|
return
|
||||||
if cmd:
|
if cmd:
|
||||||
return procesar(cmd, chat_id)
|
procesar(cmd, chat_id)
|
||||||
|
try:
|
||||||
|
menu_idd.volver_al_menu(chat_id)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
return
|
||||||
# Borrado de descargas pendiente (numero de tarea NAS)
|
# Borrado de descargas pendiente (numero de tarea NAS)
|
||||||
if t.isdigit() and chat_id in borrar_pend:
|
if t.isdigit() and chat_id in borrar_pend:
|
||||||
_ejecutar_borrado(chat_id, int(t))
|
_ejecutar_borrado(chat_id, int(t))
|
||||||
|
|||||||
Reference in New Issue
Block a user