Sincronización con Discord y Steam - Raul125/PanelWiki GitHub Wiki

💬 Sincronización con Discord y Steam

La sincronización con Discord es un proceso automático e integral que conecta los usuarios del panel web con sus cuentas de Discord y Steam. Este sistema garantiza que los roles, permisos y estado de los usuarios se mantengan coherentes entre todas las plataformas de la comunidad.


🌐 Funcionamiento del Sistema

🔄 Proceso Automático de Vinculación

📱 Flujo de Autenticación

  1. Usuario inicia sesión → Accede al panel web
  2. Redirección OAuth Discord → Automática e inevitable
  3. Autorización Discord → Usuario concede permisos
  4. Autorización Steam* → Usuario concede permisos
  5. Creación de perfil unificado → Ambas cuentas vinculadas
  6. Sincronización inicial → Roles y datos actualizados

🚫 Sin Opciones de Control

  • No hay botones de vincular/desvincular → Proceso obligatorio
  • Sincronización forzada → Requerida para acceso
  • Cuentas automáticamente unificadas → Sistema integral
  • Sin bypass disponible → Seguridad y consistencia

🤖 Bot de Discord Integrado

🔗 Funcionalidades del Bot

👥 Gestión de Roles Automática

  • Sincronización bidireccional → Panel ↔ Discord
  • Aplicación inmediata → Cambios en tiempo real
  • Colores consistentes → Paleta unificada
  • Jerarquía respetada → Según pesos del panel

📊 Monitoreo de Estado

  • Detección de cambios → En roles de Discord
  • Actualización automática → Reflejado en panel
  • Logs de actividad → Registro de sincronizaciones
  • Estado de conexión → Verificación continua

⚙️ Configuración del Bot

🔐 Permisos Requeridos

  • Manage Roles → Asignar/remover roles automáticamente
  • Read Messages → Detectar actividad de usuarios
  • Send Messages → Notificaciones automáticas
  • View Audit Log → Registro de cambios
  • Administrator → Acceso completo para sincronización

🎯 Ámbitos de Operación

  • Servidor principal → NeonCommunity Discord
  • Canales específicos → Staff, general, reportes
  • Categorías de roles → Staff, Donadores, Especiales
  • Usuarios activos → Solo miembros del servidor

🔄 Proceso de Sincronización

👤 Sincronización de Usuarios

📋 Datos Sincronizados

  • Nombre de usuario → Discord username
  • Avatar → Imagen de perfil de Discord
  • ID único → Discord ID para identificación
  • Estado de conexión → Online/offline
  • Roles actuales → Lista completa de roles
  • Fecha de ingreso → Al servidor de Discord

🛡️ Sincronización de Roles

📊 Mapeo de Roles (Ejemplo)

Panel Web          ↔  Discord Server
Owner             ↔  👑 Owner
Admin Senior      ↔  🔴 Administrator  
Admin             ↔  🟠 Moderator Senior
Mod Senior        ↔  🟡 Moderator
Mod               ↔  🔵 Helper
Donador VIP       ↔  💎 VIP
Donador Premium   ↔  ⭐ Premium
Donador           ↔  💝 Supporter
Usuario           ↔  👤 Member

🎨 Consistencia Visual

  • Colores idénticos → Entre panel y Discord
  • Iconos representativos → Identificación rápida
  • Orden jerárquico → Mismo peso/posición
  • Nombres coherentes → Misma nomenclatura

⚡ Actualizaciones Automáticas

⚙️ DiscordRoleSync Background Service

🤖 Funcionamiento del Servicio

  • Servicio en segundo planoBackgroundService corriendo continuamente
  • Inicio automático → Con el arranque de la aplicación
  • Retraso inicial → 10 segundos para estabilización
  • Ciclo regular → Cada 60 segundos sin parar
  • Procesamiento por lotes → 100 usuarios por ciclo

🚀 Optimizaciones Técnicas

  • Proyección de datos → Solo carga campos necesarios
  • Operaciones SQL directas → Para modificaciones masivas
  • Paginación eficiente → OrderBy consistente para evitar duplicados
  • Logging detallado → Progreso e información de troubleshooting
  • Manejo de errores → Continúa funcionando ante fallos

📊 Proceso de Sincronización Detallado

