🎮 Discord Bot Premium para Minecraft
Bot profesional con sincronización de rangos, moderación avanzada y comandos interactivos
Desarrollado por Revers Studio - FeliponsioDev
🚀 Instalación • ⚙️ Configuración • 📋 Comandos • 🌐 Idiomas • 🌐 Despliegue
✨ Características Principales
- Comandos Slash Modernos - Sistema modular con respuestas instantáneas
- Estado del Servidor en Tiempo Real - Monitorea si tu servidor de Minecraft está online
- Sincronización de Rangos - Conecta LuckPerms con roles de Discord
- Sistema de Sugerencias con Votación - Los usuarios pueden sugerir ideas
- Guía Interactiva - Menú desplegable con ayuda organizada por categorías
- Reglas con Menú - Alterna entre reglas de Discord y Minecraft
- Moderación Completa - Mute, ban temporal, advertencias, clear, kick
- Sistema de Advertencias - Mute automático al alcanzar el límite configurado
- Mensajes de Bienvenida - Recibe nuevos miembros automáticamente
- Rol Muted Automático - El bot crea el rol si no existe
- Sistema de Addons - 5 addons modulares con auto-descubrimiento (música, tickets, community, security, rewards)
- Multi-idioma - 8 idiomas disponibles (ES, EN, EN-GB, PT, FR, IT, DE, RU)
📋 Requisitos Previos
Antes de empezar, necesitas:
- Node.js (versión 18 o superior) - Descargar aquí
- Una cuenta en Discord
- Un servidor de Discord donde agregar el bot
¿Qué es Node.js? Es el programa que permite ejecutar el bot. Instálalo como cualquier otro programa siguiendo el asistente.
🚀 Instalación Rápida
1️⃣ Crear tu Bot en Discord
- Ve a Discord Developer Portal
- Haz clic en "New Application" y ponle un nombre
- En el menú izquierdo, entra a "Bot"
- Haz clic en "Reset Token" o "View Token" y copia el token (guárdalo, lo necesitarás)
- Activa estos Privileged Gateway Intents:
- ✅ Presence Intent (opcional)
- ✅ Server Members Intent
- ✅ Message Content Intent
- Ve a "OAuth2" > "URL Generator"
- En Scopes, marca:
botyapplications.commands - En Bot Permissions, marca Administrator (o los permisos que necesites)
- Copia la URL generada, ábrela en tu navegador e invita el bot a tu servidor
2️⃣ Descargar el Bot
- Descarga el proyecto (ZIP) y descomprímelo en una carpeta
- O si usas GitHub: clona el repositorio
3️⃣ Instalar Node.js (si no lo tienes)
- Descárgalo desde nodejs.org (versión 18 o superior)
- Ejecuta el instalador y sigue los pasos
4️⃣ Instalar las Dependencias
Abre una terminal o símbolo del sistema (CMD) en la carpeta del bot:
- Windows: Escribe
cmden la barra de búsqueda o haz clic derecho en la carpeta > "Abrir en Terminal" - Mac/Linux: Abre "Terminal"
Luego ejecuta:
npm install¿Qué hace esto? Descarga las librerías necesarias para que el bot funcione.
5️⃣ Configurar el Bot
Abre el archivo config.json con un editor de texto (Bloc de notas, Notepad++, VS Code, etc.) y edita la sección "discord":
"discord": {
"token": "PEGA_AQUI_TU_TOKEN_DEL_PASO_1",
"clientId": "ID_DE_TU_APLICACION",
"guildId": "ID_DE_TU_SERVIDOR_DISCORD"
}¿Dónde encontrar estos datos?
| Dato | Dónde encontrarlo |
|---|---|
| token | Developer Portal > Tu aplicación > Bot > Reset Token |
| clientId | Developer Portal > Tu aplicación > Application ID (copiar) |
| guildId | Discord > Clic derecho en el icono de tu servidor > "Copiar ID" |
Modo Desarrollador: Para ver "Copiar ID" en Discord, activa el Modo Desarrollador en Ajustes de Usuario > Avanzado > Modo Desarrollador.
6️⃣ Iniciar el Bot
En la misma terminal, ejecuta:
npm startSi todo está bien, verás: ✅ Bot conectado como: TuBot#1234
⚙️ Configuración
Todos los ajustes se hacen en el archivo config.json.
Información del Bot
"bot_settings": {
"nombre": "Tu Servidor Minecraft",
"logoURL": "https://i.imgur.com/tulogo.png"
}- nombre: Nombre que aparecerá en los mensajes del bot
- logoURL: URL de una imagen (por ejemplo, sube tu logo a imgur.com y usa el enlace)
Servidor de Minecraft
"minecraft": {
"serverIP": "mc.tuservidor.com",
"serverPort": 25565,
"version": "1.20.4"
}Enlaces
"links": {
"tienda": "https://tuservidor.tebex.io",
"discord": "https://discord.gg/tuinvite",
"website": "https://tuservidor.com"
}Canales de Discord
Pon los IDs de los canales donde quieres que ocurran cosas:
| Canal | Para qué sirve |
|---|---|
| bienvenida | Aquí se envían los mensajes cuando entra alguien nuevo |
| sugerencias | Aquí se publican las sugerencias de los usuarios |
Cómo obtener el ID de un canal: Clic derecho en el canal > "Copiar ID"
"channels": {
"bienvenida": "123456789012345678",
"sugerencias": "234567890123456789"
}Sistema de Advertencias (opcional)
"warnings": {
"limit": 3,
"mute_duration_minutes": 1440
}- limit: Número de advertencias antes de mutear automáticamente (por defecto 3)
- mute_duration_minutes: Minutos de mute cuando se alcanza el límite (1440 = 24 horas)
Reglas (opcional)
Puedes personalizar las reglas que muestra el comando /reglas:
"reglas": {
"discord": [
"Respeta a todos los miembros",
"No spam",
"Usa los canales correctos"
],
"minecraft": [
"No hacks",
"No grief",
"Respeta a otros jugadores"
]
}📋 Comandos Disponibles
Información (todos los usuarios)
| Comando | Descripción |
|---|---|
/help | Muestra todos los comandos del bot |
/server | Estado del servidor de Minecraft (online/offline, jugadores) |
/ip | Muestra la IP para conectarte |
/tienda | Enlace a la tienda |
/reglas | Reglas del servidor (menú Discord/Minecraft) |
/guia | Guía interactiva con categorías |
/sugerir <idea> | Envía una sugerencia (se publica en el canal configurado) |
/vincular <nick> | Vincula tu cuenta de Minecraft con Discord (requiere LuckPerms + MySQL) |
/userinfo [usuario] | Información de un usuario de Discord |
Moderación (requiere permisos)
| Comando | Descripción |
|---|---|
/mute <usuario> [horas] [razón] | Silencia a un usuario (por defecto 24h). Crea el rol Muted si no existe |
/unmute <usuario> | Quita el mute a un usuario |
/warn add <usuario> <razón> | Da una advertencia |
/warn ver <usuario> | Ver advertencias de un usuario |
/warn clear <usuario> | Borra todas las advertencias |
/clear <cantidad> | Borra mensajes (1-100) |
/kick <usuario> | Expulsa a un usuario |
/ban <usuario> [razón] [días] [horas_ban] | Banea (permanente o temporal con horas_ban) |
/unban <usuario> | Quita el baneo a un usuario |
🎮 Addons
El bot cuenta con un sistema modular de addons que se activan automáticamente al colocar su carpeta en src/commands/addons/. Cada addon añade nuevos comandos y funcionalidades sin modificar el núcleo del bot.
| Addon | Descripción | Comandos |
|---|---|---|
| 🎵 Música | Reproducción de música en canales de voz con cola y volumen | /musica play, skip, stop, queue, pause, resume, nowplaying, volume, join |
| 🎫 Tickets | Sistema de tickets con panel interactivo, categorías y transcripts | /tickets panel, config, category, role, log, categories, add, remove |
| 🎮 Community | Sorteos, roles por reacción y sistema de niveles con XP | /community giveaways, roles, level |
| 🛡️ Security | Verificación de usuarios, anti-raid y anti-spam | /security verify, antiraid, antispam |
| 🎁 Rewards | Puntos canjeables por recompensas en el servidor de Minecraft | /rewards shop, buy, daily, weekly, monthly, claim, redeem |
🔗 Sincronización de Rangos (Opcional)
Para que /vincular funcione y sincronice rangos de LuckPerms con Discord:
Requisitos
- Servidor de Minecraft con LuckPerms
- Base de datos MySQL (la misma que usa LuckPerms)
Configuración en config.json
- MySQL (usa los mismos datos que LuckPerms):
"mysql_connection": {
"host": "localhost",
"port": 3306,
"user": "tu_usuario",
"password": "tu_contraseña",
"database": "minecraft_db"
}- Mapeo de roles - Relaciona grupos de LuckPerms con roles de Discord:
"role_mapping": {
"vip": "ID_ROL_VIP_EN_DISCORD",
"admin": "ID_ROL_ADMIN_EN_DISCORD"
}Para obtener el ID de un rol: Ajustes del servidor > Roles > Clic derecho en el rol > "Copiar ID"
- Importante: El rol del bot debe estar por encima de los roles que asigna.
🌐 Despliegue Online (24/7)
Para que el bot esté encendido todo el tiempo:
Railway (Recomendado - Gratis)
- Regístrate en railway.app con GitHub
- Sube el proyecto a GitHub
- En Railway: New Project > Deploy from GitHub
- Selecciona el repositorio
- Añade las variables de entorno:
DISCORD_TOKEN,CLIENT_ID,GUILD_ID(o configuraconfig.json) - Deploy
✅ 500 horas gratis al mes
Render (Gratis)
- Ve a render.com
- New > Web Service > Conecta GitHub
- Build:
npm install, Start:npm start - Añade variables de entorno
- Deploy
⚠️ Se duerme tras 15 min de inactividad (plan gratis)
VPS
Proveedores: Contabo, DigitalOcean, Hetzner
En Ubuntu/Debian, después de instalar Node.js:
npm install
npm install -g pm2
pm2 start index.js --name discord-bot
pm2 save
pm2 startup🛠️ Solución de Problemas
❌ El bot no se conecta
- Revisa que el token en
config.jsonsea correcto - En Developer Portal > Bot, activa Server Members Intent y Message Content Intent
❌ Los comandos no aparecen al escribir /
- guildId debe ser el ID de tu servidor, no el de la aplicación
- Reinvita el bot con permisos de comandos:
https://discord.com/api/oauth2/authorize?client_id=TU_CLIENT_ID&permissions=8&scope=bot%20applications.commands - Reinicia Discord (Ctrl+R)
❌ /server muestra "offline"
- Revisa la IP y puerto en
config.json - En
server.propertiesde Minecraft:enable-query=trueyquery.port=25565
❌ /vincular no funciona
- Verifica MySQL en
config.json(mismos datos que LuckPerms) - El bot necesita el permiso "Gestionar roles"
- El rol del bot debe estar por encima de los roles que asigna
❌ Los mensajes de bienvenida no se envían
- Comprueba que
channels.bienvenidatenga un ID de canal válido - El bot debe tener permiso para enviar mensajes en ese canal
❌ Comando muestra "No disponible"
Algunos comandos (/sugerir, /vincular, /server) requieren configuración. Si no está lista, mostrarán "Comando no disponible". Revisa que los datos en config.json no tengan valores de ejemplo (como "tuservidor", "ID_DEL_CANAL", etc.).
🌐 Sistema de Idiomas
El bot incluye un sistema de traducción multi-idioma por usuario. Cada persona puede elegir su propio idioma sin afectar al resto del servidor.
Idiomas Disponibles
| Código | Idioma | Archivo |
|---|---|---|
ES | Español | languages/ES.yml |
EN | Inglés (EE.UU.) | languages/EN.yml |
EN_GB | Inglés (Reino Unido) | languages/EN_GB.yml |
PT | Portugués | languages/PT.yml |
FR | Francés | languages/FR.yml |
IT | Italiano | languages/IT.yml |
DE | Alemán | languages/DE.yml |
RU | Ruso | languages/RU.yml |
Idioma por Usuario
Cada usuario puede configurar su propio idioma con el comando /language set. Esta preferencia se guarda automáticamente en data/user_settings.json y se aplica a todos los comandos que use ese usuario.
- Si un usuario no tiene idioma configurado, el bot usará el idioma por defecto definido en
config.json - Si un usuario cambia de idioma, los cambios se aplican inmediatamente sin reiniciar el bot
- La configuración es por usuario y persistente entre sesiones
Idioma por Defecto del Servidor
Abre el archivo config.json y busca la sección bot_settings. Configura la propiedad language con el código del idioma que se usará como fallback para usuarios sin preferencia:
"bot_settings": {
"nombre": "Tu Servidor Minecraft",
"logoURL": "https://i.imgur.com/tulogo.png",
"language": "ES"
}Agregar un Nuevo Idioma
- Crea un nuevo archivo
.ymlen la carpetalanguages/siguiendo la nomenclaturaCODIGO.yml(ejemplo:JA.ymlpara japonés). - Copia la estructura de un archivo existente (como
ES.yml) como base. - Traduce solo los valores (texto entre comillas), nunca modifiques las claves (las palabras antes de los dos puntos).
- Reinicia el bot y el nuevo idioma estará disponible automáticamente.
Comandos de Idioma
| Comando | Descripción |
|---|---|
/language set <idioma> | Cambiar tu idioma personal |
/language list | Ver todos los idiomas disponibles |
/language current | Ver tu idioma actual |
Cómo funciona internamente
El bot utiliza la clase Translator que al iniciar carga todos los archivos .yml de languages/ y los almacena en memoria. Cada traducción se accede mediante notación de puntos:
musica:
no_voice_channel: "❌ Debes estar en un canal de voz"translator.translate("musica.no_voice_channel")
// → "❌ Debes estar en un canal de voz"El sistema soporta variables dinámicas con sintaxis {variableName}, que se reemplazan en tiempo de ejecución:
musica:
added: "✅ Añadida **{title}** a la cola"interaction.t("musica.added", { title: "Mi Canción" })
// → "✅ Añadida **Mi Canción** a la cola"En Addons
Los addons pueden agregar sus propias traducciones añadiendo un bloque con su nombre como clave raíz al final de los archivos ES.yml y EN.yml. Las traducciones se cargan automáticamente junto con las del núcleo — no requieren configuración adicional. Consulta ADDONS.md para más detalles.
📂 Estructura del Proyecto
Bot-dc-premium/
├── src/
│ ├── commands/
│ │ ├── info/ (help, ip, reglas, server, sugerir, tienda, userinfo, vincular, guia, language)
│ │ ├── moderation/ (ban, clear, kick, mute, unban, unmute, warn)
│ │ └── addons/ (addons auto-descubribles: musica, tickets, community, security, rewards)
│ ├── events/ (bienvenida, comandos, canal creado, addonLoader)
│ └── utils/ (config, base de datos, mutes, advertencias, translator, userSettings)
├── languages/ (archivos de traducción: ES.yml, EN.yml, PT.yml, FR.yml, IT.yml, DE.yml, RU.yml, EN_GB.yml)
├── data/ (warnings.json, mutes.json, user_settings.json - se crean automáticamente)
├── config.json ← Aquí configuras todo
├── index.js (archivo principal)
└── package.json (dependencias)📜 Licencia
Licencia Revers Studio - Uso Comercial Restringido
✅ Permitido
- Usar el bot en tu servidor de Discord
- Modificar el código para uso personal
- Estudiar el código
❌ NO Permitido
- Revender el bot o versiones modificadas
- Distribuir el código como propio
- Uso comercial sin autorización
Contacto: soporte@reversstudio.com
💬 Soporte
Desarrollado con 💙 por Revers Studio
⭐ Si te gusta el proyecto, déjanos una valoración