# Inventario de Comandos del Bot de Tareas Ámbito: WhatsApp (DM y grupos) Objetivo: fuente única y estable de copy y comportamiento actual. Notas generales - El bot responde por DM, incluso cuando escribes en un grupo, salvo mensajes muy concretos de estado. En modo de “gating” estricto de grupos (GROUP_GATING_MODE='enforce'), si el grupo no está permitido, el bot puede no responder en absoluto. - Zona horaria: se usa TZ (por defecto Europe/Madrid) para calcular “hoy”, “mañana” y vencimientos. - IDs: se muestran con 4 dígitos (ej.: `0026`), pero puedes escribirlos sin ceros (ej.: 26). - Límite de listados: 10 elementos por sección; si hay más, se muestra “... y N más”. - Fechas: formato visual DD/MM; indicador de vencida con ⚠️. --- ## /t nueva (crear) Alias: `n`, `nueva`, `crear`, `+` Sintaxis: `/t n [fecha] [@menciones...]` Parámetros - descripción: texto libre. - fecha (opcional): formatos aceptados: - `YYYY-MM-DD` - `YY-MM-DD` (se expande a `20YY-MM-DD`) - Tokens naturales: `hoy`, `mañana` (con o sin acento) - Se ignora puntuación adyacente simple; se usa la última fecha válida encontrada; no se aceptan fechas pasadas. - @menciones (opcional): puedes mencionar JIDs crudos o tokens `@...`. Se filtran no plausibles y se intenta resolver alias. Si no se puede, se envía un DM al creador con instrucciones de onboarding (activar). Asignación por contexto - En grupos: si no hay menciones, la tarea queda “sin responsable”. - En DM: si no hay menciones, se asigna al creador. Grupo asociado - Solo se asigna `group_id` si el grupo está activo. Si GROUP_GATING_MODE='enforce' y el grupo no está permitido, se crea “sin grupo”. Ejemplos - `/t n Preparar informe 2025-11-05 @600123456` - `/t + Comprar pan mañana` - `/t crear Llamar a proveedores @ana @juan` - `/t n Presentación 25-02-02` (→ 2025-02-02) --- ## /t ver (listar) Alias: `ver`, `mostrar`, `listar`, `ls` Sintaxis: `/t ver [grupo|mis|todos|sin]` (el alcance es opcional) Alcances - `grupo`: lista pendientes del grupo actual (solo desde grupo activo). - `mis`: tus tareas pendientes (por DM). - `todos`: “Tus tareas” + “sin responsable”. - En grupo: incluye “sin responsable” solo del grupo actual (compatibilidad). - En DM: incluye “sin responsable” de todos los grupos donde eres miembro activo (si el snapshot de membresía es fresco). - `sin`: solo tareas sin responsable del grupo actual (desde grupo). Indicadores - Fechas en `DD/MM`. - ⚠️ delante de la fecha si está vencida (según TZ configurada). Límites - Máx. 10 elementos por sección; si hay más, se añade “... y N más”. Ejemplos - En grupo: `/t ver` (equivale a `grupo`), `/t ver sin` - Por DM: `/t ver mis`, `/t ver todos` --- ## /t x (completar) Alias: `x`, `hecho`, `completar`, `done` Sintaxis: `/t x ` Soporta múltiples IDs separados por espacios y/o comas. Máx. 10 IDs. Resolución de ID - Primero intenta `display_code` (código corto de 4 dígitos) en tareas activas; si no, usa el ID real. Gating de membresía (opcional) - Si `GROUP_MEMBERS_ENFORCE=true` y el snapshot del grupo es fresco, debes ser miembro activo para completar. Ejemplos - `/t x 26` - `/t x 14 19 24` - `/t x 14,19,24` --- ## /t tomar (asumir) Alias: `tomar`, `claim`, `asumir`, `asumo` Sintaxis: `/t tomar ` Múltiples IDs; máx. 10. Gating de membresía (opcional) - Si `GROUP_MEMBERS_ENFORCE=true` y snapshot fresco, debes ser miembro activo para tomar tareas del grupo. Ejemplos - `/t tomar 12` - `/t tomar 12 19 50` - `/t tomar 12,19,50` --- ## /t soltar (unassign) Alias: `soltar`, `unassign`, `dejar`, `liberar`, `renunciar` Sintaxis: `/t soltar ` Un solo ID. Gating de membresía (opcional) - Si `GROUP_MEMBERS_ENFORCE=true` y snapshot fresco, debes ser miembro activo para soltar tareas del grupo. Ejemplos - `/t soltar 26` --- ## /t configurar (recordatorios) Alias: `config`, `configurar` Sintaxis: `/t configurar diario|l-v|semanal|off [HH:MM]` Valores admitidos y alias - `diario`/`diaria` → recordatorio diario (se guarda como `daily`). - `laborables` (`l-v`, `lv`) → lunes a viernes (se guarda como `weekdays`). - `semanal` → semanal (asume lunes; se guarda como `weekly`). - `off`/`apagar`/`ninguno` → sin recordatorios (se guarda como `off`). Hora - Formato `HH:MM` (minutos 00–59; hora se normaliza a 0–23). - Si omites la hora, se conserva la anterior o se usa `08:30` por defecto (y `lunes` para semanal). Nota de localización - Internamente se almacenan claves en inglés (`daily`, `weekdays`, `weekly`, `off`), pero el copy al usuario es en español. Pendiente de revisión futura para evitar fugas como “weekly” en mensajes. Ejemplos - `/t configurar diaria 09:00` - `/t configurar l-v 08:30` - `/t configurar semanal` (→ lunes 08:30) - `/t configurar off` --- ## /t ayuda Alias: `ayuda`, `help`, `?` Sintaxis: `/t ayuda` | `/t ayuda avanzada` Comportamiento actual - Ayuda rápida con comandos básicos, límites y ejemplos cortos. - “Ayuda avanzada” lista alias y detalla opciones y límites. Nota - El contenido de ayuda está centralizado y consistente. --- ## /t web Sintaxis: `/t web` (solo por DM) Descripción - Genera un token de acceso one‑shot válido 10 minutos, invalida tokens previos y devuelve una URL de login basada en `WEB_BASE_URL`. Ejemplo - `Acceso web: https://…/login?token=...` “Válido durante 10 minutos. Si caduca, vuelve a enviar `/t web`.” --- ## Comandos desconocidos Ante comandos no reconocidos, el bot responde por DM con un mensaje que incluye el encabezado “❓ Comando no reconocido”, la sugerencia “Prueba `/t ayuda`” y la ayuda rápida inline. ## Notas adicionales - Estilo y formato: - IDs: `codeId()` → 4 dígitos entre backticks. - Fechas: `formatDDMM()` → `DD/MM`. - Estilos disponibles: negrita `*...*`, cursiva `_<...>_`. Próximamente: `code()`, `section()`, `bullets()`. - Gating de grupos: - Si `GROUP_GATING_MODE='enforce'` y el grupo no está permitido, los comandos en ese grupo pueden quedar bloqueados (sin respuesta). - Membresía de grupo: - Si `GROUP_MEMBERS_ENFORCE=true` y el snapshot es fresco, algunas acciones requieren ser miembro activo (ver grupo, completar, tomar, soltar).