06-sep: [menu] seccion Domotica (aspiradora+termo), tablets Ines+Carolina en parental, fin-accion limpia chat + vuelve a /menu

This commit is contained in:
juanjo
2026-09-06 13:53:28 +02:00
parent 2b1fdcc8fd
commit bc435b3666
2 changed files with 69 additions and 2 deletions

View File

@@ -69,9 +69,12 @@ def teclado_principal():
[ [
_btn("📺 TV", PREFIJO + "cat:tv"), _btn("📺 TV", PREFIJO + "cat:tv"),
_btn("👪 Control parental", PREFIJO + "cat:parental"), _btn("👪 Control parental", PREFIJO + "cat:parental"),
_btn("🛠️ Sistema", PREFIJO + "cat:sistema"), _btn("🏠 Domótica", PREFIJO + "cat:domotica"),
],
[
_btn("🛠️ Sistema", PREFIJO + "cat:sistema"),
_btn("📚 Ayuda (texto)", PREFIJO + "acc:ayuda"),
], ],
[_btn("📚 Ayuda (texto)", PREFIJO + "acc:ayuda")],
]) ])
@@ -103,6 +106,20 @@ def teclado_nas():
_btn("📥 Panel descargas", PREFIJO + "acc:descargas"), _btn("📥 Panel descargas", PREFIJO + "acc:descargas"),
_btn("➕ Añadir enlace", PREFIJO + "txt:descargar"), _btn("➕ Añadir enlace", PREFIJO + "txt:descargar"),
], ],
FILA_VOLVER,
])
def teclado_domotica():
return _mk([
[
_btn("🤖 Aspiradora estado", PREFIJO + "acc:aspiradora:estado"),
_btn("🧹 Aspirar", PREFIJO + "acc:aspiradora:start"),
],
[
_btn("⏸️ Pausar", PREFIJO + "acc:aspiradora:pause"),
_btn("🏠 A la base", PREFIJO + "acc:aspiradora:home"),
],
[ [
_btn("🔌 Termo ON", PREFIJO + "acc:termo:on"), _btn("🔌 Termo ON", PREFIJO + "acc:termo:on"),
_btn("🔌 Termo OFF", PREFIJO + "acc:termo:off"), _btn("🔌 Termo OFF", PREFIJO + "acc:termo:off"),
@@ -125,6 +142,10 @@ def teclado_tv():
def teclado_parental(): def teclado_parental():
return _mk([ return _mk([
[
_btn("🔒 Bloquear tablets", PREFIJO + "acc:tablets:bloquear"),
_btn("🔓 Desbloquear tablets", PREFIJO + "acc:tablets:desbloquear"),
],
[_btn("📋 Listar estado", PREFIJO + "acc:parental_listar")], [_btn("📋 Listar estado", PREFIJO + "acc:parental_listar")],
[ [
_btn("🔒 Desactivar…", PREFIJO + "sub:desactivar"), _btn("🔒 Desactivar…", PREFIJO + "sub:desactivar"),
@@ -261,6 +282,19 @@ def _disp(chat_id, message_id, comando):
_cerrar_menu(chat_id, message_id) _cerrar_menu(chat_id, message_id)
def _fin_accion(chat_id):
"""Tras una accion: deja ver el resultado, limpia toda la pantalla
y deja el mensaje para volver al menu."""
import time as _time
import pi_bot
_time.sleep(4)
try:
pi_bot.limpiar_pantalla(chat_id)
except Exception:
pass
_enviar_nuevo(chat_id, "✅ Hecho. Pulsa /menu para volver al menú.", None)
# ----------------------------------------------------------------- menu ---- # ----------------------------------------------------------------- menu ----
def enviar_menu(chat_id): def enviar_menu(chat_id):
@@ -277,6 +311,7 @@ def _header(categoria):
"nas": "📥 <b>NAS / Descargas</b>", "nas": "📥 <b>NAS / Descargas</b>",
"tv": "📺 <b>TV</b>", "tv": "📺 <b>TV</b>",
"parental": "👪 <b>Control parental</b>", "parental": "👪 <b>Control parental</b>",
"domotica": "🏠 <b>Domótica</b>",
"sistema": "🛠️ <b>Sistema</b>", "sistema": "🛠️ <b>Sistema</b>",
"router": "📡 <b>Router ASUS</b>", "router": "📡 <b>Router ASUS</b>",
} }
@@ -289,6 +324,7 @@ def _abrir_categoria(chat_id, message_id, categoria):
"nas": teclado_nas, "nas": teclado_nas,
"tv": teclado_tv, "tv": teclado_tv,
"parental": teclado_parental, "parental": teclado_parental,
"domotica": teclado_domotica,
"sistema": teclado_sistema, "sistema": teclado_sistema,
"router": teclado_router, "router": teclado_router,
} }
@@ -432,6 +468,20 @@ def _ejecutar_accion(chat_id, message_id, partes):
if accion == "termo": if accion == "termo":
_disp(chat_id, message_id, f"termo {sub}") _disp(chat_id, message_id, f"termo {sub}")
return return
if accion == "aspiradora":
if sub in ("estado", "start", "stop", "home", "pause", "locate"):
_disp(chat_id, message_id, f"aspiradora {sub}")
if sub != "estado":
_fin_accion(chat_id)
return
if accion == "tablets":
if sub in ("bloquear", "desbloquear"):
verbo = "desactivar" if sub == "bloquear" else "activar"
pi_bot.procesar(f"parental {verbo} Inés", chat_id)
pi_bot.procesar(f"parental {verbo} Carolina", chat_id)
_cerrar_menu(chat_id, message_id)
_fin_accion(chat_id)
return
if accion == "router": if accion == "router":
mapeo = { mapeo = {
"estado": "router estado", "estado": "router estado",

View File

@@ -348,6 +348,20 @@ def _ejecutar_borrado(chat_id, numero):
enviar(f"🗑️ Tarea borrada: <b>{titulo[:80]}</b>", chat_id) enviar(f"🗑️ Tarea borrada: <b>{titulo[:80]}</b>", chat_id)
else: else:
enviar(f"❌ No se pudo borrar <b>{titulo[:60]}</b>: {detalle}", chat_id) enviar(f"❌ No se pudo borrar <b>{titulo[:60]}</b>: {detalle}", chat_id)
# Cierra el panel de descargas, limpia toda la pantalla y deja
# el mensaje para volver al menu.
try:
estado_panel = panel_descargas.pop(chat_id, None)
if estado_panel and estado_panel.get("message_id"):
borrar(chat_id, estado_panel["message_id"])
except Exception:
pass
time.sleep(4)
try:
limpiar_pantalla(chat_id)
except Exception:
pass
enviar("✅ Hecho. Pulsa /menu para volver al menú.", chat_id)
return True return True
@@ -791,6 +805,9 @@ def procesar(texto, chat_id):
" ✏️ Ej: <code>/descargar magnet:?xt=urn:btih:...</code>\n" " ✏️ Ej: <code>/descargar magnet:?xt=urn:btih:...</code>\n"
"<b>10.</b> <code>termo on|off|estado</code> — controla el enchufe Tapo\n" "<b>10.</b> <code>termo on|off|estado</code> — controla el enchufe Tapo\n"
" ✏️ Ej: <code>/termo estado</code>\n\n" " ✏️ Ej: <code>/termo estado</code>\n\n"
"━━━ 🏠 DOMÓTICA ━━━\n"
"<b>10b.</b> <code>aspiradora estado|start|stop|home|pause|locate</code> — Dreame D10 Plus\n"
" ✏️ Ej: <code>/aspiradora estado</code>\n\n"
"━━━ 📺 TV ━━━\n" "━━━ 📺 TV ━━━\n"
"<b>11.</b> <code>tv &lt;mensaje&gt;</code> — mensaje rápido a la tele\n" "<b>11.</b> <code>tv &lt;mensaje&gt;</code> — mensaje rápido a la tele\n"
" ✏️ Ej: <code>/tv la cena está lista</code>\n" " ✏️ Ej: <code>/tv la cena está lista</code>\n"