Discord Logging
Discord Logging
BUPA Chat hat zwei unabhängige Discord-Funktionen. Diese Seite behandelt das ausgehende Webhook-Logging (Chat → Discord). Die einkommende Kanalbrücke (Discord → Chat), die in shared/config/discord.lua konfiguriert wird, ist eine separate Funktion, die am Ende beschrieben wird.
Webhook-Logging (chat → Discord)
Webhook-URLs befinden sich in server/webhook.lua – einer escrow_ignore-Datei, die du direkt bearbeitest. Es sind drei Schlüssel definiert:
local webhooks = {
chatMessage = "https://.../webhook-proxy/....",
emoteCommand = "https://.../webhook-proxy/....",
pmMessage = "https://.../webhook-proxy/....",
}Ersetze die Platzhalter-Proxy-URLs durch deine eigenen Discord-Webhook-URLs. Wenn die URL eines Schlüssels leer ist, wird dafür nichts gesendet.
Wie Nachrichten auf Webhooks abgebildet werden
Konfigurationseinträge verweisen über webhookKey anhand ihres Schlüssels auf einen Webhook:
- Kategorien – jede Kategorie kann einen
webhookKeyfestlegen (siehe Chat Categories). - Private Nachrichten –
config.pm.webhookKey(standardmäßigchatMessage). - Emotes – jeder Emote-Befehl kann einen
webhookKeyfestlegen (/meund/doverwendenemoteCommand).
Jede normale Chatnachricht wird immer im chatMessage-Webhook protokolliert. Wenn eine Kategorie zusätzlich ihren eigenen webhookKey definiert, werden die Nachrichten dieser Kategorie sowohl an den Kategorie-Webhook als auch an den chatMessage-Webhook gesendet.
Das Logging wird von sendDiscordLog(webhookKey, message, src) verarbeitet, das eine eigenständige JSON-Nutzlast an die zugeordnete URL sendet – es wird keine externe Discord-Ressource benötigt:
function sendDiscordLog(webhook, msg, src)
local url = webhooks[webhook]
if not url or url == "" then return end
local payload = type(msg) == "table" and { embeds = { msg } } or { content = tostring(msg) }
PerformHttpRequest(url, function() end, "POST", json.encode(payload),
{ ["Content-Type"] = "application/json" })
endUm ein neues Protokollierungsziel hinzuzufügen, füge der webhooks-Tabelle einen Schlüssel hinzu und verweise von einer Kategorie, PM oder einem Emote über webhookKey darauf.
Kanalbrücke (Discord → chat)
Unabhängig davon kann shared/config/discord.lua (config.discord) Discord-Kanäle abfragen und deren Nachrichten in den In-Game-Chat weiterleiten. Sie ist standardmäßig deaktiviert.
config.discord = {
active = false,
pollInterval = 15000, -- ms zwischen Abfragen
channels = {
{
channelId = "", -- Zu lesender Discord-Kanal
-- permissions = { "admin" }, -- optional: wer diese Nachrichten sehen kann
-- jobs = { police = true },
-- gangs = { whiteGang = true },
tags = { { tag = "Discord", textColor = { 51, 51, 51 }, bgColor = { 88, 101, 242 } } },
color = { 200, 200, 200 },
},
-- weitere Kanäle: Beispiele für Discord Admin / PD / EMS / Gang enthalten
},
}Jeder Kanaleintrag kann durch permissions, jobs oder gangs eingeschränkt werden, sodass die Nachrichten eines Kanals nur für die entsprechenden Spieler angezeigt werden. Die Brücke liest Nachrichten über die Discord-Bot-API und erfordert ein Bot-Token + Guild-ID – diese werden entweder in config.discord angegeben oder aus config.adminChatName.discord in general.lua übernommen. Von Bots verfasste Nachrichten werden ignoriert.