Docs /Discord Bot/Configuración
v1.0.0

Configuración — foltone_fivem_discord_bot

Toda la configuración se realiza en el archivo config.lua en la raíz del script.

Idioma

Config.Locale = "en" -- "fr" o "en"

Las traducciones están en la carpeta locales/. Puedes añadir tus propios idiomas creando un nuevo archivo (por ejemplo, locales/de.lua).

Framework

Config.Framework = "auto" -- "auto", "esx", "qbcore" o "qbx"
ValorFrameworkDescripción
"auto"Detección automáticaDetecta automáticamente ESX / QBCore / QBX al iniciar
"esx"ESX LegacyFuerza el uso de ESX
"qbcore"QBCoreFuerza el uso de QBCore
"qbx"QBXFuerza el uso de QBX

Modo Debug

Config.Debug = false

Establece true para habilitar registros detallados en la consola del servidor. Desactívalo en producción.

Bot

Config.Bot = {
    token = "YOUR_BOT_TOKEN",
    guildId = "YOUR_GUILD_ID",
    port = 3847,
    authToken = "RANDOM_SECRET",
    autoStart = true,
    healthCheckInterval = 60,
}
ParámetroDescripción
tokenToken del bot de Discord (obtenido del Portal de Desarrolladores)
guildIdID del servidor de Discord objetivo
portPuerto de comunicación HTTP interna entre FiveM y el bot de Node.js
authTokenClave secreta compartida entre FiveM y el bot (seguridad interna)
autoStarttrue para iniciar el bot automáticamente con el recurso
healthCheckIntervalSegundos entre cada verificación de estado del bot

Seguridad: Nunca compartas tu token o authToken. Estos valores están en config.lua (archivo abierto), ten cuidado con el acceso al servidor.

Permisos

Config.Permissions = {
    ["moderator"] = {
        roleIds = {"ROLE_ID"},
        commands = {
            "kick", "warn", "mute", "unmute", "freeze", "unfreeze",
            "playerlist", "playerinfo", "slap", "heal", "spectate"
        }
    },
    ["admin"] = {
        roleIds = {"ROLE_ID"},
        commands = {
            "ban", "unban", "tp", "revive", "setjob",
            "givemoney", "removemoney", "setmoney",
            "giveitem", "removeitem",
            "spawnvehicle", "deletevehicle",
            "sanctions", "announce", "weather", "time",
            "whitelist", "watchlist"
        }
    },
    ["founder"] = {
        roleIds = {"ROLE_ID"},
        commands = {"*"}    -- * = acceso a todos los comandos
    }
}
ParámetroDescripción
Clave (ej., "moderator")Nombre del grupo de permisos (personalizado)
roleIdsLista de IDs de roles de Discord con este nivel de acceso
commandsLista de comandos permitidos, o {"*"} para permitir todos

Comandos disponibles por categoría

CategoríaComandos
Jugadoresplayerlist, playerinfo, kick, ban, unban
Moderaciónwarn, mute, unmute, freeze, unfreeze, slap, heal, spectate
Economíagivemoney, removemoney, setmoney, giveitem, removeitem
Vehículosspawnvehicle, deletevehicle
Teletransportetp, revive
Trabajosetjob
Servidorannounce, weather, time, whitelist
Seguimientosanctions, watchlist
Programaciónschedule
Informaciónserverstatus

Registros

Config.Logs = {
    enabled = true,
    mode = "split",
    channels = {
        single = "CHANNEL_ID",
        connection = "CHANNEL_ID",
        death = "CHANNEL_ID",
        transaction = "CHANNEL_ID",
        admin = "CHANNEL_ID",
        chat = "CHANNEL_ID",
    },
    transactionThreshold = 50000,
    maskIP = true,
    actionButtons = true,
}
ParámetroDescripción
enabledHabilitar/deshabilitar el sistema de registros
mode"single" = un canal para todos los registros, "split" = un canal por tipo
channels.singleID del canal único (usado si mode = "single")
channels.connectionCanal para conexiones/desconexiones de jugadores
channels.deathCanal para muertes de jugadores
channels.transactionCanal para transacciones económicas
channels.adminCanal para acciones de administradores
channels.chatCanal para el chat del juego
transactionThresholdCantidad mínima para registrar una transacción
maskIPtrue para ocultar las IPs de los jugadores en los registros
actionButtonstrue para mostrar botones de acción rápida en los embeds

Dashboard

Config.Dashboard = {
    enabled = true,
    channelId = "CHANNEL_ID",
    refreshInterval = 30,
    showPlayerList = true,
    showAdminActions = true,
    showConnections = true,
    buttons = true,
}
ParámetroDescripción
enabledHabilitar/deshabilitar el dashboard
channelIdID del canal donde se muestra el dashboard
refreshIntervalSegundos entre cada actualización automática
showPlayerListMostrar la lista de jugadores en el dashboard
showAdminActionsMostrar las acciones de administradores recientes
showConnectionsMostrar las conexiones recientes
buttonsMostrar botones de acción rápida debajo del dashboard

El dashboard muestra un embed actualizado en tiempo real con estadísticas del servidor.

Tickets

