Skip to content

Discord Logging

Discord Logging

يحتوي BUPA Chat على خاصيتين مستقلتين لـ Discord. تغطي هذه الصفحة تسجيل الويب هوك الصادر (الدردشة ← Discord). أما جسر القناة الوارد (Discord ← الدردشة)، المُكوّن في shared/config/discord.lua، فهو ميزة منفصلة موضحة في النهاية.

Webhook logging (chat → Discord)

توجد روابط Webhook URLs في server/webhook.lua — وهو ملف escrow_ignore تقوم بتعديله مباشرة. يتم تعريف ثلاثة مفاتيح:

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

استبدل روابط الوكيل (proxy) المؤقتة بروابط Discord webhook الخاصة بك. إذا كان رابط أي مفتاح فارغاً، فلن يتم إرسال أي شيء له.

How messages map to webhooks

تشير إعدادات التكوين إلى الويب هوك عبر مفتاحه (key) باستخدام webhookKey:

  • Categories — يمكن لكل فئة تعيين webhookKey (راجع Chat Categories).
  • Private messagesconfig.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 وقم بالإشارة إليه من فئة، أو رسالة خاصة (PM)، أو حركة (emote) عبر webhookKey.

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، بحيث تظهر رسائل القناة للاعبين المناسبين فقط. يقرأ الجسر الرسائل من خلال واجهة برمجة تطبيقات بوت Discord ويتطلب رمز بوت (bot token) + معرف السيرفر (guild ID) — يتم توفيرها إما في config.discord أو إعادة استخدامها من config.adminChatName.discord في ملف general.lua. يتم تجاهل الرسائل التي تنشئها البوتات.