30 Commits

Author SHA1 Message Date
223c44f1d8 Feature: Agregar selección de idiomas por plataforma (Telegram/Discord)
- Agregar columnas telegram_enabled y discord_enabled a supported_languages
- Nueva interfaz en admin/languages.php con checkboxes para Telegram y Discord
- Los bots ahora solo muestran botones de traducción para los idiomas seleccionados por plataforma
2026-03-10 18:52:30 -06:00
8170931f3d Fix: Motor de traducción mejorado para mensajes multi-idioma y dinámicos
- Rediseñado translatePartial para manejar mezclas de idiomas (ej: 'Hello a todos')
- Eliminados hardcodes de idiomas ES/PT, ahora es 100% dinámico
- Corregido truncado de texto original en el webhook de Telegram
- Mejorada la deduplicación y preservación de párrafos en traducciones
- Fallback dinámico al primer idioma activo de la base de datos
2026-03-10 18:23:56 -06:00
bf960f3fc3 Fix: Botones de traducción - editar mensaje en Telegram y Discord 2026-03-10 16:30:52 -06:00
082e01b358 Feature: Reescribir configuración Docker completa
- Dockerfile: PHP 8.3 con Apache, copia todo el código a la imagen
- docker-compose.yml: Sin volúmenes de código, usa env_file
- supervisord.conf: Incluye Apache, Discord bot y colas de procesos
- apache.conf: Configuración de virtualhost con rewrite
- .dockerignore: Excluye archivos innecesarios de la imagen
- Eliminados archivos duplicados de supervisor
- Creada carpeta database/ para init scripts
- Telegram funciona vía webhook (no necesita supervisor)
2026-02-20 21:41:24 -06:00
c439ecd689 Fix: Evitar duplicar Español en selector de idioma 2026-02-20 17:12:24 -06:00
2dcff94a22 Feature: Agregar footer con licencia MIT y desarrollador 2026-02-20 17:10:07 -06:00
880940f515 Docs: Actualizar README con nuevas características
- Diseño militar/táctico
- Sistema multi-idioma con LibreTranslate
- Tema claro/oscuro
- Navbar horizontal
- Estructura completa del proyecto
- Variables de entorno actualizadas
- Comandos de Telegram y Discord
2026-02-20 17:01:00 -06:00
509c7e1709 Feature: Traducir admin/languages.php - tablas, modales, botones 2026-02-20 16:09:17 -06:00
e8213b916b Feature: Traducir todas las vistas - parte 2
- admin_send_message.php: formulario, modal galería
- telegram/admin/telegram_bot_interactions.php: configuración bot
- telegram/admin/telegram_welcome.php: mensajes bienvenida, modales
2026-02-20 16:05:51 -06:00
2dd99c04dd Feature: Traducir todas las vistas - parte 1
- admin/recipients.php: tablas, modales, labels
- admin/comandos.php: títulos, tablas, descripciones
- admin/test_discord_connection.php: formularios, alertas
- admin/ia_agent.php: configuración, parámetros
- profile.php: información, formulario contraseña
- set_webhook.php: alertas, formularios
- chat_telegram.php: usuarios, historial
- translate_message.php: formulario de traducción
2026-02-20 16:01:06 -06:00
65de04209f Fix: Traducir todos los textos y modal en admin/users.php 2026-02-20 15:47:09 -06:00
f3e9c26338 Fix: Traducir modales y JavaScript en gallery.php 2026-02-20 15:43:21 -06:00
72ea19e00d Fix: Traducir modales y JavaScript en recurrentes.php 2026-02-20 15:41:06 -06:00
c24544360c Feature: Agregar soporte i18n a todas las páginas restantes
- recurrentes.php, sent_messages.php, gallery.php
- admin/users.php, recipients.php, languages.php, comandos.php
- admin/test_discord_connection.php, ia_agent.php
- profile.php, set_webhook.php, chat_telegram.php
- translate_message.php, admin_send_message.php
- telegram/admin/telegram_bot_interactions.php
- telegram/admin/telegram_welcome.php
2026-02-20 15:36:14 -06:00
d0478d949b Fix: Error 500 en scheduled_messages - cargar i18n antes de usar t() 2026-02-20 15:24:56 -06:00
a44a64a01f Feature: Sistema multi-idioma con LibreTranslate
- Nuevo includes/i18n.php con funciones t() para traducción
- Selector de idioma en navbar y login
- Traducciones aplicadas a: dashboard, login, mensajes programados, crear mensaje, sistema
- Usa idiomas activados desde admin/languages.php
- Caché de traducciones incluido
2026-02-20 15:21:17 -06:00
6a50e64b42 Feature: Página de sistema (DB info) + Fix tema claro 2026-02-20 14:54:56 -06:00
4437deb505 Style: Rediseño militar/táctico - navbar horizontal superior 2026-02-20 14:49:16 -06:00
e8912bdb63 Mejoras en el envío de plantillas con imágenes
- Agregar detección de URLs de Discord gifts para evitar botones de traducción
- Enviar imágenes en orden correcto (texto-imagen-texto-imagen) en Discord y Telegram
- Usar APP_URL del .env para las URLs de imágenes
- Agregar funciones sendContentWithOrderedImagesAndButtons en ambos bots
2026-02-19 19:12:28 -06:00
a55c45ef94 Fix: Ignorar GIFs y attachments puros sin texto en Discord
- Agregar validación temprana para ignorar mensajes vacíos en Discord
- Si el mensaje solo contiene attachments (GIF, imagen, etc) sin texto, se ignora
- Evita que se generen botones de traducción para GIFs puros

