|
|
# 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 <descripció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 <id|id,id,...|id id ...>`
|
|
|
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 <id|id,id,...|id id ...>`
|
|
|
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 <id>`
|
|
|
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).
|