1️⃣ Preparación de Datos

  1. Cargar roles de Discord → Solo los que tienen DiscordRoleId
  2. Contar usuarios totales → Con DiscordId válido
  3. Crear diccionario de mapeo → DiscordRoleId → PanelRoleId
  4. Inicializar contadores → Para reporte de progreso

2️⃣ Procesamiento por Lotes

  1. Cargar lote de usuarios → 100 por vez con proyección
  2. Verificar existencia en Discord → GetUser() del servidor
  3. Comparar roles actuales → DB vs Discord del usuario
  4. Calcular diferencias → Roles a añadir/remover
  5. Aplicar cambios → SQL directo para eficiencia

3️⃣ Operaciones de Roles

-- Eliminar roles que no están en Discord
DELETE FROM UserRoles 
WHERE UserId = {userId} AND RoleId IN ({roleIds})

-- Añadir roles que están en Discord
INSERT INTO UserRoles (UserId, RoleId) 
VALUES ({userId1}, {roleId1}), ({userId2}, {roleId2})...

4️⃣ Reporte de Progreso

  • Log por lote → "Progreso: X/Y usuarios procesados"
  • Log final → "Usuarios actualizados: X/Y"
  • Detalles de cambios → Roles añadidos/eliminados por usuario
  • Manejo de errores → Usuarios no encontrados en Discord

🔄 Eventos Monitoreados

👥 Cambios en Discord

  • Usuario se une → Creación automática en panel
  • Usuario se va → Marcado como inactivo
  • Rol asignado → Sincronizado al panel
  • Rol removido → Actualizado en panel
  • Cambio de nickname → Reflejado si procede
  • Actualización de avatar → Sincronizado automáticamente

🌐 Cambios en Panel

  • Rol asignado en panel → Aplicado en Discord
  • Rol removido en panel → Removido de Discord
  • Usuario sancionado → Posible kick/ban en Discord
  • Cambios de permisos → Reflejados en accesos
  • Actualización de datos → Propagado a Discord

⏱️ Frecuencia de Sincronización

📅 Tipos de Sincronización

  • Servicio automático → Cada 60 segundos
  • Inicio diferido → 10 segundos después del arranque
  • Procesamiento por lotes → 100 usuarios por ciclo
  • Proyección optimizada → Solo datos necesarios
  • Manual → Trigger por administradores (si disponible)

🚀 Optimización de Rendimiento

  • Batch processing → 100 usuarios por lote para eficiencia
  • Proyección de datos → Solo campos necesarios cargados
  • SQL directo → Para operaciones masivas de roles
  • Paginación consistente → OrderBy para evitar duplicados
  • Rate limiting → Respeto a límites de Discord API
  • Error handling → Reintentos automáticos
  • Logging detallado → Para troubleshooting y progreso

🔐 Seguridad y Validación

🛡️ Medidas de Seguridad

🔒 Validación de Identidad

  • OAuth2 Discord → Autenticación segura
  • OpenID Steam → Verificación cruzada
  • Tokens únicos → Por sesión y usuario
  • Verificación 2FA → Si está habilitado
  • IP tracking → Para detección de anomalías

⚖️ Control de Acceso

  • Permisos granulares → Por tipo de operación
  • Jerarquía respetada → No escalar privilegios
  • Audit logs → Registro de todas las acciones
  • Rate limiting → Prevención de abuso
  • Detección de bots → Filtrado automático

🚨 Manejo de Errores

❌ Situaciones Comunes

  • Discord desconectado → Usuario se va del servidor
  • Steam privado → Perfil no público
  • Rol inexistente → Creación automática o mapeo
  • Permisos insuficientes → Escalado o notificación
  • API limitada → Queue y reintentos

🔄 Recuperación Automática

  • Reconexión automática → Si se pierde conexión
  • Resincronización → Al reactivar cuenta
  • Backup de datos → Estados anteriores
  • Notificaciones admin → Errores críticos
  • Logs detallados → Para diagnóstico

📊 Monitoreo y Estadísticas

📈 Métricas del Sistema

👥 Estadísticas de Usuarios

  • Usuarios totales sincronizados → Contador global
  • Usuarios activos → Última conexión < 7 días
  • Usuarios con ambas cuentas → Discord + Steam
  • Usuarios solo Discord → Sin Steam vinculado
  • Usuarios problemáticos → Con errores de sincronización

