Docs /Discord Bot/Configuration
v1.0.0

Configuration — foltone_fivem_discord_bot

Toute la configuration se fait dans le fichier config.lua a la racine du script.

Langue

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

Les traductions sont dans le dossier locales/. Vous pouvez ajouter vos propres langues en creant un nouveau fichier (ex: locales/de.lua).

Framework

Config.Framework = "auto" -- "auto", "esx", "qbcore" ou "qbx"
ValeurFrameworkDescription
"auto"Auto-detectionDetecte ESX / QBCore / QBX automatiquement au demarrage
"esx"ESX LegacyForce l’utilisation d’ESX
"qbcore"QBCoreForce l’utilisation de QBCore
"qbx"QBXForce l’utilisation de QBX

Mode Debug

Config.Debug = false

Passez a true pour activer les logs detailles dans la console serveur. A desactiver en production.

Bot

Config.Bot = {
    token = "YOUR_BOT_TOKEN",
    guildId = "YOUR_GUILD_ID",
    port = 3847,
    authToken = "RANDOM_SECRET",
    autoStart = true,
    healthCheckInterval = 60,
}
ParametreDescription
tokenToken du bot Discord (obtenu depuis le Developer Portal)
guildIdID du serveur Discord cible
portPort de communication HTTP interne entre FiveM et le bot Node.js
authTokenCle secrete partagee entre FiveM et le bot (securite interne)
autoStarttrue pour demarrer le bot automatiquement avec la resource
healthCheckIntervalIntervalle en secondes entre chaque verification de sante du bot

Securite : Ne partagez jamais votre token ou authToken. Ces valeurs sont dans config.lua (fichier ouvert), soyez vigilants avec les acces a votre serveur.

Permissions

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 = {"*"}    -- * = acces a toutes les commandes
    }
}
ParametreDescription
Cle (ex: "moderator")Nom du groupe de permissions (libre)
roleIdsListe des IDs de roles Discord ayant ce niveau d’acces
commandsListe des commandes autorisees, ou {"*"} pour tout autoriser

Commandes disponibles par categorie

CategorieCommandes
Joueursplayerlist, playerinfo, kick, ban, unban
Moderationwarn, mute, unmute, freeze, unfreeze, slap, heal, spectate
Economiegivemoney, removemoney, setmoney, giveitem, removeitem
Vehiculesspawnvehicle, deletevehicle
Teleportationtp, revive
Emploisetjob
Serveurannounce, weather, time, whitelist
Suivisanctions, watchlist
Planificationschedule
Infoserverstatus

Logs

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,
}
ParametreDescription
enabledActiver/desactiver le systeme de logs
mode"single" = un seul canal pour tous les logs, "split" = un canal par type
channels.singleID du canal unique (utilise si mode = "single")
channels.connectionCanal pour les connexions/deconnexions
channels.deathCanal pour les morts de joueurs
channels.transactionCanal pour les transactions economiques
channels.adminCanal pour les actions administratives
channels.chatCanal pour le chat in-game
transactionThresholdMontant minimum pour logger une transaction
maskIPtrue pour masquer les IPs des joueurs dans les logs
actionButtonstrue pour afficher des boutons d’action rapide sur les embeds

Dashboard

Config.Dashboard = {
    enabled = true,
    channelId = "CHANNEL_ID",
    refreshInterval = 30,
    showPlayerList = true,
    showAdminActions = true,
    showConnections = true,
    buttons = true,
}
ParametreDescription
enabledActiver/desactiver le dashboard
channelIdID du canal ou le dashboard est affiche
refreshIntervalIntervalle en secondes entre chaque mise a jour automatique
showPlayerListAfficher la liste des joueurs dans le dashboard
showAdminActionsAfficher les dernieres actions admin
showConnectionsAfficher les dernieres connexions
buttonsAfficher les boutons d’action rapide sous le dashboard

Le dashboard affiche un embed mis a jour en temps reel avec les statistiques du serveur.

Tickets

