Discord Logging
Discord ログ機能
BUPA Chat には2つの独立した Discord 機能があります。このページでは送信 Webhook ログ機能(チャット → Discord)について説明します。shared/config/discord.lua で設定する受信チャンネルブリッジ機能(Discord →チャット)は、最後に説明する別の機能です。
Webhook ログ機能(チャット → Discord)
Webhook URL は server/webhook.lua に記述します(直接編集可能な escrow_ignore ファイルです)。3つのキーが定義されています:
local webhooks = {
chatMessage = "https://.../webhook-proxy/....",
emoteCommand = "https://.../webhook-proxy/....",
pmMessage = "https://.../webhook-proxy/....",
}プレースホルダーのプロキシ URL をご自身の Discord Webhook URL に置き換えてください。キーの URL が空の場合、そのログは送信されません。
メッセージと Webhook の紐付け方法
設定エントリは webhookKey を介してキーで Webhook を参照します:
- カテゴリ — 各カテゴリで
webhookKeyを設定できます(チャットカテゴリを参照)。 - プライベートメッセージ —
config.pm.webhookKey(デフォルトはchatMessage)。 - エモート — 各エモートコマンドで
webhookKeyを設定できます(/meおよび/doはemoteCommandを使用します)。
すべての通常のチャットメッセージは常に chatMessage の Webhook にログとして送信されます。カテゴリが独自の webhookKey も定義している場合、そのカテゴリのメッセージはカテゴリ用 Webhook と chatMessage Webhookの両方にログ記録されます。
ログ記録は sendDiscordLog(webhookKey, message, src) によって処理され、マッピングされた URL にスタンドアロンの 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、またはエモートから webhookKey を経由してそれを参照します。
チャンネルブリッジ機能(Discord → チャット)
これとは別に、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 ボット API を介してメッセージを読み取るため、config.discord で指定するか、general.lua の config.adminChatName.discord から流用したボットトークンとギルド ID が必要になります。ボットによって送信されたメッセージは無視されます。