🛡️ Estadísticas de Roles

  • Roles sincronizados → Total en ambas plataformas
  • Roles únicos Panel → No reflejados en Discord
  • Roles únicos Discord → No mapeados al panel
  • Sincronizaciones exitosas → Por período
  • Errores de sincronización → Y resolución

📋 Logs de Actividad

🔍 Información Registrada

  • Timestamp → Fecha y hora exacta
  • Tipo de evento → Creación, modificación, eliminación
  • Usuario afectado → Discord ID + Panel ID
  • Acción específica → Rol añadido/removido/modificado
  • Estado anterior → Antes del cambio
  • Estado posterior → Después del cambio
  • Resultado → Éxito/error/pendiente

📊 Análisis de Tendencias

  • Actividad por horas → Picos de sincronización
  • Errores más comunes → Para mejoras
  • Usuarios más activos → Cambios frecuentes
  • Eficiencia del sistema → Tiempo de respuesta

🎯 Beneficios de la Integración

👤 Para los Usuarios

🌟 Experiencia Unificada

  • Single Sign-On → Una autenticación para todo
  • Roles automáticos → Sin gestión manual
  • Estado coherente → Mismos permisos en todas partes
  • Acceso inmediato → A funcionalidades según rol
  • Perfil unificado → Información centralizada

🎮 Gaming Experience

  • Reconocimiento automático → En servidor SCP:SL
  • Comandos disponibles → Según rol en Discord
  • Estadísticas integradas → Entre plataformas
  • Reportes centralizados → Desde cualquier plataforma

👮 Para el Staff

🛠️ Herramientas Administrativas

  • Gestión centralizada → Un lugar para todo
  • Aplicación automática → De cambios de roles
  • Visibilidad completa → Estado de todos los usuarios
  • Notificaciones automáticas → De eventos importantes
  • Auditoría completa → Trazabilidad total

⚡ Eficiencia Operativa

  • Menos trabajo manual → Automatización completa
  • Consistencia garantizada → Entre plataformas
  • Respuesta rápida → A cambios y eventos
  • Escalabilidad → Maneja crecimiento automáticamente

🚨 Solución de Problemas

❌ Problemas Comunes

🔗 Usuario No Sincronizado

  • Verificar conexión Discord → Usuario en servidor
  • Verificar conexión Steam → Perfil público
  • Revisar logs de sincronización → Errores específicos
  • Forzar resincronización → Desde panel admin
  • Verificar permisos bot → Accesos necesarios

🛡️ Roles No Aplicados

  • Verificar jerarquía bot → Posición en Discord
  • Revisar mapeo de roles → Correspondencias correctas
  • Verificar permisos → Bot puede gestionar roles
  • Cache de Discord → Puede tardar unos minutos
  • Logs de errores → API rate limits o errores

⚡ Sincronización Lenta

  • API limits Discord → Rate limiting normal
  • Muchos cambios simultáneos → Queue processing
  • Conexión de red → Latencia alta
  • Carga del servidor → Recursos limitados
  • Mantenimiento Discord → Servicios degradados

🔧 Herramientas de Diagnóstico

📊 Panel de Estado

  • Estado del bot → Online/offline/errores
  • Últimas sincronizaciones → Exitosas y fallidas
  • Queue de operaciones → Pendientes de procesar
  • Estadísticas en tiempo real → Métricas actuales
  • Alertas activas → Problemas detectados

🔍 Logs Detallados

  • Filtros por usuario → Seguimiento específico
  • Filtros por tipo → Solo errores o éxitos
  • Filtros por fecha → Período específico
  • Exportación → Para análisis externo
  • Alertas automáticas → Para admin

🔗 Enlaces Relacionados


📞 Soporte y Ayuda

🆘 Obtener Ayuda

💡 Información Técnica

  • Discord API → Documentación oficial
  • Steam OpenID → Especificaciones técnicas
  • Rate limits → Límites y mejores prácticas
  • Webhook events → Eventos monitoreados

🛠️ Para Desarrolladores

  • API endpoints → Endpoints de sincronización
  • Event handlers → Procesamiento de eventos
  • Error codes → Códigos de error específicos
  • Testing tools → Herramientas de prueba

💬 Una Cuenta, Todas las Plataformas

¿Problemas con la sincronización? Consulta en el canal staff de [Discord](https://discord.neoncommunity.eu/) o revisa Sistema de Roles

⚠️ **GitHub.com Fallback** ⚠️