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:
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 privati —
config.pm.webhookKey(il valore predefinito èchatMessage). - Emotes — ogni comando emote può impostare
webhookKey(/mee/dousanoemoteCommand).
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:
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" })
endPer 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.
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.