Skip to content

Discord Logging

Discord Logging

BUPA Chat ha due funzioni Discord indipendenti. Questa pagina copre la registrazione tramite webhook in uscita (chat → Discord). Il bridge del canale in entrata (Discord → chat), configurato in shared/config/discord.lua, è una funzione separata descritta alla fine.

Webhook logging (chat → Discord)

Gli URL dei webhook si trovano in server/webhook.lua — un file escrow_ignore che puoi modificare direttamente. Sono definite tre chiavi:

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

Sostituisci gli URL di proxy segnaposto con i tuoi URL dei webhook di Discord. Se l'URL di una chiave è vuoto, non viene inviato nulla per essa.

Come i messaggi vengono associati ai webhook

Le voci di configurazione fanno riferimento a un webhook tramite la sua chiave usando webhookKey:

  • Categorie — ogni categoria può impostare webhookKey (vedi Chat Categories).
  • Messaggi privaticonfig.pm.webhookKey (il valore predefinito è chatMessage).
  • Emotes — ogni comando emote può impostare webhookKey (/me e /do usano emoteCommand).

Ogni messaggio di chat normale viene sempre registrato nel webhook chatMessage. Quando una categoria definisce anche il proprio webhookKey, i messaggi di quella categoria vengono registrati sia nel webhook della categoria che nel webhook chatMessage.

La registrazione è gestita da sendDiscordLog(webhookKey, message, src), che invia un payload JSON autonomo all'URL associato — non è richiesta alcuna risorsa Discord esterna:

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

Per aggiungere una nuova destinazione di log, aggiungi una chiave alla tabella webhooks e fai riferimento ad essa da una categoria, MP o emote tramite webhookKey.

Channel bridge (Discord → chat)

Separatamente, shared/config/discord.lua (config.discord) può eseguire il polling dei canali Discord e inoltrare i loro messaggi nella chat di gioco. È disabilitato per impostazione predefinita.

shared/config/discord.lua
config.discord = {
    active = false,
    pollInterval = 15000,   -- ms tra i polling
    channels = {
        {
            channelId = "",   -- Canale Discord da cui leggere
            -- permissions = { "admin" },   -- opzionale: chi può vedere questi messaggi
            -- jobs  = { police = true },
            -- gangs = { whiteGang = true },
            tags = { { tag = "Discord", textColor = { 51, 51, 51 }, bgColor = { 88, 101, 242 } } },
            color = { 200, 200, 200 },
        },
        -- altri canali: inclusi esempi Discord Admin / PD / EMS / Gang
    },
}

Ogni voce di canale può essere limitata da permissions, jobs o gangs, in modo che i messaggi di un canale vengano visualizzati solo dai giocatori idonei. Il bridge legge i messaggi tramite l'API del bot di Discord e richiede un token bot + ID gilda — forniti in config.discord o riutilizzati da config.adminChatName.discord in general.lua. I messaggi scritti dai bot vengono ignorati.