Skip to content

Bot TCP

Zyphro3D edited this page Jun 25, 2026 · 1 revision

Bot TCP in-game

Le bot TCP est un client qui se connecte directement au serveur ACE EVO via le protocole TCP interne. Il alimente le timing en direct, envoie des messages de bienvenue et détecte les meilleurs tours.


Prérequis

Le bot nécessite un compte Steam dédié (distinct du compte hôte). Ce compte doit :

  • Posséder Assetto Corsa EVO
  • Ne pas être connecté à ACE EVO en tant que joueur au même moment

Configuration

Dans Paramètres → onglet Bot TCP (ou directement dans .env) :

Variable Description Exemple
ACE_BOT_STEAM_ID Steam ID 64-bit du compte bot 76561198012345678
ACE_BOT_CAR_MODEL Voiture utilisée pour la connexion preset_190_evo_ii
ACE_BOT_IS_ADMIN Envoyer \admin <password> à la connexion true
ACE_BOT_MSG_WELCOME Message de bienvenue Bienvenue {name} !
ACE_BOT_MSG_DISCORD Message Discord Rejoins notre Discord : {discord_url}
ACE_BOT_MSG_SITE Message site Suis le classement : {site_url}

Variables dans les messages

Variable Valeur
{name} Nom in-game du pilote qui vient de rejoindre
{discord_url} Valeur de DISCORD_INVITE_URL
{site_url} Valeur de PANEL_URL

Démarrage automatique

Le bot démarre automatiquement :

  • Au démarrage du panel — pour chaque serveur activé en base de données
  • À la création d'un nouveau serveur — le bot est démarré immédiatement

En mode multi-serveur, chaque serveur a son propre bot indépendant.


Fonctionnalités

Messages de bienvenue

À chaque connexion d'un pilote, le bot envoie les messages configurés dans l'ordre :

  1. Message de bienvenue (si ACE_BOT_MSG_WELCOME défini)
  2. Message Discord (si ACE_BOT_MSG_DISCORD et DISCORD_INVITE_URL définis)
  3. Message site (si ACE_BOT_MSG_SITE et PANEL_URL définis)

Timing en direct

Le bot reçoit en continu du serveur ACE EVO :

  • BroadcastStateMessage — classement complet (positions, temps, secteurs)
  • SplitFromRemoteMessage — temps de secteurs individuels

Ces données alimentent l'API /api/timing consultée par la page de timing public.

Détection des tours invalides

Le bot analyse les logs ACE EVO en temps réel. Quand le pattern suivant apparaît :

[gameplay] [error] Couldn't create lap from opensplits (carId <id>)

Le pilote concerné est marqué comme ayant un tour invalide dans le classement. Sa ligne s'affiche en rouge avec une icône ⚠ sur la page de timing.

Le marquage se réinitialise automatiquement au passage du premier secteur du tour suivant.

Détection des meilleurs tours

Le bot détecte les meilleurs tours en session et envoie une notification Discord si DISCORD_RACE_WEBHOOK_URL est configuré.

Commandes admin

Depuis le timing admin, l'admin peut :

  • Élever le bot en admin — envoie \admin <password> au serveur
  • Envoyer un message dans le chat in-game
  • Kick un pilote par nom

Connexion Docker en mode split

En mode docker_split, les containers ace-panel et ace-server sont séparés. Le bot se connecte via :

  • Hôte : nom du container Docker (ex: ace-server pour le serveur principal, ace-server-<nom> pour les serveurs additionnels)
  • Port : 9700 (port interne du container — pas le port host-mappé)

Cette logique est gérée automatiquement par start_for_server() — aucune configuration manuelle nécessaire.


Statut du bot

Le statut de connexion du bot est visible sur la page de timing :

  • Connecté — le bot reçoit les données en temps réel
  • Déconnecté — le timing affiche les dernières données connues

En cas de déconnexion, le bot tente de se reconnecter automatiquement.

Clone this wiki locally