Discord Logging
Discord Logging
BUPA Chat heeft twee onafhankelijke Discord-functies. Deze pagina behandelt uitgaande webhook-logging (chat → Discord). De inkomende kanaalbridge (Discord → chat), geconfigureerd in shared/config/discord.lua, is een aparte functie die aan het einde wordt beschreven.
Webhook-logging (chat → Discord)
Webhook-URL's bevinden zich in server/webhook.lua — een escrow_ignore-bestand dat je direct bewerkt. Er zijn drie sleutels gedefinieerd:
local webhooks = {
chatMessage = "https://.../webhook-proxy/....",
emoteCommand = "https://.../webhook-proxy/....",
pmMessage = "https://.../webhook-proxy/....",
}Vervang de tijdelijke proxy-URL's door je eigen Discord-webhook-URL's. Als de URL van een sleutel leeg is, wordt er niets voor verzonden.
Hoe berichten worden gekoppeld aan webhooks
Configuratie-items verwijzen naar een webhook via diens sleutel met webhookKey:
- Categorieën — elke categorie kan
webhookKeyinstellen (zie Chat Categories). - Privéberichten —
config.pm.webhookKey(standaard ingesteld opchatMessage). - Emotes — elk emote-commando kan
webhookKeyinstellen (/meen/dogebruikenemoteCommand).
Elk normaal chatbericht wordt altijd gelogd naar de chatMessage-webhook. Wanneer een categorie ook een eigen webhookKey definieert, worden de berichten van die categorie naar zowel de categorie-webhook als de chatMessage-webhook gelogd.
Logging wordt afgehandeld door sendDiscordLog(webhookKey, message, src), die een op zichzelf staande JSON-payload naar de gekoppelde URL stuurt — er is geen externe Discord-resource voor vereist:
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" })
endOm een nieuw logdoel toe te voegen, voeg je een sleutel toe aan de webhooks-tabel en verwijzen daarnaar vanuit een categorie, PM of emote via webhookKey.
Kanaalbridge (Discord → chat)
Daarnaast kan shared/config/discord.lua (config.discord) Discord-kanalen pollen en hun berichten doorsturen naar de game-chat. Dit is standaard uitgeschakeld.
config.discord = {
active = false,
pollInterval = 15000, -- ms tussen polls
channels = {
{
channelId = "", -- Discord-kanaal om van te lezen
-- permissions = { "admin" }, -- optioneel: wie deze berichten kan zien
-- jobs = { police = true },
-- gangs = { whiteGang = true },
tags = { { tag = "Discord", textColor = { 51, 51, 51 }, bgColor = { 88, 101, 242 } } },
color = { 200, 200, 200 },
},
-- meer kanalen: Discord Admin / PD / EMS / Gang voorbeelden inbegrepen
},
}Elk kanaalitem kan worden afgeschermd door permissions, jobs of gangs, zodat de berichten van een kanaal alleen verschijnen voor de juiste spelers. De bridge leest berichten via de Discord bot-API en vereist een bot-token + guild ID — opgegeven in config.discord of hergebruikt vanuit config.adminChatName.discord in general.lua. Berichten die door bots zijn verzonden worden genegeerd.