Config.Tickets = {
    enabled = true,
    categoryId = "CHANNEL_ID",
    logsChannelId = "CHANNEL_ID",
    maxOpenPerPlayer = 2,
    autoCloseAfter = 1440,
    transcriptEnabled = true,
    command = "ticket",
    keybind = "F6",
}
ParámetroDescripción
enabledHabilitar/deshabilitar el sistema de tickets
categoryIdID de la categoría de Discord donde se crean los canales de tickets
logsChannelIdID del canal de registros para tickets cerrados
maxOpenPerPlayerMáximo de tickets abiertos por jugador simultáneamente
autoCloseAfterMinutos antes de cerrar automáticamente un ticket inactivo (1440 = 24h)
transcriptEnabledtrue para guardar transcripciones de tickets cerrados
commandComando de FiveM para abrir un ticket desde el juego
keybindTecla de acceso rápido para abrir un ticket desde el juego

Chat

Config.Chat = {
    enabled = true,
    channelId = "CHANNEL_ID",
    mode = "all",
    discordPrefix = "[DISCORD]",
    discordColor = {59, 130, 246},
    webhookName = "FiveM Chat",
    filterLinks = true,
    maxLength = 500,
}
ParámetroDescripción
enabledHabilitar/deshabilitar la sincronización del chat
channelIdID del canal de Discord vinculado al chat del juego
mode"all" = todos los mensajes, "discord_only" = solo de Discord al juego, "game_only" = solo del juego a Discord
discordPrefixPrefijo mostrado en el juego antes de los mensajes de Discord
discordColorColor RGB para los mensajes de Discord en el juego
webhookNameNombre mostrado en el webhook de Discord
filterLinkstrue para bloquear enlaces en el chat
maxLengthLongitud máxima de los mensajes sincronizados

Alertas

Config.Alerts = {
    enabled = true,
    channelId = "CHANNEL_ID",
    mentionRoleId = "ROLE_ID",
    cooldownPerPlayer = 30,
    cooldownGlobal = 10,
    rules = {
        warns = { enabled = true, count = 3, period = 1440 },
        transaction = { enabled = true, threshold = 500000 },
        playersLow = { enabled = true, threshold = 5 },
        playersHigh = { enabled = true, threshold = 60 },
        watchlist = { enabled = true },
        kills = { enabled = true, count = 5, period = 10 },
        crashDetect = { enabled = true, count = 10, period = 5 },
    }
}
ParámetroDescripción
enabledHabilitar/deshabilitar el sistema de alertas
channelIdID del canal donde se envían las alertas
mentionRoleIdID del rol mencionado en alertas urgentes
cooldownPerPlayerSegundos entre dos alertas para el mismo jugador
cooldownGlobalSegundos entre dos alertas globales

Reglas de alertas

ReglaParámetrosDescripción
warnscount, periodAlerta si un jugador recibe X advertencias en Y minutos
transactionthresholdAlerta si una transacción supera el umbral
playersLowthresholdAlerta si el número de jugadores cae por debajo del umbral
playersHighthresholdAlerta si el número de jugadores supera el umbral
watchlistAlerta cuando un jugador vigilado se conecta
killscount, periodAlerta si un jugador mata a X jugadores en Y minutos
crashDetectcount, periodAlerta si X jugadores se desconectan en Y minutos

Programador de tareas

Config.Scheduler = {
    enabled = true,
    tasks = {
        {
            name = "daily_restart",
            type = "restart",
            cron = "0 4 * * *",
            countdownMinutes = {30, 15, 5, 1},
        },
    }
}
ParámetroDescripción
enabledHabilitar/deshabilitar el programador
tasksLista de tareas programadas
tasks[].nameNombre único de la tarea
tasks[].typeTipo: "restart" (reinicio del servidor) o "announce" (anuncio)
tasks[].cronExpresión cron para la programación
tasks[].countdownMinutesMinutos antes del reinicio para enviar avisos

Panel NUI

Config.Panel = {
    enabled = true,
    command = "adminpanel",
    keybind = "F7",
    refreshInterval = 15,
    logsMaxDisplay = 100,
}
ParámetroDescripción
enabledHabilitar/deshabilitar el panel NUI de administración en el juego
commandComando para abrir el panel
keybindTecla de acceso rápido para abrir/cerrar el panel
refreshIntervalSegundos entre cada actualización automática de datos
logsMaxDisplayNúmero máximo de registros mostrados en la pestaña de registros del panel

Base de datos

Config.Database = {
    logRetentionDays = 30,
    purgeInterval = 1440,
}
ParámetroDescripción
logRetentionDaysNúmero de días de retención de registros antes de la eliminación automática
purgeIntervalMinutos entre cada limpieza automática de la base de datos

Sistema de administración

Config.AdminSystem = "auto"
ValorDescripción
"auto"Detección automática (ACE, vMenu, txAdmin, EasyAdmin)
"ace"Permisos nativos de FiveM ACE (IsPlayerAceAllowed)
"vmenu"Sistema de permisos de vMenu
"txadmin"Sistema de permisos de txAdmin
"easyadmin"Sistema de permisos de EasyAdmin
"custom"Función personalizada en server/sv_editable.lua