▌ Xchatlog — Overview
[ Chat Logging ]
• Sends in-game chat to Discord webhooks
• Includes: Ingame name / character / tribe / type / message / timestamp
[ Chat Types ]
• Supports: Global / Tribe / Alliance / Local
• Enable/disable each type individually
[ Webhook Routing ]
• Main webhook + per-chat webhooks
→ Route each chat type to different channels
• Fallback to main if specific webhook is empty
[ Command Logging ]
• Optional logging of chat/command usage
• Separate webhook supported
• Can be disabled to reduce spam
[ Filtering & Stability ]
• Ignores empty messages
• Duplicate protection (prevents double logs)
[ System Features ]
• Auto map name detection (no config needed)
• Custom webhook username (or uses map name)
[ Admin Tools ]
• Webhook test command
• Live config reload support
---
▌ Commands (Ingame + RCON)
---
[ Notes ]
• Use main webhook for simple setups
• Use per-chat routing for organized moderation
• Enable command logging only if needed
• Keep empty-message filtering enabled
[ Chat Logging ]
• Sends in-game chat to Discord webhooks
• Includes: Ingame name / character / tribe / type / message / timestamp
[ Chat Types ]
• Supports: Global / Tribe / Alliance / Local
• Enable/disable each type individually
[ Webhook Routing ]
• Main webhook + per-chat webhooks
→ Route each chat type to different channels
• Fallback to main if specific webhook is empty
[ Command Logging ]
• Optional logging of chat/command usage
• Separate webhook supported
• Can be disabled to reduce spam
[ Filtering & Stability ]
• Ignores empty messages
• Duplicate protection (prevents double logs)
[ System Features ]
• Auto map name detection (no config needed)
• Custom webhook username (or uses map name)
[ Admin Tools ]
• Webhook test command
• Live config reload support
---
▌ Commands (Ingame + RCON)
xchatlog.reload → reload configxchatlog.test → test webhook setup---
[ Notes ]
• Use main webhook for simple setups
• Use per-chat routing for organized moderation
• Enable command logging only if needed
• Keep empty-message filtering enabled
{
"WebhookUrl": "", // Main fallback Discord webhook used for all enabled chat types unless a specific ChatWebhooks entry is set.
"DiscordUsername": "", // Optional webhook username. Leave empty to use the map name.
"ChatTypes": { // Enable or disable each chat type.
"GlobalChat": true, // true = log global chat.
"TribeChat": true, // true = log tribe chat.
"AllianceChat": true, // true = log alliance chat.
"LocalChat": true // true = log local chat.
},
"ChatWebhooks": { // Optional per-chat webhook routing. Empty values fall back to WebhookUrl.
"GlobalChat": "", // Discord webhook only for global chat.
"TribeChat": "", // Discord webhook only for tribe chat.
"AllianceChat": "", // Discord webhook only for alliance chat.
"LocalChat": "" // Discord webhook only for local chat.
},
"CommandLogging": { // Optional logging for chat commands detected by the chat hook.
"Enabled": false, // true = log command messages too. false = ignore commands.
"WebhookUrl": "" // Optional command-only webhook. Empty falls back to WebhookUrl.
},
"IgnoreEmptyMessages": true, // true = skip empty/blank messages.
"Debug": false // true = extra logs for parsing and webhook decisions. Use only while testing.
}
"WebhookUrl": "", // Main fallback Discord webhook used for all enabled chat types unless a specific ChatWebhooks entry is set.
"DiscordUsername": "", // Optional webhook username. Leave empty to use the map name.
"ChatTypes": { // Enable or disable each chat type.
"GlobalChat": true, // true = log global chat.
"TribeChat": true, // true = log tribe chat.
"AllianceChat": true, // true = log alliance chat.
"LocalChat": true // true = log local chat.
},
"ChatWebhooks": { // Optional per-chat webhook routing. Empty values fall back to WebhookUrl.
"GlobalChat": "", // Discord webhook only for global chat.
"TribeChat": "", // Discord webhook only for tribe chat.
"AllianceChat": "", // Discord webhook only for alliance chat.
"LocalChat": "" // Discord webhook only for local chat.
},
"CommandLogging": { // Optional logging for chat commands detected by the chat hook.
"Enabled": false, // true = log command messages too. false = ignore commands.
"WebhookUrl": "" // Optional command-only webhook. Empty falls back to WebhookUrl.
},
"IgnoreEmptyMessages": true, // true = skip empty/blank messages.
"Debug": false // true = extra logs for parsing and webhook decisions. Use only while testing.
}