feat: Añadir sistema de mensajes de bienvenida con traducción para Discord

- Nueva tabla 'welcome_messages' en la base de datos
- Panel web con página de configuración de bienvenida (/welcome)
  - Listar, crear, editar y eliminar mensajes por servidor
  - Vista previa del mensaje
  - Plantillas predefinidas
- Bot Discord:
  - Nuevo intent 'members' para detectar nuevos usuarios
  - Evento on_member_join que envía mensaje de bienvenida
  - Botones de traducción en mensajes de bienvenida
- Actualizada configuración de MySQL en docker-compose.yml
- Añadido logging de debug para traducciones
This commit is contained in:
2026-03-20 03:18:07 -06:00
parent a3a55e5a95
commit 048e39e6a9
8 changed files with 614 additions and 14 deletions

View File

@@ -1,4 +1,5 @@
{% set lang = request.cookies.get('panel_lang', 'es') %}
{% set is_admin = username == 'nickpons666' %}
<!DOCTYPE html>
<html lang="{{ lang }}">
<head>
@@ -55,6 +56,18 @@
</div>
</div>
<div class="col-md-4">
<div class="card text-white bg-info mb-3">
<div class="card-body">
<h5 class="card-title"><i class="bi bi-emoji-smile"></i> {{ "Bienvenida" | translate(lang) }}</h5>
<p class="card-text">{{ "Configurar mensaje de bienvenida" | translate(lang) }}</p>
<a href="/welcome" class="btn btn-light btn-sm">{{ "Configurar" | translate(lang) }}</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="card text-white bg-dark mb-3">
<div class="card-body">
@@ -82,7 +95,7 @@
</tr>
<tr>
<th>{{ "LibreTranslate URL" | translate(lang) }}</th>
<td>{{ config.libretranslate.url if config.libretranslate.url else '❌ No configurado' | translate(lang) }}</td>
<td>{{ config.libretranslate.url if is_admin else '********' if config.libretranslate.url else '❌ No configurado' | translate(lang) }}</td>
</tr>
<tr>
<th>{{ "Idiomas activos" | translate(lang) }}</th>
@@ -95,20 +108,20 @@
{% if config.database.type == 'mysql' %}
<tr>
<th>{{ "Host MySQL" | translate(lang) }}</th>
<td>{{ config.database.host }}:{{ config.database.port }}</td>
<td>{{ config.database.host ~ ':' ~ config.database.port if is_admin else '********' }}</td>
</tr>
<tr>
<th>{{ "Base de Datos" | translate(lang) }}</th>
<td>{{ config.database.name }}</td>
<td>{{ config.database.name if is_admin else '********' }}</td>
</tr>
<tr>
<th>{{ "Usuario MySQL" | translate(lang) }}</th>
<td>{{ config.database.user }}</td>
<td>{{ config.database.user if is_admin else '********' }}</td>
</tr>
{% else %}
<tr>
<th>{{ "Ruta SQLite" | translate(lang) }}</th>
<td>{{ config.database.path }}</td>
<td>{{ config.database.path if is_admin else '********' }}</td>
</tr>
{% endif %}
</table>