feat: implementar caché de traducciones y persistencia de mensajes en MySQL para Discord y Telegram

This commit is contained in:
2026-03-06 20:32:15 -06:00
parent 256d346b33
commit 0c0a1811ef
4 changed files with 179 additions and 15 deletions

View File

@@ -1,5 +1,6 @@
import discord
from botdiscord.translate import get_lang_mapping, get_flag_mapping, get_name_to_code, translate_text
from botdiscord.database import get_message, save_translation, get_cached_translation
class TranslationView(discord.ui.View):
def __init__(self, text: str, languages: list, original_message, attachments=None, mentions_map=None):
@@ -31,8 +32,26 @@ class TranslationButton(discord.ui.Button):
self.mentions_map = mentions_map or {}
async def callback(self, interaction: discord.Interaction):
# Traducimos el texto
translated = await translate_text(self.text, self.lang_code)
# Intentamos recuperar el mensaje de la base de datos si falta contexto
msg_context = None
if not self.text or not self.mentions_map:
# Recuperamos de la BD usando el ID del mensaje al que se responde
# En Discord, si es un reply, el original_message es el mensaje original
msg_id = self.original_message.id
db_msg = get_message(msg_id)
if db_msg:
self.text = db_msg['content']
self.mentions_map = db_msg['mentions_map']
# Verificamos si ya tenemos la traducción en caché
cached = get_cached_translation(self.original_message.id, self.lang_code)
if cached:
translated = cached
else:
# Traducimos el texto
translated = await translate_text(self.text, self.lang_code)
# Guardamos en caché
save_translation(self.original_message.id, self.lang_code, translated)
# Desescapamos el HTML para recuperar caracteres especiales
import html