Discord Logging
Discord Logging
BUPA Chat are două funcții Discord independente. Această pagină acoperă logging-ul prin webhook-uri de ieșire (chat → Discord). Podul pentru canale de intrare (Discord → chat), configurat în shared/config/discord.lua, este o funcție separată descrisă la sfârșit.
Webhook logging (chat → Discord)
URL-urile webhook se află în server/webhook.lua — un fișier escrow_ignore pe care îl editezi direct. Sunt definite trei chei:
local webhooks = {
chatMessage = "https://.../webhook-proxy/....",
emoteCommand = "https://.../webhook-proxy/....",
pmMessage = "https://.../webhook-proxy/....",
}Înlocuiește URL-urile proxy demonstrative cu propriile URL-uri de webhook Discord. Dacă URL-ul unei chei este gol, nu se va trimite nimic pentru aceasta.
Cum sunt mapate mesajele la webhook-uri
Intrările din configurație fac referire la un webhook prin cheia sa, folosind webhookKey:
- Categorii — fiecare categorie poate seta
webhookKey(vezi Chat Categories). - Mesaje private —
config.pm.webhookKey(valoarea implicită estechatMessage). - Emote-uri — fiecare comandă de emote poate seta
webhookKey(/meși/dofolosescemoteCommand).
Fiecare mesaj normal din chat este înregistrat întotdeauna în webhook-ul chatMessage. Atunci când o categorie definește și propriul său webhookKey, mesajele din acea categorie sunt înregistrate atât în webhook-ul categoriei, cât și în cel pentru chatMessage.
Logging-ul este gestionat de sendDiscordLog(webhookKey, message, src), care trimite un payload JSON independent către URL-ul mapat — nu este necesară nicio resursă Discord externă:
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" })
endPentru a adăuga o nouă țintă de log, adaugă o cheie în tabelul webhooks și fă referire la ea dintr-o categorie, mesaj privat (PM) sau emote prin intermediul webhookKey.
Channel bridge (Discord → chat)
Separat, shared/config/discord.lua (config.discord) poate interoga canalele Discord și retransmite mesajele acestora în chatul din joc. Este dezactivat în mod implicit.
config.discord = {
active = false,
pollInterval = 15000, -- ms între interogări
channels = {
{
channelId = "", -- Canalul Discord din care se citește
-- permissions = { "admin" }, -- opțional: cine poate vedea aceste mesaje
-- jobs = { police = true },
-- gangs = { whiteGang = true },
tags = { { tag = "Discord", textColor = { 51, 51, 51 }, bgColor = { 88, 101, 242 } } },
color = { 200, 200, 200 },
},
-- mai multe canale: exemple incluse pentru Discord Admin / PD / EMS / Gang
},
}Fiecare intrare de canal poate fi restricționată prin permissions, jobs sau gangs, astfel încât mesajele unui canal să apară doar pentru jucătorii potriviți. Podul citește mesajele prin API-ul botului Discord și necesită un token de bot + ID de server (guild ID) — furnizate fie în config.discord, fie preluate din config.adminChatName.discord în general.lua. Mesajele scrise de boți sunt ignorate.