From 2d218785985a6dae7887667909c9a737d6bf41ef Mon Sep 17 00:00:00 2001 From: Louis Mazin Date: Tue, 3 Feb 2026 16:33:25 +0100 Subject: [PATCH] test --- consoleMonitor.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/consoleMonitor.js b/consoleMonitor.js index 03a1764..90ed819 100644 --- a/consoleMonitor.js +++ b/consoleMonitor.js @@ -23,7 +23,9 @@ const CREDENTIALS_REFRESH_INTERVAL = 55 * 60 * 1000; // Rafraîchir toutes les 5 // Suivi des joueurs connectés (fallback si la console n’affiche pas les déconnexions) const connectedPlayers = new Map(); // steamId -> { name, playerId, lastSeen } - +// Suivi des logs déjà traités pour éviter les doublons +const processedLogs = new Set(); // Garde les 500 derniers logs traités +const MAX_PROCESSED_LOGS = 500; const parseLogMessage = (log) => { // Format réel de log Palworld: // [2025-12-09 13:28:23] [CHAT] !link X2NMAY @@ -373,6 +375,11 @@ const connectWebSocket = async (pterodactylToken, serverId) => { if (message.event === 'console output') { const log = message.args[0]; + // Protection 0: Vérifier si ce log a déjà été traité (évite les doublons lors des 'send logs' répétés) + if (processedLogs.has(log)) { + return; + } + const isChatMessage = log.includes('[CHAT]'); // Extraire le timestamp du log @@ -394,6 +401,15 @@ const connectWebSocket = async (pterodactylToken, serverId) => { } } + // Marquer ce log comme traité + processedLogs.add(log); + + // Limiter la taille du Set pour éviter une fuite mémoire + if (processedLogs.size > MAX_PROCESSED_LOGS) { + const firstItem = processedLogs.values().next().value; + processedLogs.delete(firstItem); + } + // Détecter si c'est un message de chat if (isChatMessage) { console.log(`💬 [CONSOLE] Message de chat détecté: ${log.substring(0, 100)}`); @@ -602,6 +618,7 @@ const stopConsoleMonitoring = () => { isMonitoring = false; monitoringStartTimestamp = null; + processedLogs.clear(); // Nettoyer le cache des logs traités console.log('🔌 Surveillance de la console arrêtée'); };