Discord Logging
Discord Logging
BUPA Chat tiene dos funciones de Discord independientes. Esta página cubre el registro mediante webhooks salientes (chat → Discord). El puente de canal entrante (Discord → chat), configurado en shared/config/discord.lua, es una función independiente descrita al final.
Webhook logging (chat → Discord)
Las URLs de los webhooks se encuentran en server/webhook.lua, un archivo escrow_ignore que puedes editar directamente. Se definen tres claves:
local webhooks = {
chatMessage = "https://.../webhook-proxy/....",
emoteCommand = "https://.../webhook-proxy/....",
pmMessage = "https://.../webhook-proxy/....",
}Reemplaza las URLs de proxy de ejemplo con tus propias URLs de webhooks de Discord. Si la URL de una clave está vacía, no se enviará nada para ella.
Cómo se asignan los mensajes a los webhooks
Las entradas de configuración hacen referencia a un webhook por su clave mediante webhookKey:
- Categorías — cada categoría puede definir
webhookKey(consulta Chat Categories). - Mensajes privados —
config.pm.webhookKey(por defecto eschatMessage). - Emotes — cada comando de emote puede definir
webhookKey(/mey/dousanemoteCommand).
Cada mensaje de chat normal se registra siempre en el webhook chatMessage. Cuando una categoría también define su propio webhookKey, los mensajes de esa categoría se registran tanto en el webhook de la categoría como en el webhook chatMessage.
El registro se gestiona mediante sendDiscordLog(webhookKey, message, src), el cual envía un payload JSON independiente a la URL asignada, sin necesidad de recursos externos de Discord:
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" })
endPara añadir un nuevo destino de registro, añade una clave a la tabla webhooks y haz referencia a ella desde una categoría, MP o emote mediante webhookKey.
Channel bridge (Discord → chat)
Por otro lado, shared/config/discord.lua (config.discord) puede consultar canales de Discord y retransmitir sus mensajes al chat del juego. Está desactivado por defecto.
config.discord = {
active = false,
pollInterval = 15000, -- ms between polls
channels = {
{
channelId = "", -- Discord channel to read from
-- permissions = { "admin" }, -- optional: who can see these messages
-- jobs = { police = true },
-- gangs = { whiteGang = true },
tags = { { tag = "Discord", textColor = { 51, 51, 51 }, bgColor = { 88, 101, 242 } } },
color = { 200, 200, 200 },
},
-- more channels: Discord Admin / PD / EMS / Gang examples included
},
}Cada entrada de canal se puede restringir mediante permissions, jobs o gangs, para que los mensajes de un canal solo aparezcan a los jugadores correctos. El puente lee los mensajes a través de la API del bot de Discord y requiere un token de bot + ID de servidor (guild ID), proporcionados en config.discord o reutilizados desde config.adminChatName.discord en general.lua. Los mensajes escritos por bots son ignorados.