Config.Tickets = {
    enabled = true,
    categoryId = "CHANNEL_ID",
    logsChannelId = "CHANNEL_ID",
    maxOpenPerPlayer = 2,
    autoCloseAfter = 1440,
    transcriptEnabled = true,
    command = "ticket",
    keybind = "F6",
}
ParametreDescription
enabledActiver/desactiver le systeme de tickets
categoryIdID de la categorie Discord ou les canaux de tickets sont crees
logsChannelIdID du canal de logs pour les tickets fermes
maxOpenPerPlayerNombre maximum de tickets ouverts simultanement par joueur
autoCloseAfterDuree en minutes avant fermeture automatique d’un ticket inactif (1440 = 24h)
transcriptEnabledtrue pour sauvegarder le transcript des tickets fermes
commandCommande FiveM pour ouvrir un ticket depuis le jeu
keybindTouche raccourci pour ouvrir un ticket depuis le jeu

Chat

Config.Chat = {
    enabled = true,
    channelId = "CHANNEL_ID",
    mode = "all",
    discordPrefix = "[DISCORD]",
    discordColor = {59, 130, 246},
    webhookName = "FiveM Chat",
    filterLinks = true,
    maxLength = 500,
}
ParametreDescription
enabledActiver/desactiver la synchronisation du chat
channelIdID du canal Discord lie au chat in-game
mode"all" = tous les messages, "discord_only" = Discord vers jeu uniquement, "game_only" = jeu vers Discord uniquement
discordPrefixPrefixe affiche en jeu devant les messages Discord
discordColorCouleur RGB des messages Discord en jeu
webhookNameNom affiche sur le webhook Discord
filterLinkstrue pour bloquer les liens dans le chat
maxLengthLongueur maximale des messages synchronises

Alertes

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 },
    }
}
ParametreDescription
enabledActiver/desactiver le systeme d’alertes
channelIdID du canal ou les alertes sont envoyees
mentionRoleIdID du role mentionne dans les alertes urgentes
cooldownPerPlayerSecondes entre deux alertes pour le meme joueur
cooldownGlobalSecondes entre deux alertes globales

Regles d’alerte

RegleParametreDescription
warnscount, periodAlerte si un joueur recoit X avertissements en Y minutes
transactionthresholdAlerte si une transaction depasse le seuil
playersLowthresholdAlerte si le nombre de joueurs passe sous le seuil
playersHighthresholdAlerte si le nombre de joueurs depasse le seuil
watchlistAlerte quand un joueur surveille se connecte
killscount, periodAlerte si un joueur tue X joueurs en Y minutes
crashDetectcount, periodAlerte si X joueurs quittent le serveur en Y minutes

Planificateur

Config.Scheduler = {
    enabled = true,
    tasks = {
        {
            name = "daily_restart",
            type = "restart",
            cron = "0 4 * * *",
            countdownMinutes = {30, 15, 5, 1},
        },
    }
}
ParametreDescription
enabledActiver/desactiver le planificateur
tasksListe des taches programmees
tasks[].nameNom unique de la tache
tasks[].typeType : "restart" (redemarrage serveur) ou "announce" (annonce)
tasks[].cronExpression cron pour la planification
tasks[].countdownMinutesMinutes avant le restart ou envoyer des avertissements

Panel NUI

Config.Panel = {
    enabled = true,
    command = "adminpanel",
    keybind = "F7",
    refreshInterval = 15,
    logsMaxDisplay = 100,
}
ParametreDescription
enabledActiver/desactiver le panel NUI admin in-game
commandCommande pour ouvrir le panel
keybindTouche raccourci pour ouvrir/fermer le panel
refreshIntervalIntervalle en secondes entre chaque refresh automatique des donnees
logsMaxDisplayNombre maximum de logs affiches dans l’onglet logs du panel

Base de donnees

Config.Database = {
    logRetentionDays = 30,
    purgeInterval = 1440,
}
ParametreDescription
logRetentionDaysNombre de jours de conservation des logs avant suppression automatique
purgeIntervalIntervalle en minutes entre chaque nettoyage automatique de la base

Systeme admin

Config.AdminSystem = "auto"
ValeurDescription
"auto"Detection automatique (ACE, vMenu, txAdmin, EasyAdmin)
"ace"Permissions ACE natives FiveM (IsPlayerAceAllowed)
"vmenu"Systeme de permissions vMenu
"txadmin"Systeme de permissions txAdmin
"easyadmin"Systeme de permissions EasyAdmin
"custom"Fonction personnalisee dans server/sv_editable.lua