Skip to content

Discord Günlükleri

Discord Logları

BUPA Chat, iki bağımsız Discord özelliğine sahiptir. Bu sayfa, giden webhook loglamasını (chat → Discord) kapsar. shared/config/discord.lua içinde yapılandırılan gelen kanal köprüsü (Discord → chat) ise sonunda açıklanan ayrı bir özelliktir.

Webhook loglama (chat → Discord)

Webhook URL'leri, doğrudan düzenleyeceğiniz bir escrow_ignore dosyası olan server/webhook.lua içinde bulunur. Üç anahtar tanımlanmıştır:

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

Yer tutucu proxy URL'lerini kendi Discord webhook URL'lerinizle değiştirin. Bir anahtarın URL'si boşsa, onun için hiçbir şey gönderilmez.

Mesajlar webhook'larla nasıl eşleşir

Yapılandırma girdileri, webhookKey aracılığıyla bir webhook'a anahtarı üzerinden referans verir:

  • Kategoriler — her kategori webhookKey ayarlayabilir (bkz. Sohbet Kategorileri).
  • Özel mesajlarconfig.pm.webhookKey (varsayılan olarak chatMessage).
  • Animasyonlar — her animasyon komutu webhookKey ayarlayabilir (/me ve /do, emoteCommand kullanır).

Her normal sohbet mesajı her zaman chatMessage webhook'una loglanır. Bir kategori aynı zamanda kendi webhookKey değerini tanımladığında, o kategorinin mesajları hem kategori webhook'una hem de chatMessage webhook'una loglanır.

Loglama, eşlenen URL'ye bağımsız bir JSON yükü gönderen sendDiscordLog(webhookKey, message, src) tarafından gerçekleştirilir — harici bir Discord kaynağı gerekmez:

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

Yeni bir log hedefi eklemek için, webhooks tablosuna bir anahtar ekleyin ve webhookKey aracılığıyla bir kategoriden, ÖM'den veya animasyondan buna referans verin.

Kanal köprüsü (Discord → chat)

Ayrı olarak, shared/config/discord.lua (config.discord) Discord kanallarını yoklayabilir (poll) ve mesajlarını oyun içi sohbete aktarabilir. Varsayılan olarak devre dışıdır.

shared/config/discord.lua
config.discord = {
    active = false,
    pollInterval = 15000,   -- yoklamalar arasındaki milisaniye
    channels = {
        {
            channelId = "",   -- Okunacak Discord kanalı
            -- permissions = { "admin" },   -- isteğe bağlı: bu mesajları kimler görebilir
            -- jobs  = { police = true },
            -- gangs = { whiteGang = true },
            tags = { { tag = "Discord", textColor = { 51, 51, 51 }, bgColor = { 88, 101, 242 } } },
            color = { 200, 200, 200 },
        },
        -- daha fazla kanal: Discord Admin / PD / EMS / Çete örnekleri dahildir
    },
}

Her kanal girdisi permissions, jobs veya gangs ile sınırlandırılabilir, böylece bir kanalın mesajları yalnızca doğru oyuncular için görünür. Köprü, mesajları Discord bot API'si aracılığıyla okur ve config.discord içinde sağlanan veya general.lua dosyasındaki config.adminChatName.discord kaynağından yeniden kullanılan bir bot token + sunucu (guild) ID gerektirir. Botlar tarafından oluşturulan mesajlar yoksayılır.