QueueBETA (FiveM + Discord) Desarrollado por DotComm Studios
Guía de Instalación
Última actualización Hace alrededor de 7 horas
REQUISITOS PREVIOS
Python 3.10 o superior.
Servidor FiveM (FXServer).
Bot de Discord creado en Discord Developer Portal.
En Discord Developer Portal > Bot, activar Server Members Intent y Message Content Intent.
PASO 1: CONFIGURAR EL BOT DE DISCORD
Copia el Token del bot y la ID del servidor de Discord (Guild ID).
Invita al bot a tu servidor usando el URL Generator en OAuth2 marcando las casillas bot y applications.commands.
PASO 2: CONFIGURAR VARIABLES DE ENTORNO (.ENV)
Copia el archivo .env.example y renómbralo a .env en la raíz del proyecto. Edita los valores:
env
DISCORD_TOKEN=TU_DISCORD_TOKEN
GUILD_ID=TU_GUILD_ID
HTTP_SECRET=TU_CLAVE_SECRETA_HTTP
HTTP_PORT=5000Nota: HTTP_SECRET deb ser exactamente el mismo texto en el archivo .env y en el config.lua de FiveM
PASO 3: CONFIGURAR ROLES Y PRIORIDADES (CONFIG.JSON)
Abre config.json y pon las IDs reales de los roles de tu servidor de Discord:
json
{
"max_server_slots": 64,
"grace_period_seconds": 300,
"panel_update_interval": 15,
"http_host": "0.0.0.0",
"http_port": 5000,
"priorities": {
"required_base_role_id": "ID_ROL_USUARIO_REGISTRADO",
"staff_roles": [
{
"role_id": "ID_ROL_STAFF",
"priority": 1000,
"name": "👑 Staff / Admin (Instalote)",
"instant_join": true
}
],
"vip_roles": [
{
"role_id": "ID_ROL_VIP",
"priority": 500,
"name": "💲 Donador",
"instant_join": false
}
],
"normal_roles": [
{
"role_id": "ID_ROL_USUARIO_REGISTRADO",
"priority": 1,
"name": "👤 Usuario",
"instant_join": false
}
],
"default_priority": 1
},
"messages": {
"queue_connecting": "⏳ Conectando a la cola de espera de QueueBETA...",
"queue_waiting": "🎮 Estás en la cola de espera de QueueBETA.\n📌 Posición: #{position} de {total}\n⭐ Prioridad: {priority_name}\n⏳ Jugadores en FiveM: {online}/{max}",
"queue_ready": "✅ ¡Es tu turno! Entrando al servidor...",
"grace_restored": "⚡ ¡Reconocido! Se ha restaurado tu posición prioritaria por reconexión rápida.",
"discord_not_found": "❌ No se ha encontrado tu cuenta de Discord en el servidor oficial de QueueBETA.",
"no_role_found": "❌ ACCESO DENEGADO: Debes tener asignado el rol obligatorio de Usuario Registrado en Discord para poder entrar.",
"banned_or_no_discord": "❌ Debes tener el cliente de Discord abierto y pertenecer al servidor oficial."
}
}PASO 4: DESPLEGAR EL BOT DE PYTHON
Opcion A - VPS Linux (Automatico): Ejecuta en la consola de tu VPS: sudo bash deploy.sh
Comandos para controlar el bot en VPS:
bash
systemctl start queue_beta
systemctl status queue_beta
systemctl restart queue_betaOpcion B - Instalación Manual o Pterodactyl:
Instala dependencias: pip install -r requirements.txt
Inicia el bot: python bot.py
PASO 5: INSTALAR EL RECURSO EN FIVEM
Copia la carpeta fivem_resource/queue_beta a la carpeta resources/queue_beta de tu servidor FiveM.
Abre resources/queue_beta/config.lua y edita:
lua
Config = {} Config.BotApiUrl = "http://IP_DE_TU_BOT:5000" Config.HttpSecret = "TU_CLAVE_SECRETA_HTTP" Config.CheckInterval = 3000lua
Config.NoDiscordMessage = "[QueueBETA] No se ha detectado tu cuenta de Discord. Abre Discord e inténtalo de nuevo." Config.ApiOfflineMessage = "[QueueBETA] No se puede conectar con el bot de la cola de espera."En tu server.cfg añade:
cfg
ensure queue_betaPASO 6: CREAR EL PANEL EN DISCORD
En el canal de Discord donde quieras poner el panel, ejecuta como Administrador:
Comandos Disponibles
/queue panel: Despliega el panel interactivo en el canal actual.
/queue status: Muestra el estado del servidor y la cola.
/queue config: Muestra la configuración de roles y prioridades.
/queue remove <discord_id>: Expulsa a un jugador de la cola.
/queue clear: Vacía la cola por completo.PROBLEMAS FRECUENTES
Error 403 al sincronizar comandos: Invita al bot marcando bot y applications.commands y comprueba GUILD_ID en .env.
Error de conexión HTTP desde FiveM: Abre el puerto 5000/tcp en tu VPS (sudo ufw allow 5000/tcp) y comprueba que Config.BotApiUrl tenga la IP pública.
Clave secreta incorrecta: Asegúrate de que HTTP_SECRET en .env sea idéntico a Config.HttpSecret en config.lua.