Discord Logging
Discord Logging
يحتوي BUPA Chat على خاصيتين مستقلتين لـ Discord. تغطي هذه الصفحة تسجيل الويب هوك الصادر (الدردشة ← Discord). أما جسر القناة الوارد (Discord ← الدردشة)، المُكوّن في shared/config/discord.lua، فهو ميزة منفصلة موضحة في النهاية.
Webhook logging (chat → Discord)
توجد روابط Webhook URLs في server/webhook.lua — وهو ملف escrow_ignore تقوم بتعديله مباشرة. يتم تعريف ثلاثة مفاتيح:
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 messages —
config.pm.webhookKey(القيمة الافتراضية هيchatMessage). - Emotes — يمكن لكل أمر حركة تعيين
webhookKey(تستخدم/meو/doالمفتاحemoteCommand).
يتم تسجيل كل رسالة دردشة عادية دائماً في ويب هوك chatMessage. عندما تحدد الفئة webhookKey خاص بها أيضاً، يتم تسجيل رسائل تلك الفئة في كل من ويب هوك الفئة وويب هوك chatMessage.
يتم التعامل مع التسجيل بواسطة الدالة sendDiscordLog(webhookKey, message, src)، والتي تنشر حمولة JSON مستقلة إلى الرابط المربوط — ولا تتطلب أي مورد خارجي لـ 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" })
endلإضافة هدف تسجيل جديد، أضف مفتاحاً إلى جدول webhooks وقم بالإشارة إليه من فئة، أو رسالة خاصة (PM)، أو حركة (emote) عبر webhookKey.
Channel bridge (Discord → chat)
بشكل منفصل، يمكن لملف shared/config/discord.lua (أي config.discord) استطلاع قنوات Discord ونقل رسائلها إلى دردشة اللعبة. يتم تعطيل هذه الميزة افتراضياً.
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. يتم تجاهل الرسائل التي تنشئها البوتات.