Sistema de Niveles
🎮 Sistema de Niveles
Sistema completo de experiencia (XP) y ranking para gamificar tu servidor Discord.
✨ Características Principales
📊 Sistema de XP Automático
- Gana XP automáticamente por enviar mensajes
- Algoritmo anti-spam con cooldown
- Cálculo exponencial de niveles
- Persistencia en base de datos
🏆 Ranking y Leaderboard
- Comando para ver tu nivel actual
- Ranking global del servidor
- Estadísticas detalladas por usuario
- Interfaz visual atractiva
🎯 Personalización
- XP por mensaje configurable
- Cooldown entre mensajes ajustable
- Canales excluidos del sistema
- Roles por nivel (próximamente)
🚀 Comandos Disponibles
Ver tu Nivel
/rank [usuario]Muestra el nivel, XP actual y progreso hacia el siguiente nivel.
Parámetros:
usuario(opcional): Ver el nivel de otro usuario
Ranking del Servidor
/leaderboard [página]Muestra el top 10 de usuarios con más XP del servidor.
Parámetros:
página(opcional): Navegar por diferentes páginas del ranking
🔧 Funcionamiento del Sistema
Ganar Experiencia
Por Mensajes
- XP por mensaje: 15-25 XP aleatorio
- Cooldown: 60 segundos entre mensajes que dan XP
- Canales válidos: Todos excepto los excluidos
Fórmula de Niveles
// XP necesario para el siguiente nivelxpRequired = level * level * 100
// Ejemplos:// Nivel 1: 100 XP// Nivel 2: 400 XP// Nivel 3: 900 XP// Nivel 10: 10,000 XPCálculo de Progreso
// Progreso hacia el siguiente nivelprogress = currentXP / xpForNextLevel * 100
// XP total desde el nivel anteriorlevelXP = currentXP - xpForCurrentLevel📊 Interfaz Visual
Comando /rank
🎮 Nivel de @Usuario
┌─ Información del Usuario ─┐│ Nivel Actual: 15 ││ XP Total: 23,450 ││ XP para Nivel 16: 1,150 ││ Progreso: ████████░░ 87% │└───────────────────────────┘
🏆 Ranking: #5 en el servidor📈 Progreso: 1,150 / 2,500 XPComando /leaderboard
🏆 Ranking del Servidor - Página 1
🥇 @Usuario1 Nivel 25 │ 62,500 XP🥈 @Usuario2 Nivel 23 │ 52,900 XP🥉 @Usuario3 Nivel 21 │ 44,100 XP4️⃣ @Usuario4 Nivel 19 │ 36,100 XP5️⃣ @Usuario5 Nivel 18 │ 32,400 XP6️⃣ @Usuario6 Nivel 17 │ 28,900 XP7️⃣ @Usuario7 Nivel 16 │ 25,600 XP8️⃣ @Usuario8 Nivel 15 │ 22,500 XP9️⃣ @Usuario9 Nivel 14 │ 19,600 XP🔟 @Usuario10 Nivel 13 │ 16,900 XP
Total de usuarios activos: 156🎨 Personalización Avanzada
Configuración por Defecto
const levelConfig = { xpPerMessage: { min: 15, max: 25 }, cooldown: 60000, // 1 minuto en milisegundos excludedChannels: [], levelUpMessages: true, autoRoles: false}Canales Excluidos
Puedes excluir ciertos canales del sistema de XP:
- Canales de spam
- Canales de bots
- Canales de comandos
- Canales AFK
📈 Estadísticas y Analytics
Datos que se Almacenan
{ "userId": "123456789", "guildId": "987654321", "xp": 23450, "level": 15, "totalMessages": 1534, "lastXpGain": "2024-01-15T10:30:00Z", "joinedAt": "2023-06-10T14:20:00Z"}Métricas Disponibles
- XP total por usuario y servidor
- Mensajes enviados que otorgaron XP
- Tiempo activo en el servidor
- Progresión de niveles histórica
- Ranking actual y histórico
🔮 Funcionalidades Futuras
Roles por Nivel (En Desarrollo)
// Configuración de roles automáticosconst autoRoles = { 5: "Miembro Activo", 10: "Veterano", 20: "Experto", 50: "Leyenda"}Recompensas Adicionales
- Insignias por logros especiales
- Multiplicadores de XP temporales
- Eventos de doble XP
- Misiones diarias para XP extra
Sistema de Prestigio
- Reset de nivel con beneficios permanentes
- Estrellas de prestigio como símbolo de estatus
- Beneficios exclusivos para usuarios de prestigio
🛠️ Administración
Comandos de Moderador
Ajustar XP (Próximamente)
/xp add @usuario cantidad/xp remove @usuario cantidad/xp set @usuario cantidadConfiguración del Sistema (Próximamente)
/level-configPanel para configurar:
- XP por mensaje
- Cooldown entre mensajes
- Canales excluidos
- Roles automáticos
🔍 Troubleshooting
Problemas Comunes
No gano XP por mis mensajes
- Causa: Estás en cooldown de 1 minuto
- Solución: Espera al menos 1 minuto entre mensajes
Mi nivel no aparece correctamente
- Causa: Base de datos no sincronizada
- Solución: Envía un mensaje nuevo para actualizar
El leaderboard está vacío
- Causa: Nadie ha ganado XP aún en el servidor
- Solución: Los usuarios deben enviar mensajes para aparecer
Logs del Sistema
[LEVELS] Usuario ABC ganó 18 XP (Total: 1,234)[LEVELS] Usuario ABC subió a nivel 5[LEVELS] Cooldown activo para usuario DEF📊 Base de Datos
Estructura de la Tabla
CREATE TABLE user_levels ( user_id TEXT NOT NULL, guild_id TEXT NOT NULL, xp INTEGER DEFAULT 0, level INTEGER DEFAULT 0, total_messages INTEGER DEFAULT 0, last_xp_gain DATETIME, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, guild_id));Consultas de Ejemplo
-- Top 10 usuarios por XPSELECT user_id, xp, levelFROM user_levelsWHERE guild_id = ?ORDER BY xp DESCLIMIT 10;
-- XP total del servidorSELECT SUM(xp) as total_xp, COUNT(*) as total_usersFROM user_levelsWHERE guild_id = ?;🎯 Mejores Prácticas
Para Administradores
- Configura canales excluidos para evitar spam
- Comunica el sistema a tus usuarios
- Celebra los level ups importantes
- Mantén un balance entre desafío y recompensa
Para Usuarios
- Participa activamente en conversaciones
- No hagas spam para ganar XP
- Sé paciente - el progreso es gradual
- Disfruta la competencia sana con otros usuarios
El sistema de niveles está completamente integrado con la base de datos del bot y funciona automáticamente sin necesidad de configuración adicional.