Post server status, boss kills, world events and player milestones to your Discord channels.
Discord Announcements
Your game can post to your Discord server by itself: when it comes online, when a boss falls, when a world event starts, when a player reaches level 50. It can also keep one live status message in a channel, always showing whether the game is up and how many people are playing.
It works through Discord webhooks — a link Discord gives you for one channel. You don't need a bot, and nothing has to be installed on your Discord server.
Where to Author#
Settings → Discord (scroll past Project backups).
Setting It Up#
- In Discord, open the channel you want posts in → Edit Channel (the gear) → Integrations → Webhooks → New Webhook.
- Optionally rename it and give it a picture — that is the name and picture your posts appear under. Click Copy Webhook URL.
- In Studio, open Settings → Discord and click Add a channel.
- Paste the link into Webhook URL.
- Type your game's name into Game name in messages.
- Press Test next to any message. A sample post appears in your channel straight away.
- Switch on the moments you want, adjust the wording, and click Save.
Saving sends the change to your running game server — the next boss kill posts with your new settings, no restart needed. On a hosted or desktop server, publish your project once so the server has it.
You can add up to five channels — for example, #announcements for server status and events, and #hall-of-fame for boss kills and milestones.
Fields#
| Field | What it does |
|---|---|
| Name | Your label for this channel in Studio. Players never see it. |
| Game name in messages | Fills {game} in your messages. Left blank, it says "The server". |
| Webhook URL | The channel's webhook link. After saving, Studio only shows it masked; paste a new one to replace it. |
| Posting to this channel | Pause a channel without losing its settings. |
| What gets posted | One switch per moment, each with its own message and a Test button. |
| Milestone levels | The levels that count for Level milestone, separated by commas (for example 10, 25, 50, 100). |
| Which achievements | Tick the achievements that post. Tick none and every achievement posts. |
| Include guest players | Off by default, so throwaway guest characters don't flood your channel with logins and levels. |
| Live status message | One message the game keeps editing: online or offline, players online, how long it has been up. |
| Update every | How often the live status message refreshes. It also updates the moment the server starts or stops. |
| Posts as | Overrides the webhook's name for these posts. Blank = the name you set in Discord. |
| Avatar image | An https:// picture for these posts. Blank = the webhook's own picture. |
| Card colour | The stripe colour of each post. Switch Post as a card off for plain text messages instead. |
The Moments#
| Moment | When it posts | Tokens |
|---|---|---|
| Server online | The game server finished starting | game |
| Server offline | The game server is shutting down (update, restart, maintenance) | game |
| Boss slain | A boss encounter is defeated | boss · players · count · zone |
| World event started | One of your world events begins | event · zone |
| World event ended | A world event finishes (off by default) | event · zone |
| Calendar event started | A dated event on your calendar starts | event · day |
| Achievement earned | A player completes one of the chosen achievements (off by default) | player · achievement · points |
| Level milestone | A player reaches one of your milestone levels | player · level |
| Player joined | Anyone logs in (off by default — best for small worlds) | player · zone · online |
Type a token with curly braces, e.g. {player} reached level {level}! Every message can also use {game}. Discord's own formatting (bold, italics, emoji) works in your wording.
{players} on Boss slain names everyone who fought, e.g. "Rowan, Mira and Tess", or "Rowan, Mira, Tess, Kai and 3 others" in a big fight.
Gotchas#
- Treat the webhook URL like a password. Anyone who has it can post in that channel. If it leaks, delete the webhook in Discord, make a new one and paste that here.
- "Discord says this webhook no longer exists" means it was deleted in Discord. Make a new one and paste it in. The game also stops posting to a deleted webhook until you save a new link.
- Player names can't ping anyone. A player named @everyone posts as plain text, and names can't add links or formatting.
- A token that isn't listed for that moment posts exactly as you typed it. The editor warns you before you save.
- Bursts are merged. If ten bosses fall at once, Discord gets one post with ten cards instead of ten posts, so your webhook is never rate-limited.
- Offline desktop exports never include your webhook links — players who install the game can't post to your Discord.
- Is it working? Open your server's status page (the /status address of your game server). The discord section shows how many channels are active, posts sent and posts that failed.
- The whole system sits behind the Discord Announcements feature flag. Off = nothing is ever sent to Discord.