# Plan de Desarrollo y Estado del Proyecto Este archivo es la guía oficial para el desarrollo del sistema de administración de bots. Lo actualizaremos con cada avance. **Regla General:** Antes de crear cualquier archivo o módulo, el primer paso siempre será **verificar si ya existe** para analizar su estado y decidir si se debe completar, refactorizar o crear desde cero. --- ## 🟦 FASE 1 — Preparación del Proyecto - [x] **Paso 1: Crear estructura base del proyecto** - [x] **Paso 2: Crear archivo .env e inicializar variables** - [x] **Paso 3: Crear conexión a base de datos (COMPARTIDA)** ## 🟩 FASE 2 — Base de Datos - [x] **Paso 4: Crear tablas básicas del sistema** - [x] **Paso 5: Crear tablas para cada plataforma** ## 🟨 FASE 3 — Autenticación - [x] **Paso 6: Crear login.php** - [x] **Paso 7: Crear panel principal después del login** ## 🟧 FASE 4 — Construcción de Plataformas ### 🔵 FASE 4.1 – PLATAFORMA DISCORD - [x] **Paso 8: Crear la estructura interna de `/discord`** (Verificada) - [x] **Paso 9: Crear el archivo `dashboard_discord.php`** (Verificado y funcional) - [x] **Paso 10: Módulo de GALERÍA (COMPARTIDO)** (Verificado y funcional) - [x] **Paso 11: Módulo de PLANTILLAS DISCORD** - [x] **Verificar:** Revisar `list.php`, `create.php`, `edit.php`, `preview.php` y APIs asociadas. - [x] **Implementar/Corregir:** - [x] Asegurar que la función de **crear** plantillas sea robusta (actualmente funcional pero mejorable). - [x] Asegurar que la función de **listar** plantillas sea robusta (actualmente funcional pero mejorable). - [x] Implementar la API para **eliminar** plantillas y conectar con el frontend. - [x] Implementar la funcionalidad para **editar** plantillas. - [x] Asegurar que la **previsualización** funcione correctamente. - [x] Integrar el botón para insertar imágenes de la **galería** en el editor. - [x] **Paso 12: Módulo de CREAR MENSAJE DISCORD** - [x] **Verificar:** Analizar archivos existentes en `/discord/views/messages/` (`create.php`) y API `/discord/api/messages/send.php`. - [ ] **Implementar/Corregir:** - [x] Interfaz para seleccionar destinatario (individual) e ingresar contenido. - [x] Carga de plantillas en el editor. - [x] Editor local con soporte de imágenes (Summernote + Galería). - [x] Previsualización del mensaje. - [x] API para enviar mensajes inmediatos a Discord. - [x] Guardado del mensaje enviado en `mensajes_discord`. - [x] **Mejorar:** Permitir selección de **múltiples destinatarios**. - [x] **Implementar:** Funcionalidad de envío **programado**. - [x] **Implementar:** Funcionalidad de envío **recurrente**. - [x] **Paso 13: Módulo de ENVIADOS DISCORD** - [x] **Verificar:** Analizar archivos existentes en `/discord/views/messages/` (`sent.php`). - [ ] **Implementar/Corregir:** - [x] Página para listar mensajes enviados (con paginación). - [x] **Mejorar:** Mostrar mensajes en todos los estados (enviado, pendiente, fallido, deshabilitado). - [x] **Implementar:** Botón "Eliminar" (que cambie estado a 'deshabilitado' y elimine en Discord si es posible). - [x] **Paso 14: Módulo de DESTINATARIOS DISCORD** - [x] **Verificar:** Analizar archivos existentes en `/discord/views/recipients/` (`list.php`) y APIs (`create.php`, `delete.php`). - [x] **Implementar/Corregir:** - [x] Interfaz para listar destinatarios (usuarios y canales). - [x] Funcionalidad para **crear** nuevo destinatario (vía modal y API). - [x] Funcionalidad para **eliminar** destinatario (vía API). - [x] **Mejorar:** Mostrar y gestionar destinatarios de tipo "grupo". - [x] **Implementar:** Funcionalidad para **editar** destinatarios. - [x] **Implementar:** Funcionalidad para **expulsar** (requiere interacción con la API de Discord). - [ ] **Integrar:** Sincronización con el webhook (se abordará en el Paso 20). - [x] **Paso 15: Módulo de COMANDOS DISCORD** - [x] **Verificar:** Analizar archivos existentes en `/discord/views/commands/` (`list.php`). - [x] **Implementar/Corregir:** - [x] Página para listar comandos (reutiliza plantillas con comando asociado). - [x] **Implementar:** Funcionalidad para **eliminar** un comando (implica eliminar la plantilla asociada). - [x] **Considerar:** Si es necesario gestionar los Slash Commands de Discord vía API (más allá de la DB local). Por ahora, el plan indica "borrado completo" que apunta a la plantilla asociada. - [x] **Paso 16: Módulo de IDIOMAS (COMPARTIDO)** - [x] **Verificar:** Analizar archivos existentes en `/shared/languages/` (`manager.php`). - [x] **Implementar:** Crear la interfaz para gestionar idiomas y la integración con LibreTranslate. - [x] Listado de idiomas. - [x] Activar / Desactivar idiomas. - [x] Sincronizar idiomas con LibreTranslate. - [x] Actualizar bandera de idioma. - [x] Prueba de traducción con LibreTranslate. - [x] **Paso 17: Módulo de MENSAJE DE BIENVENIDA DISCORD** - [x] **Verificar:** Analizar archivos existentes en `/discord/views/welcome/` (`config.php`). - [ ] **Implementar/Corregir:** - [x] Configuración de activación/desactivación del mensaje. - [x] Configuración para registrar usuario en BD. - [x] Selección de canal destino. - [x] Editor (Summernote) para el texto de bienvenida. - [x] Botón para probar el mensaje (`send_test.php` API). - [x] **Reintegrar:** Selección e inserción de **imagen opcional** (la UI HTML fue eliminada/comentada, pero la DB y JS de galería lo soportan). - [x] **Implementar:** Selección de **idiomas** específicos para el mensaje de bienvenida (guardar en `idiomas_habilitados`). - [x] **Paso 18: Módulo de LOGS DISCORD** - [x] **Verificar:** Analizar archivos existentes en `/discord/views/logs/` (`list.php`). - [x] **Implementar:** Crear la interfaz para visualizar los logs de Discord. - [x] Listado de logs con paginación. - [x] Filtrado por nivel, origen y búsqueda en descripción. - [x] Visualización de detalles JSON en modal. - [x] **Paso 19: Crear `test_discord_connection.php`** - [x] **Verificar:** Revisar si el archivo ya existe (`discord/test_connection.php`). - [x] **Implementar:** Crear un script simple para probar la conexión con la API de Discord. - [x] Verificación de token. - [x] Conexión con Discord API (@me). - [x] Acceso al servidor Discord (Guild ID). - [x] Listado de canales. - [x] **Paso 20: Crear webhook de Discord** - [x] **Verificar:** Analizar archivos existentes en `/discord/webhook/` (`index.php`). - [ ] **Implementar/Corregir:** - [x] Verificación de firma de seguridad Discord (Ed25519) - Fallo seguro si extensión `sodium` no instalada. - [x] Manejo de interacción `PING` (tipo 1). - [x] Manejo básico de componentes de mensaje (tipo 3) para selección de idioma (`lang_select_`). - [x] **Implementar:** Manejo de **comandos de aplicación (Slash Commands - tipo 2)**: - [x] Detección y procesamiento de comandos como `/comandos`, `/agente`. - [x] **Implementar:** Manejo de **mensajes entrantes** (directos o de canal, si aplica). - [x] **Implementar:** **Registrar destinatarios** (ej. usuarios que interactúan por primera vez). - [x] **Mejorar:** **Detectar idioma y traducir** (integración completa con LibreTranslate). - [x] **Implementar:** Envío de **respuestas con imágenes y división de mensajes largos**. - [x] **Integrar:** Sincronización con el webhook (tarea pendiente del Paso 14, ahora parte de este paso). ### 🟣 FASE 4.2 – PLATAFORMA TELEGRAM - [x] **Paso 21: Crear estructura interna de `/telegram`** - [x] **Verificar:** Analizar archivos existentes en `/telegram/`. - [x] La estructura de directorios (`api/`, `controllers/`, `models/`, `public/`, `routes/`, `views/`, `webhook/`) ya existe. - [x] **Paso 22: Crear `dashboard_telegram.php`** (Idéntico a Discord, Paso 9) - [x] **Verificar:** Analizar `telegram/dashboard_telegram.php`. - [x] **Implementar/Corregir:** Asegurar que sea funcional como panel principal de Telegram. - [x] **Paso 23: Galería ya existe (no se duplica)** (Idéntico a Discord, Paso 10) - [x] **Verificar:** El módulo de Galería (`/gallery`) es compartido y ya está implementado (Paso 10). - [x] **Paso 24: Módulo de PLANTILLAS TELEGRAM** (Idéntico a Discord, Paso 11) - [x] **Verificar:** Analizar archivos existentes en `/telegram/views/templates/` y APIs asociadas. - [x] **Implementar/Corregir:** - [x] Crear la interfaz (`list.php`, `create.php`, `edit.php`, `preview.php`) para plantillas Telegram. - [x] Implementar APIs (`/telegram/api/templates/`). - [x] Asegurar funciones de crear, listar, editar, eliminar y previsualizar. - [x] Integrar botón para insertar imágenes de la galería en el editor. - [x] **Paso 25: Módulo de CREAR MENSAJE TELEGRAM** (Idéntico a Discord, Paso 12) - [x] **Verificar:** Analizar archivos existentes en `/telegram/views/messages/` (`create.php`) y API `/telegram/api/messages/send.php`. - [x] **Implementar/Corregir:** - [x] Interfaz para seleccionar destinatario(s) e ingresar contenido. - [x] Carga de plantillas en el editor. - [x] Editor local con soporte de imágenes (Summernote + Galería). - [x] Previsualización del mensaje. - [x] API para enviar mensajes inmediatos a Telegram. - [x] Guardado del mensaje enviado en `mensajes_telegram`. - [x] **Mejorar:** Permitir selección de **múltiples destinatarios**. - [x] **Implementar:** Funcionalidad de envío **programado**. - [x] **Implementar:** Funcionalidad de envío **recurrente**. - [x] **Paso 26: Módulo de ENVIADOS TELEGRAM** (Idéntico a Discord, Paso 13) - [x] **Verificar:** Analizar archivos existentes en `/telegram/views/messages/` (`sent.php`). - [x] **Implementar/Corregir:** - [x] Página para listar mensajes enviados (con paginación). - [x] **Mejorar:** Mostrar mensajes en todos los estados (enviado, pendiente, fallido, deshabilitado). - [x] **Implementar:** Botón "Eliminar" (que cambie estado a 'deshabilitado' y elimine en Telegram si es posible). - [x] **Paso 27: Módulo de DESTINATARIOS TELEGRAM** (Idéntico a Discord, Paso 14) - [x] **Verificar:** Analizar archivos existentes en `/telegram/views/recipients/` y APIs. - [x] **Implementar/Corregir:** - [x] Interfaz para listar, crear, editar, eliminar destinatarios. - [x] Implementar APIs (`/telegram/api/recipients/`). - [x] **Mejorar:** Gestión de tipos de destinatario de Telegram (usuarios, canales, grupos). - [x] **Implementar:** Funcionalidad para **expulsar** (requiere interacción con la API de Telegram). - [ ] **Integrar:** Sincronización con el webhook (se abordará en el Paso 33). - [x] **Paso 28: Módulo de COMANDOS TELEGRAM** (Idéntico a Discord, Paso 15) - [x] **Verificar:** Analizar archivos existentes en `/telegram/views/commands/`. - [x] **Implementar/Corregir:** - [x] Página para listar comandos (reutiliza plantillas con comando asociado). - [x] Funcionalidad para **eliminar** un comando. - [x] **Paso 29: Idiomas (ya existe, se usa igual)** (Idéntico a Discord, Paso 16) - [x] **Verificar:** El módulo de Idiomas (`/shared/languages`) es compartido y ya está implementado (Paso 16). - [x] **Paso 30: Módulo de MENSAJE DE BIENVENIDA TELEGRAM** (Idéntico a Discord, Paso 17) - [x] **Verificar:** Analizar archivos existentes en `/telegram/views/welcome/`. - [x] **Implementar/Corregir:** - [x] Crear la interfaz (`config.php`) para configurar el mensaje de bienvenida. - [x] API `/telegram/api/welcome/send_test.php` para probar mensaje. - [x] Selección e inserción de imagen opcional. - [x] Selección de idiomas específicos. - [x] Botón "Únete al grupo". - [x] **Paso 31: Módulo de LOGS TELEGRAM** (Idéntico a Discord, Paso 18) - [x] **Verificar:** Analizar archivos existentes en `/telegram/views/logs/` (`list.php`). - [x] **Implementar:** Crear la interfaz para visualizar los logs de Telegram. - [x] Listado de logs con paginación. - [x] Filtrado por nivel, origen y búsqueda en descripción. - [x] Visualización de detalles JSON en modal. - [x] **Paso 32: Crear `test_telegram_connection.php`** (Idéntico a Discord, Paso 19) - [x] **Verificar:** Analizar `telegram/test_connection.php`. - [x] **Implementar:** Crear un script simple para probar la conexión con la API de Telegram. - [x] Verificación de token. - [x] Conexión con Telegram API (`getMe`, `getUpdates`). - [x] Gestión de Webhook (set, delete, getInfo). - [x] **Paso 33: Crear webhook de Telegram** (Idéntico a Discord, Paso 20) - [x] **Verificar:** Analizar archivos existentes en `/telegram/webhook/`. - [x] **Implementar:** Desarrollar la lógica del webhook para manejar mensajes, comandos y registros. - [x] Verificación de `secret_token` del webhook. - [x] Registro de destinatarios que interactúan. - [x] Manejo de `MESSAGE_CREATE` (mensajes entrantes). - [x] Manejo de comandos de texto (`/start`, `/help`, comandos de `plantillas_telegram`, `#grupo`). - [x] Manejo de `CALLBACK_QUERY` (botones inline) para selección de idioma. - [x] Detección de idioma y traducción de respuestas del bot. - [x] **Implementar:** Envío de **respuestas con imágenes y división de mensajes largos**. - [x] **Integrar:** Sincronización con el webhook. ### 🟥 FASE 5 — Módulos Compartidos Finales - [x] **Paso 34: Implementar permisos por rol** - [x] **Verificar:** Analizar tablas `roles` y `permisos` en `shared/database/schema.sql`. - [x] **Definir Permisos Específicos:** Crear una lista de permisos necesarios para cada acción (crear, editar, eliminar, etc.) en módulos clave. - [x] **Crear Helper de Permisos:** Implementar una función centralizada `hasPermission($permissionName, $platform = 'global')` en `shared/utils/helpers.php`. - [x] **Integrar Permisos en APIs:** Añadir verificaciones de permisos al inicio de cada endpoint de API crítico. - [x] **Integrar Permisos en Vistas:** Ocultar/mostrar elementos de UI (botones, enlaces) según los permisos del usuario. - [x] **Paso 35: Implementar traducción completa del sistema** - [x] **Crear Archivos de Traducción:** Crear archivos JSON (`es.json`, `en.json`, `pt.json`) en `shared/translations/`. - [x] **Crear Helper de Traducción:** Implementar una función `__($key)` en `shared/translations/manager.php`. - [x] **Refactorizar Vistas:** Reemplazar todas las cadenas de texto hardcoded con la función `__()`. - [x] **Paso 36: Definir notificaciones internas** - [x] **Crear sistema de notificaciones:** Implementar un sistema de notificaciones "toast" no intrusivas. - [x] **Integrar notificaciones:** Reemplazar `alert()` con el nuevo sistema en toda la aplicación. - [ ] **Paso 37: Pruebas de todo el sistema** ### 🟩 FASE 6 — Documentación - [ ] **Paso 38: Documentar el proyecto**