Skip to content

Discord Logging

Discord Logging

BUPA Chat में दो स्वतंत्र Discord फ़ीचर्स हैं। यह पृष्ठ आउटगोइंग वेबहुक लॉगिंग (चैट → Discord) को कवर करता है। इनकमिंग चैनल ब्रिज (Discord → चैट), जो shared/config/discord.lua में कॉन्फ़िगर किया गया है, एक अलग फ़ीचर है जिसका वर्णन अंत में दिया गया है।

Webhook logging (chat → Discord)

वेबहुक यूआरएल server/webhook.lua में रहते हैं — यह एक escrow_ignore फ़ाइल है जिसे आप सीधे संपादित करते हैं। तीन कुंजियाँ (keys) परिभाषित हैं:

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

प्लेसहोल्डर प्रॉक्सी यूआरएल को अपने स्वयं के Discord वेबहुक यूआरएल से बदलें। यदि किसी कुंजी का यूआरएल खाली है, तो उसके लिए कुछ भी नहीं भेजा जाता है।

How messages map to webhooks

कॉन्फ़िगरेशन प्रविष्टियाँ webhookKey के माध्यम से अपनी कुंजी (key) द्वारा एक वेबहुक को संदर्भित करती हैं:

  • श्रेणियाँ (Categories) — प्रत्येक श्रेणी webhookKey सेट कर सकती है (देखें Chat Categories)।
  • निजी संदेश (Private messages)config.pm.webhookKey (डिफ़ॉल्ट रूप से chatMessage होता है)।
  • इमोट्स (Emotes) — प्रत्येक इमोट कमांड webhookKey सेट कर सकती है (/me और /do emoteCommand का उपयोग करते हैं)।

प्रत्येक सामान्य चैट संदेश हमेशा chatMessage वेबहुक पर लॉग किया जाता है। जब कोई श्रेणी अपनी खुद की webhookKey भी परिभाषित करती है, तो उस श्रेणी के संदेश दोनों (श्रेणी वेबहुक और chatMessage वेबहुक) पर लॉग किए جاتے हैं।

लॉगिंग sendDiscordLog(webhookKey, message, src) द्वारा संभाली जाती है, जो मैप किए गए यूआरएल पर एक स्टैंडअलोन JSON पेलोड पोस्ट करती है — किसी बाहरी Discord संसाधन की आवश्यकता नहीं है:

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

एक नया लॉग टारगेट जोड़ने के लिए, webhooks टेबल में एक कुंजी जोड़ें और webhookKey के माध्यम से किसी श्रेणी, PM या इमोट से इसका संदर्भ लें।

Channel bridge (Discord → chat)

अलग से, shared/config/discord.lua (config.discord) Discord चैनलों को पोल कर सकता है और उनके संदेशों को गेम चैट में रिले कर सकता है। यह डिफ़ॉल्ट रूप से अक्षम है।

shared/config/discord.lua
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
    },
}

प्रत्येक चैनल प्रविष्टि को permissions, jobs या gangs द्वारा प्रतिबंधित (gate) किया जा सकता है, ताकि किसी चैनल के संदेश केवल सही खिलाड़ियों को दिखाई दें। यह ब्रिज Discord बॉट API के माध्यम से संदेशों को पढ़ता है और इसके लिए एक बॉट टोकन + गिल्ड आईडी की आवश्यकता होती है — जिसे या तो config.discord में आपूर्ति किया जाता है या general.lua में config.adminChatName.discord से पुन: उपयोग किया जाता है। बॉट्स द्वारा लिखे गए संदेशों को अनदेखा कर दिया जाता है।