Saltearse al contenido

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 nivel
xpRequired = level * level * 100
// Ejemplos:
// Nivel 1: 100 XP
// Nivel 2: 400 XP
// Nivel 3: 900 XP
// Nivel 10: 10,000 XP

Cálculo de Progreso

// Progreso hacia el siguiente nivel
progress = currentXP / xpForNextLevel * 100
// XP total desde el nivel anterior
levelXP = 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 XP

Comando /leaderboard

🏆 Ranking del Servidor - Página 1
🥇 @Usuario1 Nivel 25 │ 62,500 XP
🥈 @Usuario2 Nivel 23 │ 52,900 XP
🥉 @Usuario3 Nivel 21 │ 44,100 XP
4️⃣ @Usuario4 Nivel 19 │ 36,100 XP
5️⃣ @Usuario5 Nivel 18 │ 32,400 XP
6️⃣ @Usuario6 Nivel 17 │ 28,900 XP
7️⃣ @Usuario7 Nivel 16 │ 25,600 XP
8️⃣ @Usuario8 Nivel 15 │ 22,500 XP
9️⃣ @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áticos
const 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 cantidad

Configuración del Sistema (Próximamente)

/level-config

Panel 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 XP
SELECT user_id, xp, level
FROM user_levels
WHERE guild_id = ?
ORDER BY xp DESC
LIMIT 10;
-- XP total del servidor
SELECT SUM(xp) as total_xp,
COUNT(*) as total_users
FROM user_levels
WHERE guild_id = ?;

🎯 Mejores Prácticas

Para Administradores

  1. Configura canales excluidos para evitar spam
  2. Comunica el sistema a tus usuarios
  3. Celebra los level ups importantes
  4. Mantén un balance entre desafío y recompensa

Para Usuarios

  1. Participa activamente en conversaciones
  2. No hagas spam para ganar XP
  3. Sé paciente - el progreso es gradual
  4. 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.