Discord Logging
Discord Logging
BUPA Chat tem dois recursos independentes do Discord. Esta página aborda o registro de webhook de saída (chat → Discord). A ponte de canal de entrada (Discord → chat), configurada em shared/config/discord.lua, é um recurso separado descrito no final.
Webhook logging (chat → Discord)
As URLs de webhook ficam em server/webhook.lua — um arquivo escrow_ignore que você edita diretamente. Três chaves são definidas:
local webhooks = {
chatMessage = "https://.../webhook-proxy/....",
emoteCommand = "https://.../webhook-proxy/....",
pmMessage = "https://.../webhook-proxy/....",
}Substitua as URLs de proxy de espaço reservado pelas suas próprias URLs de webhook do Discord. Se a URL de uma chave estiver vazia, nada será enviado para ela.
Como as mensagens são mapeadas para webhooks
As entradas de configuração fazem referência a um webhook por sua chave através de webhookKey:
- Categorias — cada categoria pode definir
webhookKey(consulte Chat Categories). - Mensagens privadas —
config.pm.webhookKey(o padrão échatMessage). - Animações (Emotes) — cada comando de emote pode definir
webhookKey(/mee/dousamemoteCommand).
Todas as mensagens normais de chat são sempre registradas no webhook chatMessage. Quando uma categoria também define sua própria webhookKey, as mensagens dessa categoria são registradas tanto no webhook da categoria quanto no webhook chatMessage.
O registro é gerenciado por sendDiscordLog(webhookKey, message, src), que envia um payload JSON autônomo para a URL mapeada — nenhum recurso externo do Discord é necessário:
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 adicionar um novo destino de log, adicione uma chave à tabela webhooks e faça referência a ela a partir de uma categoria, MP ou emote via webhookKey.
Channel bridge (Discord → chat)
Separadamente, shared/config/discord.lua (config.discord) pode consultar canais do Discord e retransmitir suas mensagens para o chat do jogo. Ele vem desativado por padrão.
config.discord = {
active = false,
pollInterval = 15000, -- ms entre consultas
channels = {
{
channelId = "", -- Canal do Discord para leitura
-- permissions = { "admin" }, -- opcional: quem pode ver essas mensagens
-- jobs = { police = true },
-- gangs = { whiteGang = true },
tags = { { tag = "Discord", textColor = { 51, 51, 51 }, bgColor = { 88, 101, 242 } } },
color = { 200, 200, 200 },
},
-- mais canais: exemplos de Discord Admin / PD / EMS / Gang incluídos
},
}Cada entrada de canal pode ser restrita por permissions, jobs ou gangs, para que as mensagens de um canal apareçam apenas para os jogadores certos. A ponte lê mensagens através da API de bot do Discord e requer um token de bot + ID do servidor (guild) — fornecidos em config.discord ou reutilizados de config.adminChatName.discord em general.lua. Mensagens criadas por bots são ignoradas.