Discord
Notification adapter — Moonborn events to Discord webhooks. Best for game / community teams running NPC casts or persona-driven Discord-based interactions.
Like the Slack integration, the Discord adapter is receive-only. Moonborn formats webhook events into Discord-shaped messages; you point them at a Discord webhook URL.
Game and community teams use it heavily — NPC drift alerts into a community ops channel, marketplace publication notifications, etc.
Setup
- Create a Discord webhook. In your Discord server: Channel Settings → Integrations → Webhooks → New Webhook. Copy the URL.
- Subscribe a Moonborn webhook:
const hook = await client.webhooks.createWebhook({
url: 'https://discord.com/api/webhooks/123.../X...',
events: ['persona.audit_failed', 'marketplace.persona.published'],
description: 'Discord — NPC + community alerts',
format: 'discord',
});format: 'discord' (Team+) emits Discord's embed shape: title, color
(ember for warnings, ruby for failures), descriptive body, link back
to the persona detail. Without the flag, you get raw JSON — your
Discord bot/proxy can format it however.
Patterns
- NPC drift channel —
persona.audit_failedfiltered to a tag matching your game's NPCs. - Marketplace alerts —
marketplace.persona.publishedto a community channel announcing new content. - Outage signal —
generation.run.failedto ops, so game designers know when prompts are silently failing in production.
Honest scope
Same boundary as Slack: receive-only, no read-from-Discord, no slash
commands, no persona-as-Discord-bot. Game writers integrating
Moonborn with a Discord-native experience pair Moonborn with their
own bot framework (discord.js, discord.py, serenity); the bot
calls chat.sendMessage and posts replies.
Tier
Team and up.
Next
- Webhooks integration.
- Game-side patterns: Game NPC orchestration use case.
- Webhooks API reference.