Skip to content

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:

server/webhook.lua
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 webhookKey instellen (zie Chat Categories).
  • Privéberichtenconfig.pm.webhookKey (standaard ingesteld op chatMessage).
  • Emotes — elk emote-commando kan webhookKey instellen (/me en /do gebruiken emoteCommand).

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:

server/webhook.lua
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" })
end

Om 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.

shared/config/discord.lua
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.