Discord
Moonborn olaylarını Discord webhook'larına gönder — NPC drift uyarıları, pazaryeri yayın bildirimleri, operasyon sinyalleri.
Slack entegrasyonu gibi, Discord adaptörü de yalnızca alıcıdır. Moonborn webhook olaylarını Discord embed (gömme) şekline biçimlendirir; sen onları Discord webhook URL'ine yönlendirirsin.
Oyun ve topluluk ekipleri bunu yoğun kullanır: topluluk kanalına NPC drift uyarıları, yeni pazaryeri yayınları, üretim kesintisi sinyalleri.
Bu sayfayı bitirdiğinde
- Discord webhook URL'ini Moonborn'a 5 dakikada bağlayabileceksin.
format: 'discord'bayrağının Discord embed biçimine nasıl dönüştürdüğünü bileceksin.- NPC drift kanalı, pazaryeri uyarısı, operasyon kesintisi desenlerini ayırt edebileceksin.
- Discord-alıcısı olmanın sınırlarını (slash komutu yok, bot yok) anlayacaksın.
Ön koşul: Team plan, Discord sunucusunda kanala webhook ekleme yetkisi.
Kurulum — 2 adım
1. Discord'da webhook yarat
Discord sunucunda kanal ayarları:
Channel Settings → Integrations → Webhooks → New Webhook
→ İsim ver (örn. "Moonborn NPC alerts")
→ Kanal seç
→ "Copy Webhook URL"URL biçimi:
https://discord.com/api/webhooks/1234.../shortToken1232. Moonborn webhook'unu o URL'e abone et
const hook = await client.webhooks.create({
url: 'https://discord.com/api/webhooks/1234.../shortToken123',
events: ['persona.audit_failed', 'marketplace.persona.published'],
description: 'Discord #npc-ops — drift + pazaryeri uyarıları',
format: 'discord', // Discord embed serileştirici
});format: 'discord' (Team ve üzeri) — Moonborn olayını Discord embed şekline çevirir:
- Başlık olay tipi
- Renk uyarılar için ember (
0xE8763A), hatalar için ruby (0xC4504F) - Açıklayıcı gövde persona adı + skor
- Alt link — Moonborn arayüzünde persona detayına geri link
Bayrak olmadan ham JSON gönderilir; Discord embed olarak işlemez (render) — metin olarak gösterir. format: 'discord' pratikte zorunludur.
NPC oyun desenleri
NPC drift kanalı
NPC'lerin sahne dışı kaymalarını topluluk operasyon kanalına bildir:
await client.webhooks.create({
url: 'https://discord.com/api/webhooks/.../npc-drift',
events: ['persona.audit_failed'],
format: 'discord',
description: 'NPC drift uyarıları — topluluk operasyon',
});Tipik uyarı: "Karakter per_innkeeper_01H... drift skoru 0.42 (eşik 0.30). Son 3 turdaki yanıtlar inceleme kuyruğunda."
Pazaryeri yayın bildirimi
Yeni içerik topluluk kanalına:
await client.webhooks.create({
url: 'https://discord.com/api/webhooks/.../marketplace-news',
events: ['marketplace.persona.published'],
format: 'discord',
});Topluluk Discord'unda "yeni karakterler" akışı — kullanıcı katılımı için pratik.
Üretim kesintisi sinyali
Üretim başarısızlıklarını operasyon kanalına:
await client.webhooks.create({
url: 'https://discord.com/api/webhooks/.../engineering',
events: ['generation.run.failed', 'webhook.delivery_failed'],
format: 'discord',
});Oyun tasarımcıları istemlerin üretimde sessizce başarısız olduğunu erkenden bilir.
Persona ↔ Discord bot — Moonborn'un sınırı dışında
Moonborn'u Discord-yerel bir sohbet deneyimiyle entegre etmek istiyorsan:
// Discord bot tarafı (örn. discord.js)
import { Client, Events } from 'discord.js';
import MoonbornClient from '@moonborn/sdk';
const moonborn = new MoonbornClient({ apiKey: process.env.MOONBORN_API_KEY });
const session = await moonborn.chat.sessions.create({
personaId: 'per_innkeeper_01H...',
});
discord.on(Events.MessageCreate, async (msg) => {
if (msg.channelId !== INN_CHANNEL_ID || msg.author.bot) return;
const reply = await moonborn.chat.messages.create({
sessionId: session.id,
content: msg.content,
});
await msg.reply(reply.content);
});Bu desen Moonborn'u karakter ses katmanı olarak kullanır; Discord tarafı bot çatısı (discord.js, discord.py, serenity) sahne mantığını yürütür.
Plan gereksinimi
| Plan | Yetenek |
|---|---|
| Free | Ham JSON webhook (Discord embed yok) |
| Pro | format: 'discord' bayrağı |
| Team | Çok-kanallı yönlendirme, gizli anahtar yenileme |
| Enterprise | Olay filtresi (persona, önem derecesi) |