Retour à la documentation

Bot Discord

Le bot Flitt connecte vos serveurs de jeu à votre Discord : statut en direct, relais du chat, notifications joueurs, vérification des comptes, synchronisation des rôles, RCON et modération. Toutes les fonctionnalités sont gratuites, sur toutes les offres.

🤖

1. Installer le bot

Trois étapes depuis le panel, aucun fichier à éditer.

  1. 1.Ouvrez Tableau de bord → Bot Discord et cliquez sur « Inviter le bot ». Vous devez être propriétaire ou administrateur du Discord.
  2. 2.De retour sur Flitt, le Discord apparaît dans la liste : ouvrez-le et liez un ou plusieurs de vos serveurs depuis l'onglet Serveurs.
  3. 3.Activez ce que vous voulez par serveur : embed de statut, relais du chat, notifications, relais des logs, RCON, synchro des rôles. L'addon prend le changement en compte sous 10 minutes (ou redémarrez-le).
⌨️

2. Commandes

Joueurs et admins disposent de commandes slash dans Discord :

/link

Obtenir un code pour lier son compte de jeu

/verify

Vérifier le lien et recevoir le rôle vérifié

/profile

Comptes liés, temps de jeu et sessions

/status /players /servers

Statut en direct et joueurs en ligne

/leaderboard /vote /links

Classement, votes, liens rapides

/rcon

Exécuter une commande console (rôle configuré dans le panel)

/warn /kick /ban /timeout /clear /cases

Modération, répercutée en jeu pour les joueurs liés

🔗

3. Liaison des comptes

La liaison se fait par code : elle fonctionne à l'identique sur Garry's Mod, FiveM et Minecraft, sans connexion Steam :

  1. 1.Le joueur lance /link dans Discord et reçoit un code à 6 caractères (valable 10 minutes).
  2. 2.En jeu, il tape : !flitt CODE (chat) sur Garry's Mod et FiveM, /flitt CODE sur FiveM, /flitt link CODE sur Minecraft.
  3. 3.Le lien est stocké une fois par jeu ; la vérification, la synchro des rôles et la modération miroir s'en servent.
🔧

4. Synchro des rôles · Garry's Mod

ULX, SAM et les usergroups natifs sont détectés automatiquement. Si vous utilisez un autre système d'administration, répondez à ces hooks depuis n'importe quel fichier serveur (retournez true dans les setters pour indiquer à Flitt que c'est géré) :

-- Lire le rang du joueur (string)
hook.Add("FLT_DiscordGetGroup", "MyAdmin", function(ply)
    return MyAdmin.GetRank(ply)
end)

-- Appliquer un changement de rang venant de Discord
hook.Add("FLT_DiscordSetGroup", "MyAdmin", function(steamId64, group, add, ply)
    MyAdmin.SetRank(steamId64, add and group or "user")
    return true
end)

-- Optionnel : bans émis depuis Discord
hook.Add("FLT_DiscordBan", "MyAdmin", function(steamId64, minutes, reason, ply)
    MyAdmin.Ban(steamId64, minutes, reason)
    return true
end)

Dans le panel, associez chaque rôle Discord au nom de groupe utilisé par votre système (ex. superadmin, moderator, vip).

🚓

5. Synchro des rôles · FiveM

Par défaut Flitt lit les groupes ace (group.admin, group.mod…) et les écrit avec add_principal / remove_principal. Définissez la liste avec set flitt_discord_groups "owner,admin,mod,vip" dans server.cfg. Pour les jobs ESX/QBCore, vRP ou un menu admin custom, gérez ces events depuis n'importe quelle ressource :

-- Lire le rang du joueur (appelez reply avec une string)
AddEventHandler("flitt:discord:getGroup", function(source, identifier, reply)
    reply(MyAdmin.GetRank(identifier))
end)

-- Appliquer un changement de rang venant de Discord (done(true) quand c'est géré)
AddEventHandler("flitt:discord:setGroup", function(identifier, group, add, done)
    MyAdmin.SetRank(identifier, add and group or "user")
    done(true)
end)

-- Optionnel : bans émis depuis Discord
AddEventHandler("flitt:discord:ban", function(identifier, seconds, reason, done)
    MyAdmin.Ban(identifier, seconds, reason)
    done(true)
end)

identifier est la license du joueur (ou l'identifiant steam/discord si la license manque), la même valeur que Flitt affiche dans la liste des joueurs.

⛏️

6. Synchro des rôles · Minecraft

LuckPerms est détecté automatiquement (lecture du groupe principal, écriture par parent add/remove). Sans LuckPerms, un joueur appartient au groupe X s'il possède la permission flitt.group.X, et les changements passent par des commandes console définies dans plugins/Flitt/config.properties :

# Groupes recherchés par Flitt, le premier trouvé gagne
discord.groups=owner,admin,mod,helper,vip

# Commandes exécutées quand Discord ajoute / retire un groupe
# Variables : {name} {uuid} {group}
discord.group-add-command=pex user {name} group add {group}
discord.group-remove-command=pex user {name} group remove {group}

# Optionnel : commande pour les bans émis depuis Discord
# Variables : {name} {uuid} {reason} {minutes}
discord.ban-command=tempban {name} {minutes}m {reason}

Les développeurs de plugins peuvent aussi enregistrer leur propre provider : plugin.getDiscordManager().setGroupProvider(new MyProvider()) — implémentez fr.flitt.common.discord.GroupProvider (getGroup / setGroup).

💡

Les boucles sont gérées pour vous

Un changement poussé depuis Discord n'est pas renvoyé comme événement jeu (et inversement), la synchro bidirectionnelle ne fait donc jamais de ping-pong. Chaque /rcon et chaque action de modération est journalisé dans les cas du guild et dans le journal d'audit du serveur.