- 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
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
- 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
- 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)
- 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