Skip to content

Discord-loggning

Discord-loggning

BUPA Chat har två oberoende Discord-funktioner. Den här sidan täcker utgående webhook-loggning (chatt → Discord). Den inkommande kanalbryggan (Discord → chatt), som konfigureras i shared/config/discord.lua, är en separat funktion som beskrivs i slutet.

Webhook-loggning (chat → Discord)

Webhook-URL:er finns i server/webhook.lua — en escrow_ignore-fil som du redigerar direkt. Tre nycklar är definierade:

server/webhook.lua
local webhooks = {
    chatMessage  = "https://.../webhook-proxy/....",
    emoteCommand = "https://.../webhook-proxy/....",
    pmMessage    = "https://.../webhook-proxy/....",
}

Ersätt platshållarens proxy-URL:er med dina egna Discord-webhook-URL:er. Om en nyckels URL är tom skickas inget för den.

Hur meddelanden mappas till webhooks

Konfigurationsposter refererar till en webhook med dess nyckel via webhookKey:

  • Kategorier — varje kategori kan ange webhookKey (se Chat Categories).
  • Privata meddelandenconfig.pm.webhookKey (standard är chatMessage).
  • Emotes — varje emote-kommando kan ange webhookKey (/me och /do använder emoteCommand).

Varje normalt chattmeddelande loggas alltid till chatMessage-webhooken. När en kategori också definierar sin egen webhookKey, loggas den kategorins meddelanden till både kategori-webhooken och chatMessage-webhooken.

Loggning hanteras av sendDiscordLog(webhookKey, message, src), som skickar en fristående JSON-nyttolast till den mappade URL:en — ingen extern Discord-resurs krävs:

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

För att lägga till ett nytt loggmål lägger du till en nyckel i webhooks-tabellen och refererar till den från en kategori, PM eller emote via webhookKey.

Kanalbrygga (Discord → chatt)

Separat kan shared/config/discord.lua (config.discord) avläsa Discord-kanaler och vidarebefordra deras meddelanden till spelets chatt. Den är inaktiverad som standard.

shared/config/discord.lua
config.discord = {
    active = false,
    pollInterval = 15000,   -- ms mellan avläsningar
    channels = {
        {
            channelId = "",   -- Discord-kanal att läsa från
            -- permissions = { "admin" },   -- valfritt: vem som kan se dessa meddelanden
            -- jobs  = { police = true },
            -- gangs = { whiteGang = true },
            tags = { { tag = "Discord", textColor = { 51, 51, 51 }, bgColor = { 88, 101, 242 } } },
            color = { 200, 200, 200 },
        },
        -- fler kanaler: Discord Admin / PD / EMS / Gang-exempel inkluderade
    },
}

Varje kanalpost kan begränsas av permissions, jobs eller gangs, så att en kanals meddelanden endast visas för rätt spelare. Bryggan läser meddelanden via Discord-bot-API:et och kräver en bot-token + guild-ID — som antingen tillhandahålls i config.discord eller återanvänds från config.adminChatName.discord i general.lua. Meddelanden som skapats av bots ignoreras.