Cambio en EVENT::MESSAGE_CREATE:
- Verificar if (empty(trim($content))) y retornar antes de procesar
2026-02-19 16:09:26 -06:00
aa98d9185f Feature: Manejo inteligente de emojis, stickers y GIFs
Cambios principales:
- Nuevo archivo: includes/emoji_helper.php
  * hasRealContent(): Detecta si hay contenido real (no solo emojis)
  * stripEmojisForDetection(): Preserva emojis visuales pero mejora detección de idioma

Telegram (telegram_bot_webhook.php):
- Ignorar stickers puros sin caption
- Ignorar GIFs/animaciones puras sin caption
- Procesar caption si tiene contenido real
- Usar stripEmojisForDetection() para mejor precisión en idioma

Discord (discord_bot.php):
- Ignorar mensajes con solo emojis/espacios
- Usar stripEmojisForDetection() para detección más precisa
- Intentar preservar emojis en la traducción

Comportamiento:
- Solo 👍 = Ignorado
- Hola 👍 = Traducido como 'Hola' (emoji se preserva)
- {sticker_sin_caption} = Ignorado
- {gif_sin_caption} = Ignorado
- {foto_con_caption} = Caption traducido
2026-02-19 16:05:59 -06:00
0c053ab036 Feature: Soporte para caption en imágenes/videos
- Telegram: Procesar caption de fotos y videos con botones de traducción
- Discord: Ignorar mensajes vacíos (solo attachments sin texto)
- Si no hay caption/texto, los bots no procesan nada
- Si hay caption/texto, se traduce normalmente

Cambios:
- telegram/webhook/telegram_bot_webhook.php: Agregar procesamiento de $caption
- discord_bot.php: Agregar validación de texto vacío
- handleTelegramMessage: Ignorar textos vacíos
- handleAutoTranslationWithButtons: Ignorar textos vacíos
2026-02-19 16:01:46 -06:00
3519853bb6 Fix: Preservar saltos de línea en traducciones de Telegram
- El patrón /\s+/ estaba colapsando TODOS los espacios en blanco incluyendo \n
- Cambiar a /[ \t]+/ para colapsar solo espacios horizontales
- Agregar limpieza de saltos de línea múltiples preservando estructura
- Aplicado en: create_message.php, process_queue.php, discord_bot.php, telegram_bot_webhook.php

Soluciona: 'Hola a todos, El orden de la lista\n\nMiguel\n\nnickpons\n\nLuis'
se traducía como 'Olá a todos, A ordem da listaMiguelnickponsLuis' (sin saltos)
2026-02-19 15:58:39 -06:00
a4dd8fefe8 Fix: Optimizar respuesta de interacciones de traducción en Discord
- Cambiar de deferReply() a respondWithMessage() para garantizar respuesta en <3s
- Responder inmediatamente con mensaje de carga
- Actualizar respuesta con traducción completa
- Agregar caché de traducciones para evitar llamadas repetidas a LibreTranslate
- Caché guardar en archivos temporales con validez de 30 días

Soluciona: 'Interacción fallida' en traducción al inglés y otros idiomas
2026-02-19 15:50:17 -06:00
1d124d2cba Fix: Botones de traducción para /comandos y limpieza de HTML en Telegram 2026-02-19 15:01:16 -06:00
e2644749cc Fix: Usar APP_URL del .env para redirección al login 2026-02-19 14:25:56 -06:00
b002982faa Fix: Redirección correcta al login usando URL absoluta 2026-02-19 14:24:23 -06:00
a4960b90e8 Fix: Redirección correcta al login al expirar sesión 2026-02-19 14:22:31 -06:00
b79a03e379 Agregar soporte para tema claro/oscuro 2026-02-19 14:20:29 -06:00
38a8447a64 Initial commit - Last War messaging system 2026-02-19 01:33:28 -06:00