Repository navigation
Discord (Herald)
One post in a Discord channel that edits itself as the server changes. Not a stream of messages. One post, kept fresh.

Setup wizard walks the whole thing in four steps and is the easiest way in.

Welcome explains what the post carries and what you need: a Discord server where you can manage webhooks, or a friendly admin who can.
Webhook has the steps for making one: Server Settings, Integrations, Webhooks, New Webhook, name it, pick a channel, Copy Webhook URL. Paste it in the field and BakaLoader knocks on it to check it answers. The status line goes from "paste the URL · the Herald will knock on it to make sure it answers" to "checking…" to either the webhook's name or the error. There is a Thread ID field here too, optional.

Tidings is where you choose the extras: join address, password, event posts.

Publish summarises what you picked and places the first post.

Share this server on Discord is the master switch. Off means nothing is ever sent, whatever else is set.
Webhook URL is the one you copied from Discord. It has to look like https://discord.com/api/webhooks/<numbers>/<token>.
Thread ID is optional. Set it and every post goes inside that thread or forum post instead of the channel itself. To get one, turn on Developer Mode under App Settings, Advanced, then right click the thread and Copy Thread ID. Blank posts in the channel.
Always: the server name as the title, Status, Players online, World, Mods, Last mod update and Next restart. The colour follows the state, green for running, orange for starting or stopping, grey for offline.
The two optional fields have their own switches.
Join address (IP:port) puts your public address in the post so friends can copy it straight from Discord. If you set a custom domain, the name is used instead of the raw address.
Server password puts the password in the post. Everyone who can read that channel can read it. The warning under the switch says so, and it means it. Private channels only.
Event posts are separate one off messages, not edits of the status post. They fire on server start, stop and crash, on players joining and leaving, when a start was held back, when a server update finishes or fails, and when a pre-1.0 world is loaded.
The post also disables mentions entirely, so nothing in a server name, a world name or a player name can ping your channel.
If your players use a mod manager, the post can carry the code that sets them up with the same mods as the server. Under the password switch there is a box called Mod profile code and two choices under it, Thunderstore code and Gale code. In r2modman or the Thunderstore app, export your profile as a code and paste what it gives you. In Gale, use its share code (the six character one) or the sync id. Pick the manager the code came from, then click out of the box or press Enter. The line under it tells you what the post will show, for example "The post carries it as a Thunderstore code field, for this realm only." Players paste it into their own manager and get the same mods.
How it works: the code belongs to the realm you have open, not to the whole app, because each realm can run a different set of mods. Switch realms and the box shows that realm's code, or nothing. It is saved in that realm's profile, and the post shows the code of the realm the post is about, as one field straight after Mods, in a code box so it copies in one go. The field is named for the manager you picked. While another realm's server is running and this one's is not, the post is about that other realm, so the line under the box says your code is saved and names the realm the post is showing instead. With Discord sharing switched off it says the code is saved and there is no post to carry it. A new realm starts with no code, even when it is made from one that has one, because it may not run the same mods. An empty box means no field at all, and switching the manager or clearing the box edits the post on the next refresh like any other change. The check is light: a code has to be letters, digits and dashes, the way the manager shows it. Anything else gets "That does not look like a mod profile code; paste it exactly as your mod manager shows it." and is not saved. BakaLoader never asks Thunderstore or Gale whether a code is real, and the code goes nowhere but your Discord post. Event posts do not carry it.
Publish now creates the post, or refreshes it immediately if it already exists.
Remove post deletes it from Discord. Your settings stay, so you can publish again whenever.
BakaLoader creates the post once and remembers its message id. Every change after that is an edit of that same message.
Edits are throttled. At most one edit every 10 seconds, and near simultaneous changes are gathered for 2 seconds before an edit goes out, so a wave of joins is one edit rather than six.
If an edit comes back as not found, because someone deleted the post or the webhook moved channels, BakaLoader forgets the id and creates a fresh post on the next update.
"Paste the webhook URL first."
"That does not look like a Discord webhook URL. It should start with https://discord.com/api/webhooks/"
"Discord says that webhook does not exist. It may have been deleted, so create a new one and paste the fresh URL."
"Discord answered 429. Try again in a moment."
"No server snapshot is available yet." means BakaLoader has not seen the server yet, so there is nothing to post.
Only to the webhook URL you pasted. Nothing about your server goes anywhere else because of this feature.
Turning the master switch off stops every post and every edit. It does not delete the post that is already there. Use Remove post for that.
You want a channel that always shows whether the server is up.
Make a channel, #valheim-status. Server Settings, Integrations, Webhooks, New Webhook, pick that channel, Copy Webhook URL.
In BakaLoader, open Discord, press Setup wizard, paste the URL. The status line names the webhook. Press Next.
Turn on Join address. Leave Server password off, because that channel is not private. Turn on Event posts so joins and leaves show. Next, then Publish the post.
The post appears. Somebody joins, and within a couple of seconds the Players online field says 1. They leave and it says 0. The post never moves.
Will it spam my channel? Not the status post. That is one message, edited in place. Event posts are separate messages and are off unless you turn them on.
Can I have several servers post to one channel? Yes. The webhook is one setting for the whole app, and the status post follows the realm whose server is running, so point them all at the same channel and each keeps its own post.
The post stopped updating. The webhook was deleted, or the master switch is off. Press Publish now and read the status line.
Can I change what the post looks like? No. The layout is fixed, and the only choices are the join address, the password, the mod profile code and event posts.
Does the password field show my password to Discord? Only if you turn that switch on, and only to whoever can read that channel. Discord itself receives it either way as part of the message body.
Screens
Dashboard (Hearth) Players (Vikings) Mods BepInEx Hexium Configs (Runes) Settings (World) World modifiers Map (Atlas) Log (Saga) Discord (Herald) Statistics (Skald)
Guides
Running the server Automatic restarts Server updates and the launch guard Updating the server Updating BakaLoader Worlds, backups and restore Deleting a world Multiple servers Custom domain Languages The condition bar Command palette and shortcuts Privacy and network Client companion
Reference
Settings reference How mods are matched and updated The bundled plugins World file formats How the map is drawn For mod authors
Help