Discord Logging
Discord Логування
BUPA Chat має дві незалежні функції Discord. Ця сторінка охоплює виходяче логування через вебхуки (чат → Discord). Вхідний міст каналів (Discord → чат), налаштований у shared/config/discord.lua, є окремою функцією, описаною в кінці.
Вебхук-логування (чат → Discord)
URL-адреси вебхуків знаходяться в server/webhook.lua — файлі escrow_ignore, який ви редагуєте напряму. Визначено три ключі:
local webhooks = {
chatMessage = "https://.../webhook-proxy/....",
emoteCommand = "https://.../webhook-proxy/....",
pmMessage = "https://.../webhook-proxy/....",
}Замініть початкові URL-адреси проксі на власні URL-адреси вебхуків Discord. Якщо URL-адреса ключа порожня, для нього нічого не надсилається.
Як повідомлення зіставляються з вебхуками
Записи конфігурації посилаються на вебхук за його ключем через webhookKey:
- Категорії — кожна категорія може встановлювати
webhookKey(див. Категорії чату). - Приватні повідомлення —
config.pm.webhookKey(за замовчуваннямchatMessage). - Емоції — кожна команда емоцій може встановлювати
webhookKey(/meта/doвикористовуютьemoteCommand).
Кожне звичайне повідомлення чату завжди логується у вебхук chatMessage. Коли категорія також визначає власний webhookKey, повідомлення цієї категорії логуються як у вебхук категорії, так і у вебхук chatMessage.
Логування обробляється за допомогою функції sendDiscordLog(webhookKey, message, src), яка надсилає автономний JSON-пейлоад на зіставлену URL-адресу — жодних зовнішніх ресурсів 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 і посилайтеся на нього з категорії, ПМ або емоції через webhookKey.
Міст каналів (Discord → чат)
Окремо, shared/config/discord.lua (config.discord) може опитувати канали Discord та передавати їхні повідомлення в ігровий чат. За замовчуванням цю функцію вимкнено.
config.discord = {
active = false,
pollInterval = 15000, -- мс між опитуваннями
channels = {
{
channelId = "", -- Канал Discord для читання
-- permissions = { "admin" }, -- необов'язково: хто може бачити ці повідомлення
-- jobs = { police = true },
-- gangs = { whiteGang = true },
tags = { { tag = "Discord", textColor = { 51, 51, 51 }, bgColor = { 88, 101, 242 } } },
color = { 200, 200, 200 },
},
-- більше каналів: приклади для Discord Admin / PD / EMS / Gang включено
},
}Кожен запис каналу може обмежуватися за допомогою permissions, jobs або gangs, тож повідомлення каналу з'являються лише у потрібних гравців. Міст читає повідомлення через API бота Discord і вимагає токен бота + ID гільдії, які надаються або в config.discord, або повторно використовуються з config.adminChatName.discord у файлі general.lua. Повідомлення, створені ботами, ігноруються.