Server Assistant Changelog: v6.x
The current release line. Earlier releases are archived by version at the foot of the page.
What’s new in Server Assistant. Internal-only updates (CI, dependency bumps, host-side tooling) aren’t listed here. Tap a release to expand it.
Release type Fix Feature Update
No releases match that search. Clear the box or pick a different type.
v6.144.0: setup, `/mcdc` and every panel, the big ease-of-use pass
Setup is shorter, and nothing happens until you press Finish. The setup wizard’s message now lands last in your DMs, so the buttons you need are not buried under earlier ones. A one person server no longer needs to create a Moderator role just to get started. Nothing is saved or created, the Welcome desk included, until you press Finish, and a first time setup now posts the staff welcome message on its own.
Pairing Minecraft finally talks back. The moment your server first connects, staff
chat gets a note that the Minecraft bridge is connected, with the plugin version and
player count included. The /mcdc panel now tells you to install the plugin before it
hands you the 30 minute setup code, and a focused setup view stands in for the full
control panel until you are connected. Regenerating the token on a bridge that is
already live now asks you to confirm first.
/help works for everyone now. Members get a “For everyone” category. Staff who
can remove warnings or notes get the management view straight from /warnings and
/notes, with no extra step.
Less text everywhere. /support, /link and /premium get to the point. Panels
stop repeating a toggle’s state twice. Error messages now say what to do next, not just
what went wrong.
Settings panels expire politely. A panel that has gone stale now says “Run
/settings to reopen” instead of failing silently. Destructive buttons, like deleting
a backup or clearing the anti-nuke trusted list, ask you to confirm first. The
anti-nuke panel now shows exactly who is trusted.
In Minecraft chat. Long Discord posts no longer flood the screen, mirrored messages are capped. Notices lost the emoji that show up as boxes in the vanilla client. Players who already linked their accounts stop being asked to link again on every join.
v6.143.1: /premium no longer fails when things are busy
Opening /premium could error out. The panel gathers your plan and token usage from
our billing service before it appears, and when that lookup ran slow, Discord gave up
waiting and showed an error instead of the panel.
Now the panel acknowledges you immediately (you’ll see a brief thinking state), takes the time it needs, and then appears. Same panel, it just no longer dies when a lookup is slow.
v6.143.0: a calmer, smarter /premium panel
The emoji clutter is gone. Nearly every line of /premium opened with an emoji and
the panel was hard to read. The panel body is now plain text; the buttons keep one icon
each.
Premium servers are no longer sold Premium. If your server already has a plan, the panel shows your plan, your token usage and billing management. The feature pitch and upgrade pricing only appear on servers that could actually upgrade.
The usage bar can no longer read over 100%. Usage is counted after each AI reply finishes, so the very last reply can land a few tokens past your cap (say 754K of 750K). That is expected, and nothing extra is ever charged for it. The panel now caps the percentage at 100, still shows the honest totals, and explains the overshoot in one line right where you would notice it.
v6.142.0: players now see when someone is banned or kicked
A player would just vanish, with nothing said. When staff banned or kicked someone through Server Assistant, nothing appeared in Minecraft chat. The people playing saw someone disappear and had no idea why, or whether anyone was watching at all.
One line now goes to everyone in game, for example “Griefer was banned by Staff.” It names the player and what happened, and nothing else.
Deliberately not the reason. A ban reason often quotes exactly what somebody said, so repeating it to the whole server can be worse than the thing being punished. The reason stays with your staff records where it belongs. The moderator is not named either, so no individual becomes the target of whoever was just removed.
Nothing changes for bans made outside Server Assistant, from your console or another plugin. Those already announce themselves however your server is set up, so SA stays quiet rather than saying it twice.
v6.141.0: /premium now tells you what Premium actually includes
The plan list caught up with the product. /premium still described white-label
branding, custom slash commands and leveling as “coming”, long after they shipped. The
panel now lists what each plan really includes today: the SAi suite, unlimited /imagine,
AutoMod AI second-opinion, the Reception concierge, @sai in Minecraft, live translation,
ThreatNet auto-protect and Threat Score, backups, role panels, custom commands and
white-label branding.
Setting up from the web portal no longer risks a false failure. A logging slip at the very end of portal setup could make a fully successful setup report back as failed. Fixed.
v6.140.0: ban a Minecraft player from Discord, even one you have never seen
You could only act on players SA had already caught. Kicking or banning someone on your Minecraft server from Discord meant waiting for SA to flag them, or for them to appeal. A griefer who had never tripped the filter, and who was not in your Discord, could only be dealt with from the server console.
/mcban and /mckick take a player’s name. They do not need that player to be in your
Discord, and /mcban does not need them to be online. The reason you give is shown to the
player and kept with your records.
When they are online you get everything, because SA can tell which account the name belongs to: the ban, an entry on their record, and an appeal link waiting on the screen the next time they try to join.
When they are not, the ban still happens, and SA tells you what it could not do. A name on its own is not enough to attach a record entry or an appeal link, so the reply says so plainly rather than letting you assume otherwise. If they happen to be online, it will say that banning them now would get you both.
A kick only reaches someone who is currently on the server. If they are not, SA says
nothing was sent rather than reporting a kick that never landed, and points you at /mcban,
which works either way.
v6.139.0: accept a Minecraft ban appeal with a warning
An appeal had only two answers. Approve wiped the slate clean, Deny kept the player out, and there was nothing in between. Every appeal you were willing to accept had to be treated as though the ban had never happened.
Warn and unban is the middle answer. The player comes back, and a warning goes on their record at the same time, so the next incident starts from what actually happened rather than from nothing. You type the warning yourself when you press it, the same way Kick and Warn works, and what you type is what lands on their record.
It works from your portal too, and does exactly the same thing there. The portal has no box to type in, so the record notes that the appeal was accepted with a warning and that it was resolved from the portal, rather than reading as though somebody left the reason empty.
It needs the same permission as Approve, because it also unbans. A moderator who cannot lift a ban cannot reach it under the gentler name.
v6.138.0: the "out of AI tokens" notice now says what used the most
Being told the allowance was gone did not tell you where it went. The notice said your server’s AI allowance had been used up and stopped there, so there was nothing to act on beyond buying more.
It now adds one sentence naming the biggest use, for example “The biggest share of that went on image generation”. The categories it can name are the ones you already think in: the assistant, image generation, moderation, translation and the like.
Biggest, not most. The line tells you which category came top. It does not claim that category accounted for most of your allowance, and it is not a full breakdown. Your portal dashboard is still the place for the figures side by side.
It appears on the notices that say the allowance is used up, not on the earlier heads-up that you are getting close to your limit. Some servers will not see the line at all, because this usage is not recorded category by category on every tier.
v6.137.0: your welcome and celebration messages have one length limit, not two
The two places you can write them disagreed on how long they could be. In Discord you could write up to 1,500 characters; the portal has always stopped at 1,000. Anything between the two could be written in Discord and then never saved from the portal: the save simply failed, without saying which message was too long or why.
Both now stop at 1,000 characters, so a message you can write in one place is a message you can save in the other.
If one of yours is already longer than 1,000 characters, opening it in Discord now shows it shortened to fit, and saving it that way keeps the shortened version. SA tells you the moment that happens, with the length it was and the limit it now has, so you can decide what to cut rather than discover the change later.
A message already under 1,000 characters is unaffected. It opens, saves and posts exactly as it did before, and there is no extra notice to read.
v6.136.0: a banned player can now find their appeal
The appeal link is on the “you are banned” screen. Whenever a banned player tries to rejoin your server, they now see why they were banned and a clickable link to appeal.
Previously that link only appeared once, on the screen shown at the exact moment of the ban, so anyone who closed the game never saw it again.
Bans made on the server itself get an appeal too. A ban typed in game or from the console had none at all until now, because the link used to be created only when Server Assistant carried the ban out.
It works for older bans, not only new ones, because the screen is shown every time they try to come back.
Needs plugin v0.30.0, which servers on auto-update get without doing anything. A kick still has no appeal, as before: a kick is temporary and the player can simply reconnect.
v6.135.0: one click links a player's Discord and Minecraft accounts
Linking used to mean typing a code in game, which almost nobody did. Most players therefore had no linked account, so anything SA recorded about them in Minecraft had nowhere to go on the Discord side.
Now the Discord link in your join notice does both jobs. A player clicks it once, approves on Discord’s own screen, and lands in your Discord with their accounts connected. No code, no second step.
What that gets you. Warnings and punishments from Minecraft land on that member’s
record automatically, so /warnings shows one history instead of two halves.
The player chooses. Nothing is linked until they approve it on Discord, and the chat line tells them what the click does before they click it.
Nothing to set up beyond the Discord link you already added in /mcdc. If anything
goes wrong the link simply opens your Discord, exactly as it did before.
v6.134.0: bans and kicks made on the server itself no longer go unnoticed
Server Assistant only knew about punishments it carried out. If a player was banned or kicked from your Minecraft server directly, by an operator in game, from the console, or by another plugin, none of it reached Discord. No staff-chat notice, and nothing recorded against the player.
Those now show up. SA posts them to your staff chat with who did it and why, and adds
them to the player’s /warnings history, so your record of someone is complete no matter
which tool did the punishing. Kicks are included as well as bans.
Your own SA actions are not reported twice. SA identifies its own bans from the ban record itself, so nothing is announced or filed a second time.
Needs plugin v0.29.0, which servers on auto-update get without doing anything.
One thing still to come: a player banned this way does not yet get an appeal link, because the ban screen has already been shown by the time SA hears about it. That is being added to the “you are banned” screen a player sees when they try to rejoin.
v6.133.0: Kick in Minecraft is now Kick and Warn
Your reason reaches the player. Kicking someone from a flagged-chat card used to boot them with nothing to learn from. The reason you type is now shown to them on the kick screen as a warning: “Warning: <your reason> (this has been added to your record)”.
And it goes on their record. The warning appears in /warnings next to that member’s
Discord warnings, as one list, tagged ⛏️ Minecraft so you can see where each one came
from. Somebody warned twice in chat and once in game has been warned three times.
Players who have not linked an account still build a history. The warning is held
against their Minecraft account, and joins their record automatically the first time you
open /warnings after they link. Nothing is lost in the meantime, and you do not have to
do anything to make the merge happen.
Linked players are told in Discord as well, the same way a /warn tells them, so the
warning does not disappear when they close the game.
Ban is unchanged. A ban is not a warning, and it still carries its appeal link.
No plugin update needed, and nothing new is shared with other servers: in-game moderation stays on your server.
v6.132.0: Minecraft moderation cards can be handled from your portal
The buttons were there and they did not work. A flagged in-game message and a Minecraft ban appeal both appear in your portal’s Needs input strip, each with its buttons. Pressing one did nothing: the action was never wired up on the portal side, so it failed quietly and the card stayed put. Kick, Ban, Dismiss, Approve and Deny now all do the same thing from the portal as they do from Discord.
If you approved a Minecraft ban appeal from the portal, it did not go through. That is the one worth acting on. The card would clear and the player stayed banned. Approve it again and the unban is queued in game.
Each button now checks its own permission. A moderator who can kick but not ban could previously press Ban on a portal card, because the card carried a single permission level for all of its buttons. Each action is now checked on its own, matching how the Discord buttons have always behaved.
Portal actions are recorded like Discord ones, in your log channel and your audit trail, named to the staff member who took them.
Your Discord cards were never affected and worked throughout.
v6.131.0: "out of AI tokens" is one line in Minecraft, and its link works
A four-paragraph notice was being printed into Minecraft chat. When a server’s AI allowance ran out, the full Discord notice went in game too: the figures, the refresh date, the upgrade pitch and the purchase routes, all over the top of whatever players were talking about. In game it now says one line, in the assistant’s own voice: “My battery is flat rn but I’ll be back on [date], or charge me up now [here]”.
[here] opens your portal, so any member can top the server up on the spot. On plugin v0.28.0 or newer it is a clickable link in chat.
Discord is unchanged. The full notice, with your figures, your refresh date and both purchase routes, still arrives in Discord exactly as before. Only the Minecraft line got shorter.
No date is invented. A free trial is one-time, and the free-model ceiling has no billing date, so on those the line simply leaves out the “back on” part.
v6.130.0: hand every player who joins your Minecraft server a clickable Discord invite
Your Discord invite, in front of the people who are not in it yet. /mcdc has a new
🔗 Discord link button next to Join notice. Put your invite in it, and every player
who joins your Minecraft server gets it as a link they can click, sent just to them, a
moment after the join notice.
It goes out on every join, not only the first one. That is deliberate, and it is the difference between this and the First join welcome added in the previous release. The regular who has played for months and still is not in your Discord is exactly the person this is for, and they have not been a new arrival for a long time.
It belongs to the join notice. Switch Join notice off and the link stops going out with it, because there is nothing left for it to sit alongside. If you save a link while the notice is off, Server Assistant tells you so there and then rather than leaving you to work it out from a quiet server.
Nothing changes until you add an address. The button is there on every linked server, but no player sees anything until staff put an invite in it, and the change is recorded in your log channel like any other setting.
v6.129.0: welcome a player in Minecraft chat the first time Server Assistant sees them join
A newcomer can now be greeted in game. When someone joins your Minecraft server for the first time, Server Assistant can post a welcome into the server’s chat. It goes to everyone playing, not privately to the person who just arrived, because the point is that the regulars notice a new face and get the chance to say hello back.
You write the wording. /mcdc has a new First join page with three things on it: a
switch, the message itself, and an optional link. Write [player] where you want the name
of the person who just joined, and [server] where you want your server’s name. Leave the
message box empty and a friendly built-in line is used instead, so flicking the switch on
its own is enough to get something sensible.
The link is optional and travels with the message. Add one and it arrives alongside the welcome, which makes it a good spot for your rules page, your map, or wherever else you would rather a newcomer looked first.
Off until you switch it on. Nothing appears on any server until staff turn it on deliberately, so no welcome shows up by surprise.
It greets the first join Server Assistant has seen, not a player’s first join ever. Worth knowing before you flick the switch, because it is the one part that surprises people. Server Assistant only knows about joins from the point this feature reaches you, so on the day you turn it on it has not seen any of your regulars yet. Each of them gets one welcome, on their next login, and then never again. After the first few days it is greeting genuine newcomers only. That is expected behaviour rather than a fault, and if you would rather your regulars did not get one, it is worth switching on at a quiet hour.
A player who changes their name is not welcomed a second time. Renaming is not treated as a new arrival.
Nothing to install. This is a change on Server Assistant’s side and needs no plugin update.
v6.128.0: the AI notices now tell a purchased token pack apart from your monthly allowance
If your server has bought an AI token pack, the notices about your AI allowance now keep the two figures straight. Nothing about how much AI you get has changed, only what these notices show. Where a notice says how much you had in total, it counts your allowance and any packs together. Where it says what arrives on your renewal date, it names your monthly allowance on its own, because that is what arrives then. A server holding a pack used to be quoted the wrong figure for its renewal.
Your pack balance gets its own line. When there is a pack balance, the notice says how much of the total came from packs, on a line of its own rather than tucked into the sentence about your renewal date.
Also fixed: /premium could show a Premium server another plan’s wording. Once a pack
pushed a server’s total past a certain size, its usage bar could read “unlimited (BYOK)”,
which describes a different plan entirely. It now shows your real usage against your real
total.
If you have never bought a pack, nothing changes. Every one of these messages reads exactly as it did before.
v6.127.0: the "out of AI tokens" notice now tells you how big your allowance was, and asks once instead of twice
The messages that tell you your server’s AI allowance is running low or has been used up have been rewritten. Nothing about how much AI you get has changed, only what these notices say.
“100% used” now has a number attached. The old wording gave you a percentage of something it never named, so there was no way to tell whether you had spent a little or a lot. Each notice now states the actual size of the allowance it is talking about, read from your server’s own plan. A server on the free trial sees the size of that one-time trial. A server on Premium sees its monthly figure and what arrives at the next refresh. On the rare occasion the figure genuinely cannot be read, the notice leaves it out rather than quoting one that might be wrong for your plan.
The reassurance comes first now. “Core moderation keeps running as normal”, covering AutoMod, anti-raid, warnings, your audit log and your slash commands, used to sit at the bottom underneath the purchase information. It has moved up, above anything about buying, because it is the line that actually answers the worry. The notices are shorter overall.
One offer, not the same one twice. Since v6.124.0 these notices had been making the
same purchase suggestion twice within a few lines, and naming /premium twice with it.
That doubling reached seven different notices, not only the one that was reported, so all
seven were fixed together. Each now tells you where to buy once.
The free trial is described as one-time. Two places implied the free allowance refreshes on a date. It does not, and they no longer say it does.
Servers using their own AI key get none of these notices. A server on its own key has no allowance from us to run out, so a notice about one was wrong in every respect, including the size it quoted and the claim that more would arrive later. Those servers are no longer sent it.
v6.126.0: welcome every new member in a channel you pick, and tell your staff each time someone arrives
Two new things you can switch on, both off until you do, and both set up in one place:
/settings → Members → New Members → Welcome & celebration.
A public welcome, in your own words. Pick the channel it lands in, write the message
once, and every new member gets it there. [usermention], [username], [servername]
and [membercount] fill themselves in for each person, exactly as they do in your
onboarding DM, so one piece of writing covers everyone.
If you have not picked a channel, nothing is posted. There is no guessed fallback, and that is deliberate: a message you wrote for the public, landing in a channel we chose for you, could put it in front of the wrong people. The settings page warns you when the welcome is switched on but has nowhere to go.
A celebration for your staff, for every arrival. A short line as each person joins, so nobody has to watch the member list to notice a new face worth greeting. It goes to your staff chat unless you point it somewhere else, and you can keep the built-in wording or write your own.
Neither message fires for an arrival still under review. No welcome and no celebration during a raid, for anyone verification is holding at the door, or for an account the alt detector flagged for a closer look. Publicly celebrating an account your server has just quarantined tells that account it got in, and tells your staff the opposite of the alert sitting right next to it.
A rush of joins cannot bury your staff chat. After five celebrations in a minute the individual lines stop, and the rest of the burst is reported moments later as a single “N more members joined” line. The per-member wording is lost for those joins, but the count never is, so you always see how many people actually arrived.
Premium: let SAi say it in its own voice. Switch on the SAi variation and your welcome is retold in your assistant’s persona, so each new member gets a slightly different greeting instead of the same line every time. Your own wording is always the fallback: if the AI is unavailable, out of allowance, or comes back with nothing usable, the message you wrote is posted exactly as you wrote it. A new member never sees a blank or half-finished welcome. The switch saves on any plan and takes effect on Premium.
Nothing changes until you turn it on. Both features start off, so no existing server
begins posting anything on its own. Every change here is recorded in your log channel
like any other setting, and your existing /onboarding welcome DM is untouched and keeps
working alongside all of this.
v6.125.0: your weekly Pulse now always shows what ThreatNet did across the whole network, not only what your server caught
The network figures now appear on every Pulse. The ThreatNet section of your weekly Pulse starts with your own server, as it always has, and the fleet-wide totals now sit underneath it every week without exception. They used to be hidden whenever those totals were zero, which meant a server that caught nothing saw no sign the protection was working at all. A quiet week on your server is not a quiet network, and the digest now says so.
Every figure states the period it covers, because they genuinely differ. Messages scanned is the last 7 days. Flagged actors and blocked scam images are all-time totals across the network. The shared blocklist size is where it stands right now. The label goes on each line rather than on the section, so an all-time number is never read as a weekly one.
The “messages scanned” line only appears once there is a full week behind it. It is counted from the moment this update lands, and a partial week is never shown under a 7-day label, so expect that one line to turn up seven days after the update reaches you. Nothing is missing in the meantime.
When the figures cannot be read, it says so. If the totals are genuinely unavailable the section tells you that instead of printing zeros, since a row of zeros would look like an idle network rather than a missing reading.
On the blocklist figure. ThreatNet never stores scam images. It keeps a perceptual fingerprint of each one, which is enough to recognise the same image turning up elsewhere and nothing more, so that line counts fingerprints on the shared blocklist.
v6.124.0: buy an AI token pack from your portal, and every "out of tokens" notice now says where to get more
Token packs are now on the web portal too. You can buy an AI token pack from your
portal as well as from /premium in Discord. Both routes work, so use whichever suits
you. Nothing about the Discord buttons has changed, the portal is simply a second way in.
Any member can buy one, not just staff. The tokens land on your server’s shared balance rather than on the account of whoever paid, so if the server runs dry in the middle of a conversation, the person who noticed can top it back up instead of hunting down an admin first. A pack never expires, so anything you do not use this month is still there next month.
Every “you are out of AI tokens” message now answers both questions at once: when
your allowance comes back, and where to get more in the meantime. There are several
places you can meet that message, in a reply from @sai, in a heads-up to your staff
channel as the allowance runs low, or when /imagine has nothing left to draw with, and
which half of the answer you got used to depend on which one you happened to hit. They
all say both now.
The free 150K trial is one-time, and the notices now say so. It is a lifetime trial rather than a monthly allowance, and the messages that went quiet on the subject used to leave you waiting for a refresh date that was never coming. They now tell you plainly that the trial does not refresh, and point you at a pack if you want to keep going. Plans that genuinely do refresh each month still name the date they always did, worded exactly as before.
Nothing changes if you bring your own AI key. You pay your own provider directly, so there is no allowance from us to run out of and nothing for us to sell you a top-up for. You are never shown a token pack.
v6.123.0: reacting to one of @sai's messages no longer gets a reply
What was wrong. Replying to something @sai posted with just an emoji, a sticker or a screenshot, and no words, got you a full answer back. Worse, the answer could be about something you had never said: with no question to work from, @sai fell back on the recent conversation in that channel and answered that instead.
One server saw it at its worst. A staff member reacted to a wellbeing check-in card with a single heart, and got a cheerful reply about picking a personality for their bot. It was not about the card, but it appeared directly underneath it, which is not what anyone wants to see under a message about a player’s welfare.
What changed. A message with no words in it no longer reaches @sai at all. Reacting to one of its cards now produces nothing: no answer, and no “thinking” reaction either. A reaction is not a question, so there is nothing to reply to.
Real questions are untouched. A screenshot posted with a question still gets an answer. Short follow-ups like “why?” or “in mc” still work, because @sai remembers the thread they belong to. And @sai still answers a plain mention of it, since pinging it by name is asking for its attention in a way that reacting is not.
v6.122.0: @sai's limit is now per person rather than per server
What was wrong. Running out of @sai questions was a shared experience. One busy member could use up the allowance and everyone else on the server found the assistant unavailable, through no fault of their own. The limit was attached to the server, not to the person asking.
What changed. On the free plan, each person now gets 6 questions per hour, and running out affects only them. The hour is a rolling one: your oldest question ages out sixty minutes after you asked it, rather than everyone’s allowance resetting together on the clock. Ask again once you are out and @sai tells you when your next question is available, privately.
Premium is unlimited, and so is bring-your-own-key. If you supply your own AI key you are paying your provider directly per question, so a queue on top of that would only be charging you to wait.
What is not affected. Staff moderation is never throttled. Asking @sai a question and asking Server Assistant to take a moderation action are different paths, and only the first one counts against the allowance, so a moderator mid-incident is never told to wait. The safety response to a message suggesting self-harm is also never limited and never counts against your hour.
A note on Minecraft. @sai in game is a premium feature, and premium is unlimited, so this allowance does not change anything in Minecraft today. It applies to @sai in Discord. If your account is linked, the two surfaces share one allowance, so the limit stays per person if @sai ever opens to free servers in game.
v6.121.0: your security settings, and your Minecraft bridge credentials, are now on the record
What was missing. v6.118.0 started posting a Setting changed entry to your log channel when someone changed an @sai Studio setting or one of the bridge controls. It left two gaps open, and this release closes both of them.
The security-relevant /settings controls are now recorded. Changing ThreatNet
auto-protect or its threshold, any of the anti-nuke switches, the scam-image controls, the
channel allowlist, AutoMod’s AI review and its threshold, alt detection, the anti-raid
thresholds, any Privacy panel toggle, the auto-role new members get on join, or any part of
the verification gate (the verified role, the mode, self-serve, and the risk thresholds) now
posts a line naming who changed it and what it changed to. How much detail your log
channel shows is itself one of those settings, so turning the record down is now recorded
too.
Linking a Minecraft server, unlinking it, and regenerating its bridge token were previously recorded nowhere at all. Not in your log channel, not in the audit trail, not anywhere else. Those are the three highest-value actions on the whole bridge: connecting a server, cutting it off, and minting a new credential for it. All three now leave an entry naming who did it.
A credential is handled more carefully than anything else, and is never republished. Free-text boxes such as Attitude have been logged by shape since v6.118.0, for example “attitude set (63 characters)”. A token does not get even that much: the entry says only that a token was issued, replaced or revoked, because a character count of a fixed-shape credential tells a reader something about the credential and nothing useful about the change.
Regenerating a token writes two entries, not one. The old token stops working the moment it is revoked, whether or not the new one is minted successfully, so the revocation is recorded in its own right rather than only as part of a rotation that went to plan.
How this sits with log verbosity. On errors only, these entries are hidden. On dangerous only, they are shown: who changed your verified role, your auto-role, an anti-nuke switch or your bridge credentials is exactly what a dangerous-only watcher is watching for.
Not everything is covered yet. Cosmetic and notification preferences (branding and the white-label wizard, emotes, notification toggles, the welcome emoji, the default timezone, the Reception banner, the knowledge channel list and the leveling announcement) still post nothing. They are on the list.
Nothing to install. This is a change on Server Assistant’s side, and no plugin update is needed.
v6.120.0: the Greeting box in @sai Studio now says what it is
Greeting sat unlabelled between Tone · how it talks and Attitude · who it is, and the word is ambiguous on a product that also has a Discord welcome and a Minecraft join notice. It is neither of those. It now reads Greeting · its opening line: the line @sai opens with on its first reply in a conversation, up to 200 characters.
It now points at where to set it, too. Greeting is the only field on that panel with no button of its own, so the value carries ✏️ Identity, the button whose box holds it, next to the assistant’s name.
Wording only. The greeting itself is unchanged, and there is nothing to re-save or install.
v6.119.0: the Attitude you gave @sai now actually changes how it talks
What was wrong. v6.117.0 added the 🎭 Attitude box to @sai Studio. If you filled it in, it saved correctly and the panel showed it back to you, but the replies in game sounded exactly as they had before. A gruff dwarven smith and an empty box produced the same flat assistant voice.
Why. Your description was reaching @sai intact every time. The instructions around it simply never asked it to speak that way, they only set out what the description was not allowed to do. On top of that, @sai is told to keep its replies short and leave out anything inessential, and nothing marked the voice as exempt from that. Under a short reply budget a personality reads like an optional extra, so it was the first thing dropped.
What changed. @sai is now told plainly to adopt the voice in every reply, including one-liners, refusals and “I don’t know” answers. Being brief is no longer a reason to drop it: the voice is how it spends the words it has, not extra words on top of them. Wording only, and nothing about the Attitude box itself has changed. If you already set one, it starts working with this release and there is nothing to re-save.
Every safety rule still outranks your description completely, exactly as before. @sai still refuses any request to change ranks, roles or permissions and flags it to your staff, still answers only as the assistant you named and never claims to be anything else, still will not speculate or invent facts, and still keeps its short plain-text replies and its length limit. Nothing about what @sai is allowed to do has moved. The only thing that changed is whether the voice you wrote actually comes through.
Nothing to install. This is a change on Server Assistant’s side. No plugin update is needed.
v6.118.0: settings changes now show up in your log channel
What was wrong. When someone changed an @sai Studio setting (access, tone, attitude, identity, knowledge pack, website, the Companion switches) or one of the Discord-side AI settings, the change was recorded, but nowhere you could read it. Nothing was posted to your server’s Discord log channel, which is where server managers actually look.
What changed. Each of those changes now posts a Setting changed entry to your log channel: who made it, which setting, and what it changed to. A change that changes nothing posts nothing, so re-saving a panel you did not touch stays quiet.
Your own writing is never republished. For the free-text boxes (attitude, knowledge pack, greeting, website) the entry shows only the shape of the change, for example “attitude set (63 characters)”. The text itself is never posted. Those boxes can hold notes you wrote for your own server, and a log channel is a wider audience than the person who wrote them.
A set of bridge controls is now recorded too, and several of them were not recorded anywhere before. In-game enforcement (the toggle that puts Kick and Ban buttons on Minecraft alerts for your staff), the rank-sync master switch, role-to-rank mappings added and removed, the server-event and reaction relays, the online-count channel topic, health alerts, and the in-game join notice and its text. Role-to-rank mapping is the list that decides which Discord role grants which in-game rank, so a record of who changed it is worth having.
How this sits with log verbosity. On errors only, these entries are hidden. On dangerous only, they are shown: changing what your assistant is told, or which role grants which in-game rank, is exactly what that setting is watching for.
Nothing to install. This is a change on Server Assistant’s side. No plugin update is needed.
v6.117.0: give your in-game assistant a personality, and "In-character" finally has a character to stay in
A new Attitude field in @sai Studio. /mcdc → 🤖 @sai Studio now has an
🎭 Attitude box where you write, in your own words, who your in-game assistant is: a
gruff dwarven smith, a patient tour guide, a deadpan librarian. Up to 240 characters. It
colours how @sai speaks wherever it answers, including the in-world companion.
It changes the voice, never the behaviour. Nothing you write in the box can change what @sai does. It still answers under the name you gave it and never as anything else, keeps its short plain-text replies, refuses any request to change ranks, roles or permissions and flags that to your staff, and will not guess, invent facts, or misstate where an answer came from. Attitude is flavour, never permission.
“In-character” now points at something. That tone option used to tell @sai to stay in character for your server’s theme, and no theme setting exists anywhere in the product, so it was asking for a character nobody had written. It now means “stay in the character you described in Attitude”. If Attitude is empty, In-character behaves exactly like Friendly, so nobody gets a worse assistant for picking it.
Tone is how it talks. Attitude is who it is. They work together, so a brisk dwarven smith and a brisk cheerful helper are both still brisk.
Nothing to install. This is a change on Server Assistant’s side. No plugin update is needed.
v6.116.0: the Double-XP suggestion now waits two weeks before deciding your server is quiet
New servers were being told they looked quiet, days after adding the Bot. The suggestion to run a Double-XP event is meant for a server that has genuinely gone still. It was arriving almost immediately after setup instead, which is a poor first impression and, for most of those servers, simply wrong.
Why it happened. The check reads your last seven days of messages. On a server the Bot joined two days ago, five of those days are empty for the simple reason that it was not there for them. A perfectly busy server could come out under the quiet line because the window ran off the end of the Bot’s own history, not because anyone had stopped talking.
What changed. The Bot now watches for two weeks before making the suggestion at all: seven days for that window to be entirely its own, then another seven of real traffic to judge against. Everything else is the same. The suggestion still appears at most once a fortnight, and a server manager is still the only one who can start an event.
If your server really is quiet, you lose nothing. The suggestion arrives once there is enough history to say so honestly, and your staff were never prevented from running an event in the meantime.
v6.115.0: the opt-out wording was corrected on one more screen
A follow-on to v6.113.0. That release corrected a line saying opted-out members are
never automatically banned, in the /threatnet autoban status reply and at the foot of
the ThreatNet settings panel. A third screen carried the same line and was missed: the
confirmation you see at the moment you switch auto-protect on.
That is the worst of the three places to overstate it, because it is exactly when you are deciding. It now matches the other two and the Privacy Policy: opted-out members are not auto-banned, apart from the most serious corroborated cases covered by a safety exception.
Wording only. How auto-protect behaves is unchanged by this release.
v6.114.0: only a person's decision reaches the threat network now, plus an install notice and a tighter safety exception
Three things the Privacy Policy already promised, now true in the product. A review compared what the policy says against what the code does and found three gaps. All three are closed by changing the product rather than by softening the wording.
Automatic actions no longer report to the cross-server network. The policy has always said the line is who made the decision, not which feature a ban came from. In practice only automatic bans at the moment someone joined were held back. AutoMod’s own automatic warnings, its kick and ban escalations, and automatic scam-image removals were all still reported across servers with nobody having decided anything. Two servers whose AutoMod independently warned the same account were, between them, building the corroborated record a third server’s auto-protect would then act on. That is now closed: only an action a human took is shared.
Expect your Threat Score views to look quieter, and that is the point. The automatic warning fired per message rather than per moderator decision, so it was the large majority of everything the network carried. Records will be sparser and skew less severe, and auto-protect will trigger less often as a result. What remains is human judgement, which is what makes corroboration across servers mean anything. Nothing else changes: your staff alerts, your own server’s records, mod-log entries, deletions, timeouts and ban appeals all behave exactly as before.
A new server now gets a notice when the Bot is added. The policy said we deliver one in Discord on install. We did not; an older release removed the introduction posts as clutter and the disclosure went with them. There is now a single short message covering the cross-server network, that servers take part as core functionality, that individuals can opt out for themselves in the web portal, and where to read the full policy. One message, not a return of the old multi-post intro.
The safety exception is now the operator’s alone. This is the narrow rule that keeps the most serious corroborated records visible even when someone has opted out. The policy describes it as ours to apply and to document. In fact any server administrator could set it on any user. Only the operator can now, and asking the Bot for it is not a route to it.
v6.113.0: auto-protect now describes its opt-out rule accurately
What the bot used to tell you. Two places said that anyone who had opted out of the
cross-server network would never be automatically actioned: the /threatnet autoban
status reply, and the footer of the ThreatNet settings panel. Both appear exactly where
an admin decides whether to switch auto-protect on, which is the worst place to be
imprecise.
Why it was wrong. Opting out does normally hide someone’s record from auto-protect. But there is a narrow and deliberate exception: where a safety exception covers the most serious, corroborated cases, that record stays visible to the network and an auto-protect ban can still follow. That exception has always been set out in the Privacy Policy and the Terms. The bot’s own wording simply did not mention it, so it read as an absolute promise that the product was never in a position to keep.
Worth knowing alongside it. Alt-guard, the separate system that bans a joining account matching someone your server already banned, is its own feature with its own evidence. It does not consult the cross-server opt-out at all, so an opt-out has no bearing on whether it acts.
What changed. Only the wording. It now states the real rule: opting out hides a record from auto-protect, apart from the most serious corroborated cases covered by a safety exception. How auto-protect actually behaves is unchanged by this release.
v6.112.0: two automatic ban systems stopped feeding each other, and auto-protect has a floor again
Two automatic bans, and one was quietly building the case for the other. ThreatNet auto-protect bans a joining account when its cross-server risk record reaches a level your server chooses. Alt-guard bans a joining account when it looks like someone your own server already banned. Separate features, separate evidence. But an alt-guard automatic ban used to be reported to the cross-server network in exactly the same way as a ban one of your staff had decided on.
That closed a loop nobody intended. Two servers auto-banning the same account off one shared profile picture could, between them, manufacture the corroborated record that a third server’s auto-protect then acts on. Automated action was producing the evidence for further automated action, and nothing further down the line could tell any of it apart from human judgement.
Alt-guard automatic bans are now withheld from the network. Only the report to the network is withheld. The staff alert still fires, your server’s own repeat-offender record still notes the ban, and the ban-appeal DM still goes out. A ban your staff decide on is reported exactly as it always was. The feedback loop was the defect, not the ban.
Auto-protect’s threshold has a floor again, and it is Elevated. A server could previously set the threshold as low as Low, where a single record from a single server is enough to ban an account on sight. At that setting corroboration, the thing that is meant to make a cross-server record worth acting on at all, did no work. Low is gone. Elevated is now as low as the threshold goes: still broader than the default High, but it will not act on one server’s record alone.
If your server was set to Low, it is now Elevated, and that narrows what your server was doing. We would rather say that plainly than let an admin find it by accident. Auto-protect stays on and keeps banning; it now wants more than a lone record before it does. There is nothing you need to change, but if you chose Low deliberately, this is a change to how your server behaves. High remains the default and the safest setting.
v6.111.0: the Minecraft health alerts now have an off switch in /mcdc
Three notices, one switch. “Minecraft server offline”, “server recovered” and “TPS below
12” are the server-health notices Server Assistant posts to your staff chat. They now sit
behind a single Health alerts toggle on the first page of /mcdc, next to Topic
count.
Why you might want it off. If your Minecraft server restarts on a schedule, the offline notice and the recovered notice that follows it are staff chat reporting something you arranged yourself, every night. That is noise, and noise is what buries the alert that actually matters. Turn Health alerts off and all three stop.
On by default, and staying that way. Nothing changes unless you change it. Nobody has to opt in to being told their server is down: the switch is there so a channel that has got noisy can go quiet.
One notice deliberately ignores this setting. The bridge-offline notice, the one telling you that in-game moderation has stopped running, still arrives with Health alerts off. Choosing to hear less about routine server health is not the same as choosing not to be told that the filtering on your server has stopped, so the two are kept apart on purpose.
v6.108.0 + v6.109.0: @sai reads the stats box on a wiki page, and only gives a number it can stand behind
Ask how much health a creeper has and the number is now in the answer. Health, damage, hitbox size, durability: those live in the stats box at the top of a wiki article, not in the writing, so until now an answer depended on the number happening to turn up in a sentence somewhere. A creeper’s 20 health appears nowhere in the prose of its page.
The more useful half is what @sai refuses to answer.
- Where the wiki gives two different numbers for the same thing, you get neither as a flat answer. A wolf has 8 health wild and 40 tamed. A creeper is 1.7 blocks tall in Java and 1.8 in Bedrock. Picking one of those would be confidently wrong for half the people asking, so @sai says the page gives more than one instead of choosing.
- Where a value genuinely has two labelled sides, both are named. A diamond sword is 1561 uses in Java and 1562 in Bedrock, and you get both, each with its edition.
- Where the number is not actually written on the page, @sai says so rather than estimating.
Two honesty fixes came with it. The rule that stops @sai adding facts that were not on the page it read only applied when a page had been found. When a lookup came up empty, which is the common case, the rule was not there at all. It now applies either way. This is the other half of the fix for @sai describing villagers as living somewhere they do not.
@sai also stays consistent with what it already told you. It could reverse a correct answer later in the same conversation without anyone challenging it. If it does need to correct itself, it now says what changed.
v6.107.0: @sai no longer answers from the wrong wiki page when a common word appears in the question
“How far can copper golems detect chests” could get you an answer about chests. The word chest in the question was enough to land @sai on the page for Chest, and having found a page it stopped looking, so the search that would have turned up Copper Golem never ran. The reply came back as confidently as any other, citing the wrong page.
A thin match like that no longer ends the search. @sai keeps looking for the page the question is actually about. Questions that were already landing on the right page behave exactly as before, and nothing here changes an answer that was already right.
Ordinary word endings no longer lose the answer. Asking about oxidising wouldn’t match a section titled Oxidation, so the one section that answered the question was skipped. @sai now handles everyday English endings, so the question and the heading meet.
v6.106.0: @sai holds a correct answer when someone invents a source, and the permission alert now covers private questions
A player talked @sai out of a correct answer by making a source up. The question was asked in Minecraft, and @sai answered it correctly from a page it had looked up on the wiki. The player then said “the wiki says I need op”. That was not true, and they later admitted making it up. @sai took them at their word, said it had been wrong, and reversed an answer that was right.
@sai now remembers which page an answer came from. So when someone says a source says otherwise, it can tell the difference between a page it actually read and a claim about a page. If there is something real behind its answer it keeps it, names the page it used, and offers to check again.
A genuine correction still works. Tell it a recipe changed in a particular version, or tell it what you just saw in game, and it will look again and update. What it now declines is a bare “the wiki says otherwise” with nothing behind it.
When it hasn’t looked anything up, it stays open, exactly as before. It doesn’t start insisting it is right from memory, and it still won’t tell you something isn’t in the game.
Asking the private in-world companion for op now raises a staff alert too. Asking in
public chat always has. Asking privately raised nothing at all, so the one place nobody else
could see was also the one nobody was watching. The same check now also covers signs, books,
item names, name tags, /me emotes and private messages.
A correction to what the v6.100.0 notes told you. They said a request claiming someone had already approved it is raised most prominently of all. That was true of chat and not of the private companion. It is true now.
Still alert only. Server Assistant has never changed anyone’s permissions or ranks because they asked, and it never will. Nobody is punished for asking either: staff are simply told, and staff decide.
v6.104.0 + v6.105.0: link tokens our old setup instructions put into chat are replaced for you
Our own setup instructions used to tell you to type your bridge link token into in-game chat. That was wrong. A command typed in chat can be read by every other plugin running on the server, and it is written into your server log. Plugin v0.24.0 stopped accepting the command there. This release deals with the tokens that were already exposed by it.
Most servers are handled automatically, with nothing to do. If your Minecraft server is on plugin v0.25.0 or newer, its token is replaced for you over the encrypted connection the plugin already has. Nothing is typed anywhere, nothing is shown in Discord, and nothing reaches a log file. Your staff chat gets a short card confirming it is done and that no action is needed from you.
Your bridge does not go down while it happens. The old token keeps working until the new one is confirmed working, so there is no window where the bridge is broken.
Servers still on an older plugin cannot be done this way. Their staff chat gets a card saying so, with step by step instructions for doing it by hand. If an automatic attempt does not complete, that staff chat gets the manual instructions too.
This is a one off, not an ongoing rotation service. Once a server has been moved onto a token issued this way, it is not swapped again.
The setup code in the /mcdc panel is now single use and expires after 30 minutes. It used
to be presented as though it were permanent, which was wrong for a credential. The panel now
leads with the config.yml route rather than the command, because that route never puts the
code through a command at all, and there is a 🔄 Regenerate token button when you want a
fresh one.
If you have ever pasted your token into in-game chat and you are not covered by the automatic path above, regenerate it. That is the one thing in this release that needs anything from you.
This pairs with plugin v0.25.0. Auto-update will pick it up, or run /mcdc update in game.
v6.102.0 + v6.103.0: emotes, private messages and usernames are filtered too — and staff are told when in-game moderation stops
v6.101.0 covered signs, books, item names and mob name tags. It didn’t cover everything. That release was scoped from what someone reported; this one is scoped from actually working through every place a player can put text in front of another player. Three more, and the first is the widest of the lot:
/meemotes. They broadcast to everyone on the server, and they were never filtered at all — not masked, not flagged, not even carried to Discord. Anyone who knew about it had a clear line to the whole server.- Private messages (
/msg,/tell,/w) — where harassment goes the moment public chat is filtered, and where staff previously had no visibility whatsoever. - Usernames. An offensive name arrives with the player and is repeated every session. It can’t be masked — a name is an identity your server, Discord and your permissions plugin all key off — so it raises a staff alert on join and staff decide what to do.
And a gap in the last release, said plainly. Books were only checked once they were signed, which missed the simplest trick going: write it, never sign it, leave it in a chest for someone to read. Draft books are now checked as they’re written. The author keeps their own draft exactly as they typed it; the masking applies when the book leaves their hands.
That brings the total to eight places covered — chat, signs, books, item names, mob name
tags, /me emotes, usernames and private messages — all on the one AutoMod switch you already
have.
About private messages, stated plainly rather than buried. Every private message on a bridged server is sent to us and checked — all of them, not just the bad ones. There’s no way to know whether a message contains harassment without checking it, and the filter that can tell is the one on our side. No person reads a message that doesn’t match. The check is automated end to end; a message that matches nothing is deleted within about a day and leaves no record anywhere. Only a message that actually trips your filter reaches a human, and then only your own server’s staff. No AI provider is involved at any point. The full reasoning, the limits, and your right to object are in the Privacy Policy.
Every player joining is told, in game, that private messages are checked — and that notice is mandatory. A server owner can’t switch it off, reword it, or edit the clause out.
Staff are now told when in-game moderation stops running (v6.103.0). If a linked Minecraft server goes quiet — server down, plugin stopped, a setting wrong — nothing used to say so. Staff chat stayed silent and everyone carried on assuming the filter was still working, which is the worst way for a safety feature to fail. Staff chat now gets a plain “in-game moderation is NOT running” alert, with when the server was last seen and the handful of things worth checking, and a short confirmation when it comes back. It waits about 15 minutes first, so an ordinary restart doesn’t cry wolf, and it sends one alert per outage rather than repeating.
Two security changes on the plugin side. The relay address must now be https:// — a
server still set to a plaintext address is upgraded and retried automatically, and only if that
fails does the bridge stop sending, loudly rather than quietly carrying on in the clear. And
/mcdc link must now be run from the server console, not typed in chat. That was our own
setup instruction and it was wrong: a token typed into in-game chat can be read by every other
plugin on the server, and it lands in the server log.
If you have ever pasted your link token into in-game chat, regenerate it from the /mcdc
panel. It takes seconds, and it’s the one thing here that needs you to actually do something.
This needs the new plugin (v0.24.0). Auto-update will pick it up, or run /mcdc update in
game.
v6.101.0: signs, books, name tags and renamed items are filtered too
Chat has been filtered and masked for a long time. Every other place a player can type was not — so anyone who wanted their words in front of people simply stopped using chat. A sign at spawn, a signed book passed round, a name tag on a mob in a public farm, a renamed item in a shop: all durable, all public, and none of it filtered.
Four more surfaces are now covered — signs, signed books, mob name tags, and item renames at an anvil:
- Other players see the text masked, exactly as chat is masked — including the same handling of spaced-out and disguised spellings.
- Staff get an alert saying which surface it was, what was really written, and the coordinates — so they can walk straight to the sign instead of hunting for it.
- Nothing new to configure. It uses the word filter your server already has, and a server with chat relaying turned off gets none of it.
Only newly written text is checked. Signs, books and name tags already in your world before this update are never scanned — there is no retroactive sweep. The bypass is closed going forward; what’s already built stands until someone edits it.
Anvil renames are reported when the item is taken out, not while you type — so renaming something doesn’t spam staff with half-typed words.
This needs the new plugin (v0.23.0). Auto-update will pick it up, or run /mcdc update
in game.
v6.100.0: @sai links the right page, keeps up with the topic, and reads the room
A wiki link posted to Discord could point at a page the answer never used. The check that catches exactly this shipped a few versions ago, but it only ever ran on the reply shown in game — the copy posted to Discord went out unchecked. Players saw the results: an answer about permissions linked to a page about a YouTuber, and “what’s your source” linked to a page called Infinite Water Source. Both copies now go through the same check, so a link either supports the answer or isn’t shown at all.
Follow-up questions now track the most recent thing you asked. Ask about bees, then ask about redstone, then say “how do i harvest it tho” — and you’d get the bee answer back. A follow-up is now read against your latest topic, not an older one.
@sai no longer tells you off for asking something twice. Replies had started opening with “You already asked that!”. Asking the same thing again simply gets a normal answer.
Questions that sound like they’re about you rather than the game. “How do I kill myself
in Minecraft” is an ordinary question about the /kill command, and it still gets its
normal, direct answer — that hasn’t changed. When the same kind of phrasing turns up with
nothing marking it as being about the game, @sai doesn’t answer it as game mechanics: it
says so briefly and kindly, tells you how to get the game answer if that’s what you meant,
and quietly lets your staff team know so a human can check in. It is not treated as a
rule-break — no warning, no punishment, and nothing on anyone’s moderation record.
For server owners: requests to be given operator or staff now raise a staff alert. @sai has always refused them — that part never changed — but only blunt phrasings like “give me op” were being reported. Polite ones (“can I have operator”) and ones claiming prior approval (“a staff member said I can have op”) slipped through unflagged, so staff never heard about them. All of them are flagged now, and a request claiming someone already approved it is raised most prominently of all, since that’s the one worth verifying. Ordinary conversation that merely mentions staff is unaffected.
v6.99.0: @sai follows the conversation in Minecraft
A player asked “@ody hey how do i make a bee farm?”, got a good answer, then asked “@ody how do i harvest it tho” — and was told how to harvest wheat, carrots and potatoes. Every in-game question was answered on its own, so “it” had nothing to point at.
@sai now reads a follow-up in the light of your last few questions, the same way the Discord side already did. Ask about bees, then ask how to harvest it, and you get an answer about bees.
Your private Allay conversation and public chat stay separate. Something you ask the Allay companion privately never shapes an answer everyone else can read, and the other way round.
The memory is short. It’s held only while the bot is running, never saved, and forgotten after 10 minutes of quiet.
Typing casually no longer sends @sai to the wrong page. A trailing “tho”, “rn”, “lol” or “pls” was quietly wrecking the lookup: searching “diamond” found the Diamond page, but “diamond rn” found the Formatting codes page, and “nautilus tho” found nothing at all. Casual chat words are now ignored when @sai looks something up.
Asking about a “farm” now looks up the thing you’re farming. “bee farm” was matching crop-farming pages — which is exactly where that wheat answer came from. Ask about a bee farm and @sai looks up bees. Questions that really are about farming still work as before.
v6.98.0: @sai says when it's not sure, and stops making things up
A player asked whether piglins can barter the Soul Speed enchantment. @sai got the first half right — they barter enchanted iron boots — and then added that this was “the only way to get that enchantment without trading with villagers in ancient cities”. Ancient cities have no villagers, and two messages later @sai said so itself. One of the players put it plainly: “ody straight up lying”.
Two changes:
It stops adding extra claims. The page @sai had read said nothing about villagers or ancient cities — the invented part was welded onto an otherwise correct answer. It’s now told, in as many words, not to add specifics its source doesn’t support, and to watch for the phrasings where that creeps in (“the only way to…”, “you can also get it from…”).
When it isn’t sure, it says so — and shows you where it looked. Before, an unconfirmed answer came with a quiet “this may have changed in a newer version”, which reads like a confident answer with a footnote. Now you’ll get “Not sure, but…” — and, when it used a page, the [wiki] link to go and check for yourself. Previously unsure answers had no link at all, which left you with a hedge and nowhere to take it.
Also fixed: a correct answer about ancient cities was losing its [wiki] link because of how plurals were matched.
v6.97.0: @sai only links a wiki page when it actually used it
When @sai answers a Minecraft question it adds a [wiki] link to the page it read, so
you can check it. Sometimes that link pointed at a page the answer hadn’t come from — one
player asked what the chances were that another player would say something, @sai correctly
said it can’t predict that, and then linked the page about the /say command.
That link is a claim about where an answer came from, so a wrong one is worse than none: you click through, find nothing relevant, and stop trusting the links that are right. @sai now checks the finished answer against the page before linking it, and simply leaves the link off when it doesn’t line up.
Answers themselves are unchanged — this only affects whether a [wiki] link is shown. You’ll see slightly fewer links, and the ones you do see are ones the answer really used.
v6.96.0: @sai reads the real crafting grid
Asked how to craft a soul torch, @sai said the soul sand “replaces the coal at the bottom”. Wrong twice over: coal sits at the top of a torch recipe with the stick below it, and the soul soil is a third ingredient, not a swap. A player corrected it in chat.
@sai now reads the actual crafting grid from the wiki for “how do I make X” questions. Recipes live in tables, and tables were being stripped out before @sai ever saw them — so it was answering from memory and getting the layout wrong.
Positions come through too: what goes on top, in the middle and at the bottom, which ingredients can be swapped for which, and how many you get. Only recipe questions do the extra lookup, so nothing else got slower.
v6.95.0: the in-game [wiki] link stops appearing twice
@sai’s answers in Minecraft were ending with two [wiki] tags — one plain, one
clickable. @sai types the tag itself out of helpfulness, and the real link was then added
after it rather than replacing it.
Every reply now carries exactly one [wiki] link, however many tags end up in the
text. Replies already showing the double repair themselves, so you don’t need to do
anything.
v6.94.0: members can open more than one support ticket
Support tickets were limited to one open ticket per member. Someone with two unrelated problems had the second refused — so they either waited, or raised it inside the first ticket, which is harder for staff to follow, not easier.
Members can now hold several tickets open at once. No setup needed; this is the new default everywhere.
Servers that want a limit can set one. /tickets → Edit panel → Max open tickets
per member. Leave it blank for unlimited, or enter a number — set it to 1 to keep the
old behaviour exactly.
Deleted tickets no longer count against a member. If staff remove a ticket channel by hand, that ticket stops taking up a slot, so nobody is refused support because of a ticket that isn’t there any more.
v6.93.0: @sai stops saying "that isn't in the game"
Asked how long dried ghasts take to turn into happy ghasts, @sai replied that ghasts don’t have “dried” or “happy” variants and suggested you were thinking of a mod. They’re real — waterlog a dried ghast for about 20 minutes to get a ghastling, which grows into a happy ghast over another 20.
The right page was in the search results and lost to a shorter title. Both Ghast and Happy Ghast came back, and @sai took whichever ranked higher rather than whichever matched more of your question. Now the more specific page wins: if you name two words, a two-word page title beats a one-word one.
And a page not mentioning something is no longer treated as proof it doesn’t exist. @sai was reading the Ghast page, finding nothing about dried or happy variants, and concluding they aren’t real. It now understands that it’s reading part of one page — if the answer isn’t there, it says it couldn’t find it and points you at the wiki, rather than telling you the thing doesn’t exist.
v6.91.0 & v6.92.0: @sai finds the actual numbers on a wiki page
Asked “how far can copper golems detect chests”, @sai said they don’t detect chests from a distance — while reading the page that says they search a 65×17×65 area. It had the right page and was picking the wrong paragraphs out of it.
Questions asking for a figure now prefer the paragraphs that contain one. A measurement like “65×17×65” outranks an unrelated number like “3 seconds”, “how far” matches the words a wiki actually uses (area, radius, within, centered), and those questions get more of the page to work with.
And @sai now uses the page’s own contents list. A wiki page’s sections — “Behavior”, “Chest interactions and item transportation” — are labelled by a person to say what each part covers, which beats guessing from the wording of your question. So when you ask “how far can they detect chests” and the page says “search … in a cubic area”, the section heading connects the two. No extra lookups, so it’s no slower.
v6.90.0: @sai reads the part of the page that answers you
@sai was only reading each wiki page’s opening summary. Asked “how far can copper golems detect chests” it found the right page and had to admit the detail wasn’t in what it read — because the detection range is further down the page, under behaviour, not in the intro.
It now picks out the paragraphs that match your question. Ranges, durations, drop chances, spawn conditions — the specifics that live in the middle of an article — actually reach the answer now. The page’s opening definition is always kept as well, so a figure arrives with the context that makes sense of it.
Only when it needs to. A question the summary already answers behaves exactly as before and is just as quick. And if the deeper read fails for any reason, @sai falls back to precisely what it did previously.
v6.89.0: @sai searches properly now — and finds the right page
@sai now uses a real search engine to find the right wiki page. The wiki’s own search was the weak link: asked “how far can copper golems detect chests” it never returned the Copper Golem page at all — so @sai had nothing useful to read and fell back to guessing.
The answer still comes from the Minecraft wiki. The search engine only decides which page to read, and it’s restricted to minecraft.wiki, so the source is unchanged — it’s just far better at finding the right article from a normal question.
It only searches when it needs to. If the wiki’s own search already found the right page, nothing extra happens. The search engine is there for the questions that were previously failing, which also keeps it well within its free allowance.
If the search is ever unavailable, @sai simply falls back to what it did before — nothing gets worse.
v6.88.0: @sai's in-game replies finish their sentences
Asked “what’s the thing that sorts my items”, @sai gave a long answer that ran past its first sentence into a second thought and ended in a “…”. Replies should end properly.
@sai now aims much shorter — one or two complete sentences — and is told plainly that finishing its sentence matters more than saying everything, so it answers the question and stops instead of listing every alternative.
And when a reply does have to be shortened, it now ends properly. Previously, cutting at the end of a sentence removed the full stop and put a “…” in its place — so an answer that had finished cleanly still looked cut off. A shortened reply now keeps its full stop, and the “…” only appears when something genuinely was cut mid-sentence.
v6.87.0: @sai stops holding on to a wiki page it wasn't sure about
When @sai looks something up, it remembers which wiki page it used so the next player asking the same thing gets an instant answer. That was sensible for a page it had confirmed — but it was doing the same for a page it had only guessed at, and holding onto a guess for a whole day meant one wrong lookup kept being wrong all day, on every server that asked the same way.
A guess is now forgotten within minutes, so it gets another go. A confirmed page is still remembered for a day, because wiki articles don’t change that fast.
And there’s now a way to clear it deliberately. If @sai ever cites a page that’s plainly wrong, switching the wiki lookup off and back on wipes everything it remembered — you no longer have to wait it out.
To be clear about what was never remembered: @sai’s actual answer. Only which page it read. Every player gets a fresh reply.
v6.86.0: the [wiki] link works in Minecraft too
The [wiki] source on @sai’s in-game answers is now a real clickable link — click it in
chat and the page opens in your browser; hover it to see the page name and full address.
Previously Minecraft chat could only show the citation as text, because chat lines have no links. The address now travels alongside the message rather than inside it, which is what lets the plugin turn it into something you can actually click — and keeps the line short.
Needs MCDC plugin v0.18.0 on your Minecraft server (/mcdc update, or wait for the
automatic update). Until then the citation shows as plain text, exactly as before.
v6.85.0: @sai stops telling players something isn't in the game
A player asked how far copper golems detect chests and was told they “didn’t make it into the game” — on a server that has them. @sai’s Minecraft knowledge comes from training data with a cutoff, so anything added to the game since then looks fictional to it.
It now works the other way round: if a player names a mob, item or block @sai doesn’t recognise, it assumes the player is right and says it isn’t familiar with it yet, pointing them at the wiki or staff. It will no longer tell anyone something was cancelled, lost a mob vote, or is modded-only.
It also stops reading changelog pages. The wiki lookup had handed it “Bedrock Edition Preview 1.21.110.24” — a version changelog, which answers nothing about how anything works. Those are now filtered out properly. And plurals finally reach the right article: “copper golems” finds the Copper Golem page, which was sitting in the search results the whole time.
When it isn’t sure it found the right page, @sai now keeps its “this may have changed in your version” caution and adds no source link, instead of presenting a guess as fact.
The [wiki] link is shorter too. In game it shows the page name rather than a long
address (Minecraft chat can’t open links anyway); in Discord it’s a compact clickable
[wiki].
v6.84.0: @sai shows you where its Minecraft answers come from
Every in-game answer now ends with [wiki] and a link to the minecraft.wiki page @sai
read to answer you. Ask about nautilus and you get the Nautilus page, so you can go and
read the rest yourself instead of taking one line on trust.
It also makes a bad answer obvious. @sai picks the best match out of several wiki search results, and it can occasionally pick the wrong one. Before, there was no way to tell that from the outside — the answer just looked slightly off. Now you can see the page it used and know instantly.
In Discord the link is clickable, with no large preview card cluttering the channel. In game it’s shown as text you can read (Minecraft chat won’t open it for you). Refusals and error notices don’t get a source link — only actual advice does, because “I’m resting for a bit” didn’t come from the wiki.
Controlled by the same wiki-lookup switch as the lookup itself, so turning that off removes the links too. No plugin update needed.
v6.83.2: What's New is current again — and stops claiming you're up to date
/whatsnew was twelve releases behind. Its newest item was v6.71.0 while the bot was
on v6.83.1, so months of work never appeared there. All thirteen missing releases —
v6.72.0 through v6.83.1 — have now been written up.
Worse, it told you that stale list was current. Because it marks you as having seen whatever version you’re running, and that version had no entry of its own, it concluded there was nothing new and showed “✅ You’re up to date” above months-old news. It now compares version numbers, so a gap reports what you actually haven’t seen instead of a false all-clear.
Long release notes are also trimmed properly — on a word boundary rather than mid-sentence.
v6.83.1: @sai now finds the right wiki page for your question
v6.82.0 taught @sai to read the Minecraft wiki. It turned out it couldn’t reach the wiki at all — and once that was fixed, it was looking up the wrong page.
Asked “what does a nautilus eat”, it was searching that whole sentence, and the wiki answered with a version changelog page rather than the article about nautilus. @sai read that page, found nothing about nautilus in it, and fell back to guessing — which looked exactly like the original problem.
It now searches for what you’re actually asking about. The question wording is stripped down to the thing itself — “how do I craft a hopper” becomes “hopper” — plurals are matched to the singular article name, and version/snapshot pages are skipped since they never answer a gameplay question. If one of the results is the thing you named, that page wins.
Tested against the live wiki across common questions — nautilus, hopper, beacon, creeper, axolotl, diamond, nether portal, netherite — all now find the right article.
No plugin update needed.
v6.83.0: AFK players stop earning Minecraft playtime XP
Server Assistant pays XP for every minute a linked player spends on your Minecraft server. Until now it couldn’t tell the difference between playing and being logged in — so an AFK pool or an auto-fishing rig earned exactly as much as someone actually playing, all night, without touching the keyboard.
Idle players now stop earning. After five minutes with no activity, playtime XP pauses until they do something. Everything else is unaffected — they stay connected, chat still works, nothing is kicked or interrupted. Only the XP pauses.
What counts as being active: moving from one block to another, breaking or placing a block, interacting, clicking an inventory, chatting, or running a command. Turning your head or drifting in an AFK pool deliberately doesn’t count — that’s the whole point.
Coming back is instant. The moment an idle player does anything, they’re earning again on the very next minute — no waiting to be counted again.
The five minutes is yours to change in the plugin’s afk-minutes setting. Raise it if
your server has legitimately slow activities, or AFK farms you want to reward.
Needs MCDC plugin v0.17.0. Until your server updates, playtime XP behaves exactly as before — nothing breaks, idle players simply keep earning.
Also fixed: /whatsnew wasn’t working. Running it returned “Something went wrong
running that command” — every time, for everyone. One release entry had grown eight
characters past a Discord size limit, and Discord rejects the whole message when any one
section is too long. It works again, and long entries are now trimmed neatly instead of
breaking the command.
You may notice /whatsnew is behind on recent releases — the list it reads from stopped
being updated a while back, which the broken command was hiding. We’re catching it up.
v6.82.0: @sai looks the answer up on the Minecraft wiki instead of remembering it
v6.81.0 stopped @sai giving confident answers about an old version of Minecraft. That fixed the wrong answer — it didn’t produce a right one. Asked “how do I tame a nautilus”, it went from confidently wrong to honestly unsure, which is better and still no help.
@sai now reads the Minecraft wiki before answering. Ask it a game question and it looks up the relevant page, then answers from that — treating the wiki as more reliable than its own training data. So it doesn’t just stop being wrong about nautilus; it tells you they can be tamed, saddled and ridden as an underwater mount.
Because it has actually checked, it also drops the “this may have changed in your version” caveat when the wiki answered the question.
If the wiki can’t be reached — it’s slow, or there’s simply no page for what was asked — @sai falls back to the careful, clearly-hedged answer from v6.81.0. It never fails silently or leaves a player waiting.
You can turn it off. If you’d rather @sai never make an outside lookup, the setting is there; leaving it on is the default.
No plugin update needed.
v6.81.0: @sai no longer gives confident answers about an old version of Minecraft
The problem. A player asked @sai how to tame a nautilus and got back “you can’t tame a nautilus — nautilus shells are items you find, not living mobs.” On that server’s version of Minecraft, you can. The answer was wrong, stated with total confidence, in public chat.
Why it happened. @sai’s general Minecraft knowledge comes from training data, which has a cutoff date. Your server doesn’t. Minecraft changes mobs, items and mechanics with every release, so an answer that was right when the assistant was trained quietly goes wrong the moment your server updates past that point — and the assistant has no way to know it has.
What’s changed. @sai is now told which version of Minecraft your server is actually running, and that its own knowledge might be older than that. It’s also no longer allowed to flatly tell a player something is impossible — “you can’t do that”, “that isn’t in the game” — from memory alone. That’s the kind of answer a new Minecraft release turns into a wrong one.
Ask it about something it thinks isn’t possible and it will now tell you what it knows, say it may have changed in the version you’re running, and point you at your staff or the in-game recipe book.
It hasn’t become vague. Crafting recipes, redstone, mob behaviour and command questions are answered as directly as before. The new caution applies only to claims about whether something exists or is possible — the questions where a Minecraft update actually changes the answer.
No plugin update needed.
v6.80.0: your Admins and Moderators can do more — and three toggles that never did anything are gone
Admin can now shape the server. Your Admin tier can now be asked to create, rename and
move channels, manage categories, unarchive threads, create invites, issue timeouts and
wipe messages. Several of these were gaps rather than decisions: archive was allowed but
unarchive wasn’t, and purge and prune were allowed but their synonym wipe wasn’t.
Moderator can now issue timeouts. timeout was in neither tier, even though mute and
unmute were in both — so nobody below the server owner could actually ask for a Discord
timeout. Moderators can now.
Admin still cannot delete or remove channels, and still cannot run setup. Both stay
owner-only on purpose.
This changes the defaults, not your settings. If you’ve already customised your role capabilities, nothing about your server changes. The wider lists are what newly-configured roles start with, and what the presets in the editor offer.
Three capabilities are gone from the editor: role, permission and webhook. They
appeared as toggles, but there was never a feature behind them — ticking one changed
nothing. Server Assistant will never change anyone’s roles or permissions because it was
asked to; that’s a standing security rule, not a setting you can switch. A request to do so
is now refused with a clear message pointing at Server Settings → Roles, and logged for
your staff.
And when a capability really is missing, the refusal now tells you where to fix it. The
“your role isn’t cleared to have me run that” message now names the path — /settings →
Role Tiers → Fine-tune → pick the role → add the action — and says plainly that
changing someone’s Discord permissions won’t grant a Server Assistant capability. They’re
separate systems, so handing a role Discord Administrator won’t help.
v6.79.0: @sai's answers now reach Minecraft, and answer to your own name
Two fixes for servers using the Minecraft bridge.
@sai’s answers now cross into the game. If someone asked @sai a question in your bridged Discord channel, players in Minecraft saw the question arrive but never the answer. Now the answer follows it across — shown under your assistant’s own name, so a renamed assistant stays renamed in game.
Your assistant answers to its own name in game. If you’ve renamed it in
@sai Studio, players can now summon it with @YourName in Minecraft chat instead of
having to type @sai. @sai, !sai and !ai all keep working, so nothing you’ve
already told your players stops being true.
One thing to bear in mind: if you name your assistant a common word, @that word will
start summoning it in chat.
v6.78.0: auto-protect and Active Threat Score are now full-Premium features
ThreatNet auto-protect and Active Threat Score have moved to the full Premium plan. They are no longer included with BYOK, which covers bringing your own AI key.
If your server is on BYOK and had either switched on, we’ve turned it off and posted a notice in your staff chat saying exactly what changed — rather than letting it stop working quietly. If you had auto-protect on, that notice says plainly that joins are no longer auto-banned, so nobody carries on assuming they’re screened.
The advisory ThreatNet flag stays free for every server, on every plan. Your staff still see the cross-server risk band on member profiles — it simply doesn’t act on its own unless you’re on full Premium.
Everything else on BYOK is unchanged, including unlimited /imagine with your own key.
v6.77.0: staff get told when their rank is waiting on an account link
If you use rank sync, giving someone a synced Discord role used to be silent to them — their in-game rank simply never appeared, which looks like something is broken.
Now they get a DM naming the rank that’s waiting, with the two steps to claim it:
run /link in Discord, then !link <code> in game.
If their DMs are closed, we say so in your staff chat and mention them, so someone can pass the message on rather than it vanishing.
A few deliberate limits: only gaining a role triggers it (never losing one), only people who haven’t linked get it, and it’s one message per person per day — so adding and removing a role can’t spam anyone.
Also fixed: /link and /unlink sometimes failed with an “Unknown interaction”
error when the server was busy. Both now respond straight away.
v6.76.1: @sai no longer refuses your leaderboard page
@sai refuses to read pages anyone can post to — forums, wikis, comment threads. That
check was too blunt: it turned down ordinary pages whose names merely contain one of the
words it watches for.
/leaderboard was refused, because “board” ends the word — while /leaderboards was
accepted, because the plural breaks the match. /scoreboard, /dashboard and
/postal-address were turned down for the same reason.
Those pages are accepted now. Nothing else changed: forums, wikis, comment threads, boards
and user profiles are still refused, still with no override. If a page you trust is turned
down, that’s still the answer — give @sai a different page.
v6.76.0: @sai can answer from your server's website
Players ask @sai the same handful of questions — how do I rank up, what’s on the store,
when’s the next event — and the answers are usually already written down on your website.
@sai can now read that page and answer from it.
In /mcdc → 🤖 @sai Studio → 🌐 Website, paste your server’s address. @sai reads
that one page, answers players’ questions from it, and gives them the address when the
address is the answer. It re-reads the page about once a day, and there’s a 🔄 Refresh
now button for when you’ve just changed something.
The panel shows you exactly what was read — “1,842 characters from Nightfall SMP —
Home”, plus the sections it found — so you can see what @sai actually learned, rather
than just that the feature is switched on.
- Premium, opt-in, off by default. Nothing changes for a server that doesn’t turn it on, and no existing server has been opted in.
- One page. The address you give, and nothing else on the site.
@saiwill never read a web address someone types into a question. - Pages anyone can post to are refused. An address that looks like a forum, wiki, comment
thread, board or user profile is turned down with an explanation — a page strangers can
write to would let them write what
@saitells your players. There is no override for this, and it deliberately errs towards refusing: if a page you consider legitimate is turned down, point@saiat a different one. robots.txtis honoured on every site we read.- Your text, your call. Only the extracted words are kept — never the page itself — overwritten on each re-read, and deleted the moment you switch the toggle off, change the address, or remove the bot. What we send to AI providers is set out in the privacy policy.
v6.75.0: Changes to the assistant now appear in your audit log
Your audit log has always recorded what your staff do — a ban, a warning, a dismissed flag. It didn’t record changes to the assistant itself: who turned it on, who changed who’s allowed to talk to it, who rewrote what it knows about your server. Those were the one set of changes that left no trace. They do now.
On a bridged Minecraft server (/mcdc → @sai Studio) that covers who may ask
@sai, the reply tone, the assistant’s name and greeting, your server knowledge pack, and
both SAi Companion switches — the companion itself, and whether new players get one
automatically. The Ask @sai on/off button on the bridge’s main page is covered too.
On the Discord side it covers the AI mode, provider and model you pick in /ai-config
or during /setup, the image-generation provider, and your Reception assistant’s persona
and greeting.
Entries record the change, not the content. A switch reads companion: off → on; an
access change reads access: staff → everyone. Anything you wrote yourself is recorded
only by its shape — your knowledge pack, the assistant’s identity, its greeting, its
persona. The log will say knowledge updated (412 → 980 chars), never a word of what it
says. So you can see that your rules were rewritten, and by whom, without your own text
sitting in a second place.
Opening a form and closing it again writes nothing. Only real changes are recorded, so your log doesn’t fill up with people having a look around.
Nothing to turn on — it applies from this release, wherever you can already configure the assistant. Existing entries are untouched, and these records use the same fields your audit log already keeps for every staff action.
v6.74.0: The assistant can now point players to your customer portal
Ask the assistant how to reach the portal — “where’s the website?”, “how do I get to my
account?” — and it now gives you the portal’s address instead of leaving you to hunt for
it. That works wherever the assistant answers, including in-game on a bridged Minecraft
server (@sai), on servers that have the assistant switched on.
It gives out the address and nothing else — the portal’s own page carries the Privacy and Terms links in its footer.
Minecraft players get a second, simpler route in the same release: the companion plugin
now has a /saportal command that prints a clickable link, with no assistant and no
Discord account needed. See the MCDC tab for that — it needs plugin v0.16.0.
v6.73.0: The auto-close safety net for forgotten staff decisions now actually runs
v6.72.0 added a safety net that wasn’t doing anything. Items waiting on a staff decision were supposed to warn you and then close themselves if nobody ever acted — but they were never given a closing date in the first place, so nothing ever reached the warning stage. This release gives them one, so that feature now genuinely works.
How long an item waits now depends on what it is, because they aren’t all alike:
- AutoMod reviews and Minecraft chat flags — about two weeks. These carry an extract of the flagged message, so they shouldn’t sit around.
- Ban appeals, raid alerts and verification items — about a month.
- Owner approvals — no closing date at all. They wait until you answer them.
After that, the behaviour is exactly what v6.72.0 described: a warning first — a notice in the portal, a push notification and a DM to the staff who can act — then 24 hours to act on the item or dismiss it, and only then does it close itself. Closing records that nobody acted; it is not an approval or a denial. The record is cleared 90 days after closing.
One thing you will now start to see: once an item is past its date, it also drops off the portal’s Needs input list. That isn’t new — it is how the list has always worked — but since nothing ever reached a date before, nobody had seen it happen. It doesn’t skip anything: the item is still warned about, still gets its full 24 hours to be acted on or dismissed, and is not deleted at that point.
Nothing already in your queue changes today. Items raised before this update don’t have a closing date, so none of this applies to them — they stay exactly where they are.
v6.72.0: Forgotten staff decisions now close themselves — after warning you first
When something needs a staff decision — a ban appeal, an AutoMod review, an owner approval — it lands in the portal’s Needs input list and SA nudges your staff about it. Until now, an item nobody ever acted on simply sat there forever.
Those items now eventually close themselves. But never silently:
- You get a warning first. Before anything closes itself, SA tells you: a notice in the portal activity feed, a push notification, and a DM to the staff who can act on it. The warning says what the item is, how long it has been waiting, and exactly when it will close.
- A full day to act. After that warning there is a 24-hour grace period. Act on the item — or dismiss it — at any point in that window and it never closes itself. A warning that arrives at 3am is still there to be handled by whoever is on shift next.
- Closing is a tidy-up, not a decision. SA closing an item does not record it as approved or denied. It records that nobody acted.
- Items with no deadline are never touched. If something was raised without an expiry, it stays in your queue indefinitely, exactly as before.
Why this exists: closed items are now cleared out after 90 days, so the details of an old decision — including any message text involved — don’t sit on file forever. An item that never closed was never cleared.
Your existing “needs your input” nudges are unchanged. This adds a final warning before an item lapses; it does not replace the reminders you already get.
One note: anyone who has turned off DMs from SA won’t receive the DM version of the warning. The portal notice still reaches them.
v6.71.0: Flagged Minecraft messages are no longer kept in the activity log
This is a privacy fix, and it is worth being plain about it.
Our privacy policy says the moderation-actions log does not store message content. For AutoMod flags on bridged Minecraft chat, that wasn’t true: a short extract of the flagged message was being written into the durable record — the same record you can read and search in the portal activity log. Two paths did it: the automatic flag itself, and the reason pre-filled for your staff when they kicked or banned straight from the flag card.
The durable record now keeps who and which filter matched — and no longer the message text.
What has not changed — your moderators lose nothing they need to judge a message:
- The staff alert in Discord still quotes the message in full. Your moderators still see exactly what was said, in full context, before they decide anything.
- The server log channel embed still shows the full reason.
- The kick or ban message the player sees in-game is unchanged.
- Discord-side moderation is entirely unaffected.
Only the durable, searchable activity record is redacted — bringing it into line with what the privacy policy already promised.
v6.70.0: The assistant no longer fills gaps with guesses
Asked “what are the rules on this server?” on a server with no rules configured, the
assistant used to answer anyway. It would say staff set those up, suggest checking “a rules
channel if there is one”, and add that they “might have also set up a /rules
command or something similar”. None of that was known to be true — it was
plausible-sounding filler, and it sent people looking for things that may not exist.
It now never names a command, channel, role, rank or feature it hasn’t been told exists. When it doesn’t know something, it says so in one short sentence and points at the one thing that is always true — ask the server’s staff — instead of padding the answer with guesses.
This applies everywhere it answers: in-game, in Discord, the welcome assistant,
and /faq.
It still answers plainly what it does know. If your server’s knowledge pack says “no griefing”, it says “no griefing”. The change targets invention, not confidence — a well-filled-in server gets the same direct answers as before.
A tip for operators: fill in your server knowledge pack — /mcdc → @sai Studio —
and the assistant can answer these questions properly instead of pointing people at staff.
v6.69.0: /online rebuilt — a truthful, instant look at who's on your Minecraft server
Run /online in your linked Minecraft channel to see who’s on the game server right
now. The command already existed, but it was thin — and worse, it could tell you things
that weren’t true. This release rebuilds it.
- A stopped server used to show as online. When a server went down,
/onlinekept reporting the last thing it had heard, listing whoever happened to be playing at that moment. It now recognises that the information has gone stale, says the server appears to be offline, and withholds the old player list rather than showing you a roster that isn’t really there. - A connection problem used to read as “no Minecraft server linked” — a confusing answer when one plainly was. Trouble reaching your server is now reported as exactly that.
- Long player lists no longer cut a name in half. Busy servers get a tidy “+N more” instead of a name chopped mid-word.
- Replies are instant.
/onlinenow reads the presence information your bridge already keeps up to date — refreshed about once a minute — instead of going and asking all over again on every use. Run it twice in a row and the second answer comes back immediately. - Server health at a glance. The same 🟢 / 🟡 (running slow) / 🔴 (offline) marker you already see on the channel topic, so the two can never disagree.
- You can see how fresh the list is. It tells you when the information was last refreshed, so a minute-old list is never mistaken for live truth.
- Run it in the wrong place and it helps. In another channel it points you at the right one; in a server with no Minecraft link at all, it tells you how to set one up.
It shows Minecraft names only — never which Discord account a player is linked to,
even for players who have linked one. Answers are visible only to the person who ran the
command, so /online never clutters your chat channel.
v6.68.0: AI Review can now tell "venting at the game" from "aimed at a person"
AI Review — the optional second opinion on a flagged message — used to answer only one question: did the filter really match something? It was told to be lenient about ordinary swearing, so it was good at calming down false alarms, but it couldn’t tell an insult pointed at another member from someone cursing at a boss fight.
It now judges who a message is aimed at as a separate question from whether the filter matched:
- Casual — venting, banter, swearing at the game. Still calmed down, exactly as before.
- Directed — aimed at a person: insults, harassment, putting someone down.
- Identity-based hate — targeting who someone is. Flagged whatever the tone; said with a smile, it’s still hate.
Your staff can see that judgement. It appears on the review card and in the automod log, so a moderator can see why something was flagged instead of only that it was.
- Nothing is punished more harshly. This changes what your staff see, and whether a flag gets quietened — it never moves anyone further along the punishment ladder, and it never acts on something that wouldn’t have been actioned before.
- Still Premium, still opt-in, still off by default. Turn it on in
/automod→ AI Review. If you haven’t enabled it, nothing changes for you and no AI calls are made. - Nothing new is sent. Same as always: one borderline message plus which filter matched. No usernames, no IDs.
v6.67.0: Targeted-harassment filtering now reaches servers set up before it existed
An earlier release added targeted-harassment filtering — the Level 2 pack, which catches “kys”, “kill/hang/neck yourself”, “go die” and the like — to every setup preset that already included slur filtering. But choosing a preset copies its filter packs to your server at that moment, so in practice only servers set up after that release actually got it. Servers set up earlier kept the packs they’d been given and never picked it up.
We’ve now applied it to those servers directly, so we should be upfront about what changed on your side:
- Only servers that already had the Level 1 slur filter switched on. If you’d deliberately left slur filtering off, nothing has changed for you — we haven’t turned filtering on anywhere it wasn’t already running.
- You can turn it off, and it stays off. Untick Level 2 in
/automod→ Filter Packs. It won’t be quietly re-added later. - You’ll see it in your own logs. Affected servers get a single line in their server log channel when this switches on, so it isn’t a silent change to your moderation settings.
Nothing else about your automod setup was touched.
v6.66.0: Give your Minecraft ranks a Discord role to follow
The setup side of rank sync is here. Point a Discord role at an in-game rank and Server Assistant keeps the two in step for you — no manual LuckPerms edit every time someone is promoted.
- Map your roles in
/mcdc→ 🏅 Rank sync. Pick a Discord role, name the in-game rank it should grant (your LuckPerms group), and turn the master switch on. From then on, when someone’s Discord role changes their in-game rank follows within about a minute. - Several roles? Highest one wins. A member who holds more than one mapped role gets the rank of their highest-positioned Discord role, so your hierarchy in Discord is the hierarchy in-game.
- It only mirrors — it never takes instructions. Nothing a player types, in Discord or in Minecraft or to the assistant, can request a rank change. Ranks only ever change because an authorised staff member changed a Discord role, or edited LuckPerms directly.
- Some roles are protected, and SA tells you why. When you pick a role that
shouldn’t be mirrored, SA declines it on the spot and explains:
@everyone, bot- and integration-managed roles, roles carrying Administrator, and any role at or above Server Assistant’s own position (your Operations / Executive Operator tier). Your top of house stays a human decision. - Only mapped ranks are ever touched. Ranks you set by hand in LuckPerms, and your staff and admin ranks, are never modified. If a member isn’t in your mapping, they are left completely alone.
- Removing a mapping demotes cleanly. Take a pairing out and SA withdraws the rank it granted, rather than leaving people stranded on a rank nobody is maintaining.
Needs the MCDC plugin v0.15.0 or newer and LuckPerms on the game server. Off until you turn it on.
v6.65.0: Stronger hate-speech filtering — sexism, transphobia, homophobia, ableism
The slur filter behind most of our setup presets now covers much more of what you’d expect it to. It already caught racial, ethnic and religious slurs, but had no coverage of misogyny or sexism at all and barely any of anti-trans hate. That gap is closed.
- Wider coverage, applied automatically. Misogyny and sexism, transphobia,
homophobia and ableism now sit alongside the racial, ethnic and religious coverage
the filter already had. If your server is on a preset that includes the Level 1
slur filter (
slurs_l1— Gaming, Creator, Anime, Crypto and NSFW all use it), you have this already, with no settings change needed. - Casual swearing is still not filtered. That’s deliberate and unchanged — venting
at a hard boss fight won’t trip anything. Ordinary profanity is only filtered by the
Strict preset (
profanity_l3). - Targeted harassment now comes with the pack. Presets that switch on slur
filtering now include the Level 2 pack too (“kys” and similar). Servers set up
before this update keep exactly the packs you already chose — to turn it on, either
pick your community-type preset again in
/setup, or enableslurs_l2in/automod→ Filter Packs. - Minecraft bridge fix. A slur deliberately typed with characters between the letters was hidden in-game but appeared in full in the linked Discord channel. It’s now masked on both sides.
v6.64.0: Rename your in-game assistant and it's fully yours
Polish for the in-game assistant, especially on servers that have given it their own name.
- A renamed assistant is properly yours. Give it a custom name in
/mcdc→ @sai Studio and, in-game, that’s simply who it is — it introduces itself by your name and doesn’t bring up the software behind it. It still answers your players’ questions exactly as well. - Replies read cleanly in chat. Answers are now plain text — no stray
**or backticks from formatting that Minecraft can’t display. - No more sentences cut in half. Long answers now finish their sentence and trim neatly instead of stopping mid-word.
v6.63.0: SAi now follows the conversation in Discord
Ask SAi something in Discord and it now remembers the thread instead of treating every message as a fresh start.
- Follow-ups just work. If SAi asks a clarifying question (“in a game or real life?”) and you answer with a fragment (“in mc”), it now applies that to your original question rather than answering something unrelated.
- Replies are always picked up. Replying to one of SAi’s messages continues the conversation — even if you turn the reply-ping off.
- Answers on the merits. A genuine question — including general game questions like a Minecraft crafting recipe — gets a real answer, instead of being steered back to bot settings.
Only recent messages from that same channel are used, and quoted chat is treated as context to read, never as instructions to act on.
v6.62.0: @sai in-game — smarter answers, clearer linking, staff-only enforced
A polish pass on the in-game @sai assistant, from live testing.
- Answers more. @sai now helps with general Minecraft questions (crafting, mechanics, mobs) as well as your server’s own info — and it never goes silent: if it can’t answer, it says so instead of ignoring you.
- Clearer account linking. When a player needs to link, the message now says to
run
/linkin Discord (it’s a Discord command that gives you a code to redeem in-game) — no more confusion about typing it in Minecraft. - Staff-only really means staff-only. If you restrict @sai to staff (or linked members), players who don’t qualify can no longer summon or use the in-game companion at all — not just get refused after asking.
- As always, @sai only explains and guides — it never changes settings, roles or permissions.
Pairs with MCDC plugin v0.14.0 (see the MCDC tab) — auto-updates.
v6.61.0: 🧚 Summon your own SAi companion in-game
Players on Premium can now summon a personal SAi companion right inside Minecraft and ask @sai a question privately — the answer comes back to just that player, not the whole chat.
- A private answer, just for you. Ask @sai something and the reply is sent to you alone, so you can get help without filling up the chat.
- The same SAi your server already set up. It’s the very same SAi — its name, tone and server-knowledge all carry over.
- It still only explains, guides and reports. The companion never changes settings, roles or permissions.
- A friendly first hello (optional). Servers can have a companion greet first-time players automatically.
Turn it on in /mcdc → 🤖 @sai Studio → 🧚 SAi Companion. Premium, opt-in.
v6.60.0: Make the in-game @sai assistant your own
You can now customise the @sai assistant on your linked Minecraft server —
its name, its manner, what it knows, and who’s allowed to use it — all from a new
@sai Studio page in the /mcdc wizard.
- Give it your own name, tone and greeting. Rename @sai, pick how it speaks (concise, friendly, or in-character), and write the line players see when they first talk to it.
- Teach it your server. Add a knowledge pack of your own details — rules, ranks, how to claim land, upcoming events — so @sai can answer players’ “how do I…” questions with your real information. When something isn’t in the pack, it says so and points players to staff rather than making an answer up.
- Choose who can use it. Open it to everyone, to linked members only, to staff only, or turn it off entirely.
- It still only explains and guides. @sai never changes anyone’s roles or permissions — a request to do that is refused, exactly as before.
v6.59.0: Earn XP for time spent on your linked Minecraft server
You now earn XP just for playing on your linked Minecraft server — the same way time in voice channels earns XP.
- Same rate as voice XP. Time on the server earns at the same rate as time in a voice channel, and your 2× events and buffs apply to it just like everywhere else.
- A fair hourly cap keeps it balanced with the rest of the server.
- Link your account to start earning. Use
/linkin-game or the/mcdcwizard to connect your Minecraft account to Discord — playtime XP is credited to linked players only.
Needs the companion plugin at v0.11.0 (auto-updates as usual).
v6.58.0: Minecraft channel topic now shows your server's health
The status dot on the linked Minecraft channel’s topic now reflects your server’s health rather than how many players are on — so an online but empty server no longer sits behind a grey dot.
- The dot tells you how the server is doing. 🟢 means online and healthy, 🟡 means online but running slow, and 🔴 means offline or in trouble.
- Empty no longer looks down. An online server with nobody on it now correctly shows green instead of a grey dot.
Follows v6.57.0, which made the topic show offline when the server is down. This is a bot-side change — no plugin update needed.
v6.57.0: Minecraft channel topic now shows offline correctly
The linked Minecraft channel’s topic used to get stuck showing “🟢 online” with a player count even after the Minecraft server had stopped. It now correctly shows 🔴 Server offline when the server goes down or stops responding.
- The topic tells the truth. When your server stops or stops responding, the channel topic flips to 🔴 Server offline instead of leaving a stale online count sitting there.
- It flips back on its own. When the server comes back, the topic returns to the live player count and stats automatically — nothing to run.
v6.56.0: Updates to AutoMod
Behind-the-scenes improvements and refinements to AutoMod.
v6.55.0: Updates to AutoMod
Behind-the-scenes improvements and refinements to AutoMod.
v6.54.0: Minecraft chat flags — Dismiss + a reason prompt
The Minecraft chat-flag alert is now a proper action card, and it also shows in the operator portal’s Needs input list so nothing slips through.
- Dismiss button on every flag — and your audit log records who dismissed it.
- Kick / Ban open a reason box pre-filled from the offence (the rule + the flagged text) that staff can edit before confirming — the reason the player sees on disconnect.
v6.52.0: Minecraft chat-flag alerts go to your staff chat
When a bridged Minecraft message trips AutoMod, the flag notice — with its Kick / Ban in-game buttons — now posts to your staff-chat channel instead of your server-log channel, so it lands where your team is watching.
- Falls back to your usual alert channel if no staff chat is configured. The full audit trail still records every flag as before.
v6.51.0: Blocked links are masked in Minecraft chat
A link your AutoMod blocks (IP-grabbers, or any domain on your link blocklist) is now
masked to *** in bridged Minecraft chat — in the Discord copy and the in-game
broadcast — instead of only raising a staff flag.
- The bad link doesn’t reach the room, but your staff still see it. The masked copy is what players see; your staff alert and server log keep the real link for evidence. Works both directions and follows your AutoMod switch, same as the rest of the bridge filter.
v6.50.0: Ask-SAi answers now show in Discord too
When a player asks SAi in-game (@sai …), SAi’s reply now also appears in your
linked Discord channel — not just in Minecraft.
- The bridged conversation reads the same on both sides. The player’s question
already crossed to Discord; now SAi’s answer sits right below it in
#minecraft, so staff watching from Discord can follow the whole exchange instead of seeing a question with no reply.
v6.49.0: SAi now knows Server Assistant inside out
Ask SAi how something works or where a setting lives, and it now answers from Server Assistant’s own documentation instead of guessing.
- “How do I…” questions actually get answered. In-game (
@sai) or at the reception desk, SAi can now explain your features, plans, the Minecraft bridge, privacy, and where each setting lives — and it points you to the right command or panel. If something isn’t covered, it says so plainly rather than making it up. - It still only explains — never changes. SAi never edits settings, roles, or permissions; those are done by staff in Discord. A request to change someone’s permissions or roles is refused and flagged, as always.
- Kept current automatically. SAi’s knowledge is pulled from the live docs, so it stays in step with new releases without anything to configure.
v6.48.0: Bad language is now masked in Minecraft chat too
When your AutoMod catches a word in in-game Minecraft chat, that word is now
masked to *** in the game broadcast other players see — not just in the Discord
copy. Your staff still get the real wording in the server log and the flag alert,
so nothing is lost for evidence.
- Players see it censored; your log keeps the truth. A flagged word shows as
***to everyone in-game, while the original text still reaches Discord and your server log untouched. The message isn’t dropped — just cleaned up for the room. - Follows your AutoMod switch, automatically. The in-game mask uses the exact same word packs as the rest of your AutoMod and turns on/off with it — nothing extra to configure. Requires the latest bridge plugin (v0.7.0), which your server updates to on its own.
v6.47.0: Minecraft chat filtering now follows your AutoMod switch
Filtering and monitoring of your bridged Minecraft chat is now tied to one control — your server’s AutoMod switch — so it can never look “on” while quietly doing nothing.
- One switch, not two. The separate Chat filtering and Monitoring toggles
in the
/mcdcwizard have been replaced by a single Filter & monitor status that simply follows AutoMod. When AutoMod is on, bridged Minecraft chat is masked and monitored automatically — both directions, using the word packs you’ve already set up. When AutoMod is off, the bridge isn’t filtered. - Fixes chat slipping through. Before, those two toggles could each read “on” yet still do nothing whenever the AutoMod master switch happened to be off — which once let a slur (covered by the gaming slur pack) through unmasked and unflagged. Now the single control makes the real state clear, so what you see is what you get.
v6.42.0: Appeal a Minecraft ban or kick from the ban screen
If you’re banned or kicked on a Minecraft server running our bridge, the disconnect message now shows a one-time link to a web appeal form. Open it, write your side of the story, and your appeal goes straight to that server’s staff to review — no Discord account needed.
- One link, one use. The link on your ban screen is single-use and expires, so keep the tab open if you want to appeal.
- It reaches the right people. Your appeal lands with the server’s staff alongside the ban details, so they have the context to make a call.
v6.37.0: Link your Minecraft & Discord accounts
Players on a bridged Minecraft server can now connect their Discord and
Minecraft accounts — it’s opt-in and free. Run /link in Discord to
get a code, then type !link <code> in Minecraft chat, and the two accounts are
joined.
- You’re in control. It’s entirely your choice — nothing links automatically —
and you can run
/unlinkany time to disconnect. Only the connection between your Discord account and your Minecraft UUID is stored, never your Minecraft username. - The foundation for what’s next. Linking is the groundwork for two features we’re building on top of it: earning XP for your in-game playtime, and keeping your Discord roles and in-game ranks in step. Link now and you’ll be ready as they roll out.
v6.36.0: Kick or ban a flagged Minecraft player in-game
When a Minecraft player trips your AutoMod, staff can now Kick or Ban them
in-game with one click on the flag alert. Off by default — enable
Enforcement in the /mcdc panel; only staff with kick/ban permission can
use the buttons.
- Act straight from the alert. When your AutoMod flags a Minecraft player’s chat, the Discord alert now carries Kick and Ban in-game buttons — press one and the action runs on your Minecraft server, no console needed.
- Off until you turn it on. Enforcement stays off until you enable it in the
/mcdcpanel, so nothing changes for servers that don’t want it. - Permission-gated. Each button only works for staff who already have the matching kick/ban permission — everyone else is turned away.
- Needs the companion plugin. The action is carried out in-game by the MCDC plugin v0.5.0 (it updates itself if auto-update is on).
v6.35.0: Minecraft in your weekly Pulse
If you run the Minecraft bridge, your weekly Pulse now includes a Minecraft section — a 7-day recap of in-game chat, joins, deaths and advancements. It’s free, and it shows up automatically for linked servers that had activity — nothing to switch on.
- A Minecraft rollup in the digest. Alongside the rest of your weekly Pulse, linked servers get a Minecraft section summarising the last 7 days in-game: chat volume, player joins, deaths and advancements.
- Free and automatic. It appears on its own for any server with the bridge linked and some in-game activity that week — there’s nothing to enable, and no plugin change needed.
v6.34.0: Ask SAi right inside Minecraft
Premium: let your players ask SAi questions without leaving the game. Type
@sai <question> in Minecraft chat and the answer prints back in-game.
- Ask in-game, get an in-game answer. On a bridged Minecraft server, a player
can type
@sai(or!sai/!ai) followed by a question in chat, and SAi’s reply appears right there in Minecraft — no need to switch to Discord. - Off by default, opt-in per server. It stays off until you switch it on with
the Ask SAi toggle in the
/mcdcpanel. - Fair-use limited, and it uses your AI allowance. Each player can ask up to 15 questions every 6 hours, and answers count toward the same AI allowance as the rest of SAi.
v6.33.0: Server health at a glance
See your Minecraft server’s health right in Discord — live TPS, tick time, RAM and uptime
show in the /mcdc panel and /online. Optional health alerts ping your staff/log channel
if the server goes offline or starts lagging. Free.
- Live health in the
/mcdcpanel and/online. Under the connection line you’ll see a readout like🟢 TPS 19.8 · ⏱ 42ms · 🧠 2.1/4.0 GB · ⏳ up 3d 4h— your server’s ticks-per-second, tick time, memory use, and uptime, updated as it reports in. - Optional health alerts. A short notice posts to your log/staff channel when the server
goes offline or back online, or when TPS drops into the red. It’s on by default
(
mcdc_health_alerts); toggle it in the/mcdcpanel. - Free, needs the companion plugin. Health reporting is free on every plan and needs the MCDC plugin v0.4.0 (it updates itself if auto-update is on).
v6.32.0: Clearer AutoMod status & branding
Two clarity fixes so the panels tell you what’s really happening.
- AutoMod status now counts your packs. The
automodstatus card used to show “Filters: 0” even when a filter pack (like the gaming slurs pack) was switched on — which looked like nothing was being filtered. It now shows the real number of active rules, notes when the community word-list is on, and lists your enabled packs by name. - Branding makes the icon’s scope clear.
/brandnow spells out that your brand icon appears on the bot’s messages/embeds, not its profile picture. Discord only allows a bot one avatar across every server, so branding changes the bot’s nickname and embeds here — not the picture in the member list.
v6.31.0: Server Assistant now monitors Minecraft chat
Your Minecraft chat is now watched the same way your Discord chat is — so bad language and blocked links from in-game players don’t slip past moderation.
- AutoMod scans bridged Minecraft chat. Every message a player sends in-game is checked against your server’s AutoMod word filters and blocked-link list, and counted in your “messages scanned” stats.
- Staff get a heads-up when something trips a rule. If a Minecraft player’s message is flagged, Server Assistant posts a note to your log/staff channel — who said it, the message, and which rule — so your team can handle it in-game. (It’s a heads-up only: Server Assistant can’t mute or ban Minecraft players itself.)
- Toggle it from
/mcdc. “Monitoring” is on by default; switch it off any time in the/mcdcpanel.
v6.30.0: Set up the Minecraft bridge entirely in-game
Set up the Minecraft ↔ Discord bridge entirely in-game — no config file to edit, no server restart.
- Drop the plugin, then link in one line. After adding the companion plugin to your
server, run
/mcdc link <token>in Minecraft to link the bridge instantly. The token is shown in Server Assistant’s/mcdcsetup panel. - The panel shows the exact command. The
/mcdcsetup panel now prints the ready-to-run line for you to copy, so there’s nothing to type out by hand. - No config-file editing, no restart. The bridge links there and then — editing
plugins/MCDC/config.ymland restarting the server is now just an alternative, not the only way.
Needs the companion plugin v0.3.0 (it updates itself if auto-update is on).
v6.29.0: A friendlier staff welcome
When you finish setup, Server Assistant now greets your staff team with one short, friendly message instead of a wall of onboarding cards.
- Just a hello + the essentials. Run
/helpto see everything, or @mention Server Assistant and ask in plain English — no commands to memorise. - A quick note on natural language. It explains that in staff chat you can just ask for things the way you’d ask a teammate (“warn @jen for spam”, “mute @user 30 min”), and that SA confirms before anything major.
- Reply to keep going. It points out that replying to SA’s messages continues the conversation, so you can refine on the fly.
v6.28.0: Control the Minecraft join message from Discord
The in-game notice players see when they join your Minecraft server — the one telling them
chat is bridged to Discord — can now be edited and toggled straight from the /mcdc
wizard, instead of editing the plugin’s config file on the server.
- Reword it or turn it off. In the
/mcdcwizard there’s a Join notice toggle and an ✏️ Join text editor. Change the wording, or switch the notice off entirely — your call. - Applies itself. Your change reaches the server automatically within about a minute — no restart, no config file editing.
- On by default. New and existing servers keep the notice on unless you turn it off; if you do disable it, remember your players won’t be told in-game that chat is bridged.
Needs the companion plugin v0.2.3 (it updates itself if auto-update is on).
v6.27.0: Just ask SA to change a setting
Ask Server Assistant in chat to turn something on or off — like level-up announcements or the Minecraft reaction relay — and it will make the change for you, not just point you to where it lives.
- Ask, confirm, done. Say something like “turn off level-up messages” or “enable the Minecraft reaction relay” and SA shows a quick Confirm / Cancel prompt. Confirm and it flips the setting there and then — no digging through menus.
- Safe toggles only, admins only. This covers a curated set of everyday on/off switches (level-up announcements, the Minecraft-bridge toggles, emote and meme commands, notification and logging options). Security, privacy and verification settings are not included — SA politely declines those. Only staff with Manage Server can make a change, and every change is confirmed, logged and reversible.
- Fewer one-time setup notices. SA no longer posts a “New: …” note to your staff chat when a feature is added, so your staff channel stays quieter.
v6.26.0: Level-up messages now off by default on new servers
Newly-added servers now start with level-up messages switched off, so Server Assistant won’t post them until you decide you want them.
- New servers start quiet. When you add Server Assistant to a server, level-up messages begin off. Servers you already have are unchanged — nothing switches on or off for them.
- Flip it whenever you like. Turn level-up messages on or off any time in
/levelingor the dashboard’s “Level-up messages” setting.
v6.25.0: Discord reactions show up in Minecraft
React to a message in your bridged Discord channel and everyone in-game sees it too, so a quick 👍 or 😂 carries across the bridge instead of getting lost.
- Reactions cross the bridge. When someone reacts to a message in the linked Discord
channel, it appears in Minecraft, for example
Alice reacted 👍 to Bob: "gg". - On by default, and easy to turn off. Reactions are a toggle in the
/mcdcwizard, on out of the box, so switch them off there any time you’d rather keep in-game chat quieter.
v6.24.0: Set up the Minecraft bridge in one command
Setting up and tuning the Minecraft ↔ Discord bridge is now a single guided wizard, so there are no subcommands to remember.
- One command, one wizard. Run
/mcdc(or open it from/settings → Minecraft) and everything happens in one panel: pick a channel to bridge, or let Server Assistant create one for you. When you link, it hands you the paste-ready plugin config and the download link, once. - One-click toggles once you’re linked. Turn server events (joins, leaves, deaths, advancements, start/stop), the live topic online-count, and live translation on or off from the wizard, rotate your token, or unlink, all in a couple of taps.
- Chat filtering is now optional. Masking bridged chat against your AutoMod word list is a toggle in the wizard, on by default, that you can switch off to relay chat exactly as typed.
- It won’t clash with your other channels. The wizard won’t let you bridge a channel that’s already your reception/verification, staff-chat, or mod-log channel.
The subcommands (/mcdc link, /mcdc status, /mcdc translate, /mcdc unlink) are gone,
folded into the wizard. /online is unchanged.
v6.23.0: Bridge your Minecraft server to Discord
Link one Discord channel to your Minecraft (Paper/Spigot) server with a small free plugin, and your in-game and Discord chat become one conversation.
- Two-way chat with real player identity. In-game chat lands in your Discord channel as the player, their Minecraft name and skin-face avatar, and anything typed in that Discord channel shows up in-game. Server events, joins, leaves, deaths, advancements, and server start/stop, can be relayed too, each toggleable.
- Optional AI translation, both ways. Turn on one target language and everyone reads a single conversation, in-game and in Discord, with messages translated live. It is off by default, and text already in your chosen language is left untouched.
- See who’s on at a glance.
/onlinelists the players currently in-game, and the linked channel’s topic keeps a live count, for example “🟢 7/40 online”. - Set it up with one command. Run
/mcdc link, drop the free companion plugin into your server’splugins/folder, paste in the two lines it gives you, and restart. Manage it any time with/mcdc status,/mcdc translate, and/mcdc unlink. - Privacy stays front and centre. No server passwords or remote-console access ever leave your machine. Chat and player names are relayed in transit and not stored, and the plugin posts an in-game notice so players know chat is bridged. There’s no Discord-to-Minecraft account linking in this first version.
v6.22.0: A weekly Pulse in your staff chat
Server Assistant now drops a short weekly summary straight into your staff chat, so you can see how the week went without opening the portal.
- Weekly Pulse to your staff chat. Once a week you get a single digest: server activity (messages, active voice time, members), a mod-team recap, reception stats, and a ThreatNet section — scam images blocked, spam bots caught, and auto-protect bans on your server that week, plus the network-wide “flagged actors / scam images blocked” totals. It is on by default; turn it on or off under /settings → Notifications.
- The old “Auto-pilot weekly report” is gone. The weekly Pulse replaces it — same idea, more useful, and with a real on/off switch (the old report couldn’t actually be turned off).
- Pulse is still always live in your web portal, and each staffer can still opt into their own Pulse DMs.
v6.21.0: A tidier Settings panel
Everything in /settings now happens inside one panel. No more popups appearing over the top of it.
- One panel, no popups. Opening a section, saving a change, or hitting a limit no longer opens a separate popup message. The settings panel updates in place and shows a short status line right where you are looking.
- A Back button everywhere. Every menu and built-in tool (AutoMod, Onboarding, verification, backups, and the rest) now has a Back button, so you can move around Settings without losing your place.
v6.20.0: A wider welcome banner you can refresh
The Reception welcome banner is now a proper wide landscape image, and every server, free included, can regenerate it whenever they like.
- Landscape, not square. The auto-created welcome banner now renders as a wide banner that fits the top of your reception channel properly.
- Regenerate any time, free. Not happy with the first banner? Open Settings, Reception, and use the Banner button to have Server Assistant paint a fresh one from its read of your community. It is free and does not use any of your AI allowance. (Premium can still supply a custom prompt for a bespoke banner.)
v6.19.3: A quieter log channel
Your log channel no longer fills up with a line every time Server Assistant sends a member a direct message (verification notes, AutoMod warnings, and the like). These “sent a DM” notices are now off by default.
- Off by default, on when you want it. Turn the notices back on any time under Settings, Behavior, “Log ‘sent a DM’ notices” in the web portal.
- Nothing stops being recorded. These were only ever a convenience line in your Discord log channel. Your full activity history in the operator portal is unchanged and still tracks everything.
v6.19.1: A one-tap fix when Onboarding fights your gate
When you turn on Reception, if your server’s Discord Onboarding could hand out the verified role on its own (which would let people skip the gate), Server Assistant now offers to fix it right there in setup instead of just warning you.
- Fix it in one tap. If Onboarding would auto-grant your verified role, setup now shows two buttons: let Server Assistant remove that role from Onboarding for you, or create a fresh verified role that Onboarding does not touch.
- No more hunting through settings. The old warning told you to dig through Server Settings yourself; now it is handled in place, in the same setup screen, so there are not two things competing for your attention.
v6.19.0: A warmer Reception, now free for every server
Reception now greets every server with its own banner, keeps itself in shape, and stays clear for new arrivals. The welcome desk has four upgrades this release, and its signature banner is now free on every plan.
- A free Reception banner for every server. Every server now gets its own custom welcome-desk banner, created once automatically from Server Assistant’s read of your community. It used to be a Premium-only touch; now it’s free for all.
- A self-healing honeypot. The Reception channel stays locked as a spam trap. If its settings ever drift, Server Assistant restores them on its own, so the trap keeps working.
- Stray posts are tidied away. Reception is for new-member verification only, so if someone posts there, Server Assistant removes the message and lets them know why. (On Premium, that becomes a concierge hand-off instead, see below.)
- A Premium SAi concierge in Reception. On Premium servers, a member who reaches out in Reception is moved into their own private ticket where SAi helps them one-to-one, keeping Reception clear for the next new arrival.
v6.18.0: Reception, set up from anywhere and it just works
Reception now sets up from the web portal too, and holds the gate more tightly.
The portal’s setup wizard has gained the same Welcome desk step as /setup, so you
can stand Reception up in a browser, not just in Discord.
- Set up Reception from the portal. The web setup wizard now has a Welcome desk step: pick or create your verified role, write a free greeting, and switch Reception on, all without leaving the portal.
- #reception sits at the top. When Reception creates your #reception channel, it now pins it to the top of your channel list, so new members see it first.
- The gate actually holds. Reception now checks that nothing else is quietly handing out your verified role (Discord Onboarding, another bot, and the like) and warns you if it finds one. And if an unverified member is given the role some other way, Reception takes it back until they’ve passed the desk, so the gate can’t be side-stepped.
- Finishing setup links you to your portal, so your dashboard is one tap away.
v6.17.0: Set up your Welcome desk right in /setup
Reception now has a home in setup. /setup has a new Welcome desk step, so you can
stand up your Reception welcome desk as part of getting started, with no separate trip to
/settings.
- Pick or create your verified role. Choose an existing role for verified members, or create a fresh Verified role in one tap.
- Turn Reception on, live. Left on (it’s recommended, on by default, and skippable), the step goes to work right away: it creates your branded reception channel, pins the greeting, and sets the verification gate to intelligent.
- Free to make it yours. Write your own greeting right in the step, at no cost. Deeper
branding, a named receptionist persona, a banner image, and the concierge, stays on Premium
in
/settings.
The wizard now runs Channels, Roles, Welcome desk, then Moderation & AI.
v6.16.0: XP, made clear: your Level is a badge, your XP is what you spend
One simple idea, spelled out everywhere. XP used to mean two things at once, which was confusing. Now it’s clean:
- Your Level is a badge you earn over time: it only ever goes up, and spending never lowers it.
- Your XP is your spendable balance: earn it just by being active, and spend it on Crests in Crestbound.
What you’ll notice:
- Level-up messages now tell you what your XP is for (“…spend it on Crests in Crestbound”).
/rankshows your Level and progress to the next one, plus a clear “XP to spend” line./leaderboardranks by Level.- Crestbound says XP everywhere (no more stray “Coins”), and its sign-in page now tells newcomers what it is and that it runs on the XP you already earn in Discord.
Nothing about earning changed: you get XP exactly as before; it’s just clearer now.
v6.15.0: Fix: turning off level-up messages now actually works
A settings fix. Some servers switched leveling off in the web portal and still saw level-up messages, because the portal had two leveling switches, and the obvious-looking one didn’t do anything. We’ve fixed it: there’s now a single, clear “Level-up messages” toggle that works.
- If you’d already turned it off, we’ve carried that across for you: those servers are quiet now, no need to touch anything.
- XP is unaffected: members still earn XP toward their wallet (and Crestbound); turning the toggle off just stops the celebratory messages.
v6.14.0: Setup just got simpler: one guided, pre-filled wizard
No more choosing between “auto” and “manual”. Setup now does the smart thing by default: the
moment you run /setup, Server Assistant scans your server and pre-fills every step: your
staff chat, log channel, and staff roles are already picked for you. Agree? Tap straight through.
Want to change something? It’s right there to adjust.
- Auto-pilot is folded in. What used to be a separate
/autopilotstep is now just how setup starts: you get its smart detection and the ability to tweak anything, in one flow. /autopilotstill works: it simply opens the same guided setup now.
Run /setup and you’ll see your server already half-configured.
v6.13.0: Reception is now the front door for verification
Following up on Reception. Now that Reception is here, we’ve made it the recommended way to
verify new members: the /settings → Verification panel leads with it, and the old
mode setting is reframed as simply who gets held at the door (everyone / only risky
arrivals / no one).
- One clear path. We retired the old DM-button verification gate: it only ever ran in the “no hold” mode and Reception (plus the Intelligent/On modes) does the job better.
- Nothing breaks. If your server was relying on that old gate, we’ve automatically switched you to Intelligent so you’re never left without a gate. Servers that had no verification are left exactly as they were.
Tap Reception in /settings → Verification to set up your welcome desk.
v6.12.0: Meet Reception: a warm front door that keeps bad actors out
Verification just got a friendly face. Turn on Reception and new members arrive at a branded welcome desk instead of a cold gate: a banner, a greeting, and a one-tap Verify me button. Tap it, answer a quick “are you a real person?” question, and the server opens right up. Get it wrong? No problem: it’s a friendly retry, never a ban.
- Make it yours. Every server can customize the greeting. On Premium, you can also generate (or upload) a banner image and give your receptionist its own name and personality.
- A quiet trap for the bad guys. The only thing to do at Reception is tap Verify, so if a brand-new account skips that and starts posting spam, it’s shown the door automatically. Real members never notice; scammers don’t get a second message. During a raid, the desk tightens up on its own.
- Always a real check. The welcome question works even if other systems are busy. Reception never just swings the gate open.
- Ask the receptionist anything (Premium). Verified members can chat with SAi right at the desk for help with the server or a general question.
- See it working. Your weekly Pulse now includes a Reception summary: who arrived, who verified, who got turned away, and how quickly people get in.
- A safer internet, shown at the door. The banner carries a live Protected by ThreatNet badge: the network’s running tally of bad actors and scam images stopped across every protected server.
Find it under /settings → Verification → Reception. It’s off until you switch it on.
v6.11.1: Your personal settings now live under Settings → Personalization
A tidier home for the settings that are just yours. The web portal’s Settings tab now opens with a new Personalization section at the top (your own preferences, separate from the server-wide settings below it):
- Call me by DM: whether SAi nudges you when something sits unactioned (~1h).
- Pulse in my DMs: your personal Pulse cadence (Off / Weekly / Monthly).
- Notifications on this device: turn on push notifications for the browser you’re using.
These used to live in the SAi chat panel; they’re easier to find in Settings now. And the Insights → Pulse card has a quick link straight to it. (We also removed the “Send me a sample” button: that was only ever a testing tool.)
v6.11.0: One digest to rule them all: Weekly digest folds into Pulse
Cleaning up the last bit of overlap. The old Weekly digest, a weekly activity summary the bot posted to your log channel, did the same job Pulse now does (and better: Pulse covers server activity and your mod-team recap, lives always-current in your portal, and can DM each staffer on their own schedule). So we’ve retired the standalone Weekly digest and its /settings → Behaviour toggles. Nothing to do: it’s all in Pulse now. Your Digests & health settings are simpler for it.
v6.10.1: Tidied-up Pulse settings
A small follow-up to the Pulse update. Now that Pulse lives in your web portal (always up to date) and can be DM’d to each staff member on their own schedule, the old Pulse settings in Discord /settings → Notifications, the “how often to post to a channel” menu and the channel/hour panel, no longer did anything, so we’ve cleared them away. Nothing you need to do; your Pulse is right where it should be. Set your personal Pulse DM cadence anytime from the SAi panel in the portal.
v6.10.0: Get your Pulse in your DMs, on your schedule
Want your server’s Pulse sent straight to you? Now each staff member can opt in, on their own schedule. In the web portal’s SAi panel there’s a new “Pulse in my DMs” option: choose weekly or monthly and SAi will DM you the Pulse (server activity and your mod‑team recap) at that cadence: just for you, no setup for anyone else.
- It’s per‑person. Your cadence is yours; a teammate can pick a different one, or none at all. Off by default.
- The channel post is retired. Pulse now lives where it’s most useful (always live in your portal, and in your DMs if you want it) instead of posting to a server channel.
- SAi sounds like a person now. SAi’s DMs, the “something needs the team” nudges and your Pulse, are warmer and address you by name, less like a robot ticking a box.
v6.9.0: Pulse now includes your mod‑team recap
Your Daily Pulse and the Weekly mod recap are now one thing: Pulse. One clean digest that covers both how your server is doing and how your team is doing: server activity (messages, joins/leaves, AutoMod blocks, warnings, early‑warning flags) plus your mod‑team recap (cases handled and the week’s trend, a breakdown by action, who’s been most active) and a new itemised list of recent moderation actions so you can see exactly what happened at a glance.
- Always in your portal, for every server. Your Pulse now shows live in the web portal for every server, on any plan, no setup required. Open Insights and it’s there, current.
- Choose how often you’re posted to Discord. The Pulse posted to your server channel is now weekly or monthly (whichever you prefer), set in
/settings → Notifications. - The weekly recap is folded in. No more separate recap: it rides along with Pulse.
/retrostill gives you an on‑demand team view any time.
v6.8.1: See a sample of SAi's notifications
Curious what SAi’s DMs look like before one ever fires? Now you can see for yourself. The SAi panel in the web portal has a new “Send me a sample” button: tap it and SAi sends a few example notifications straight to your Discord DMs: the “a decision needs staff” call-up, a Daily Pulse briefing, and an all-clear. Each one is clearly marked as a sample, and it only ever DMs you (if your Discord DMs are closed, the button lets you know). A no-pressure way to see how SAi keeps you in the loop.
v6.8.0: SAi is your notification hub, with DM call-ups
SAi now gathers everything that needs you in one place, and makes sure nothing slips.
- One badge for everything that needs you. In the web portal, the SAi chat bubble shows a red badge with the number of things waiting on you. Open SAi and it greets you and lays them out: approvals a moderator has asked for, ban appeals, AutoMod reviews, raid responses, each with one-tap Approve / Deny buttons.
- Act by chat, too. Instead of tapping buttons you can just tell SAi in plain English (“approve both appeals”, “deny the purge”) and it handles them (and updates Discord as well).
- No more two people doing the same job. When a staff member starts handling something, everyone else sees it’s being handled by them, with a Take over option. Whoever acts first wins, and the others are told who did it.
- SAi will call you if something’s ignored. If a decision sits with no one acting for about an hour, SAi starts sending Discord DMs, one staff member at a time, ten minutes apart, beginning with whoever’s most likely to be around (starting with your moderators, online first) and working up to you, so the whole team isn’t pinged at once. Every staff member can turn these DM call-ups off for themselves in the portal (they’re on by default).
- SAi wears your bot’s face: its picture in the portal is now your Server Assistant bot’s own Discord avatar.
v6.7.33: Co-owners can manage staff permissions
Co-owners can now manage staff permissions, just like you. If you’ve granted someone a co-owner role (full owner-level power), they can now open the “Staff permissions” editor, in Discord and the web portal, to edit, add, and remove staff tiers, and grant or remove co-owners, exactly as the server owner can. Admins and moderators still can’t (only owners and co-owners shape the permission structure).
v6.7.32: Add or remove staff tiers from the web portal
The web portal’s “Staff permissions” editor now does everything the Discord one does, including adding a new staff tier (pick a Discord role) and removing one, not just editing existing tiers. Owner-only, as before. (This needed the bot to send your server’s role list to the portal, so it activates on your next update.)
v6.7.31: Fine-tune staff permissions, action by action
Owners can now fine-tune exactly what each staff tier can do. Previously you assigned a role a whole template (Admin / Moderator); now, in /settings → Role Tiers → Fine-tune, the server owner can grant or revoke individual actions (e.g. give Moderators unban, or take ban off a role), set a tier’s level, and toggle whether it can approve dangerous actions. Owner-only, so no one can widen their own access. The same controls are also in the web portal: server owners get a “Staff permissions” editor under Settings.
v6.7.30: Admins can /purge without owner approval
Admins can now run /purge directly. /purge was the one moderation command that asked the owner to approve it, even when an admin ran it. Now admins (and the owner) purge directly; every other action already ran immediately for whoever’s role allows it.
v6.7.29: Ban appeals & tickets: reliability under heavy activity
Ban appeals and tickets are now safe when several things happen at once. Two fixes for busy servers: a ban appeal can no longer lose a reply (or step on another member’s appeal) when replies and staff actions arrive together, and two members opening a ticket at the same instant now always get separate ticket numbers instead of colliding. Nothing to configure: it just holds up better under load.
v6.7.28: Scam-image "Quarantine" & verification threshold fixes
Scam-image “Quarantine” now really skips the timeout. If you set the scam-image defense to Quarantine (remove the image, no timeout; staff review the log), it was still timing the poster out for an hour on a confirmed match, the same as “Delete + timeout.” Quarantine now removes the image without the timeout, exactly as described.
Verification: a hold threshold of 0 now holds every join. In intelligent mode, setting the hold threshold to 0 (review every join) was being treated as the default instead, so lower-risk joins came straight in. Setting 0 now does what it says, and the same fix applies to the self-serve risk ceiling.
v6.7.27: Notices link to the web portal
Update and maintenance notices now link to the web portal. When Server Assistant posts a Dev Update or Service Notice in your staff chat, its header is now a clickable link to the web portal, so you can jump straight from a notice to managing your server on the web.
v6.7.26: /stats shows live Online & In-voice counts
/stats now shows how many members are online and in voice, live. Run /stats and you’ll see an Online and In voice count alongside the usual server totals, read at the moment you run it, so they’re always current. The web portal’s “Online now” and “In voice” cards now refresh about every 5 minutes (up from hourly). Note these are a periodic snapshot, not live to the second, so for an exact live count use /stats in Discord.
v6.7.25: Fix /setup on servers with lots of channels
/setup works again on larger servers. On a server with 25 or more channels, running /setup failed with a generic error because the log-channel dropdown ran past Discord’s 25-option limit per menu. That’s fixed. Nothing for you to do.
v6.7.24: Mediation reliability fix
Mediations hold up when both people reply at once. If two members in a /mediate session responded at nearly the same moment, one side’s reply could previously be lost and the staff summary might not post. Both accounts are now always captured and the summary is generated exactly once. Nothing for you to do.
v6.7.23: More "it now actually works" fixes
A sweep of fixes so configured features reliably take effect. Blocked links are now caught even when posted without https://; setting up AutoMod through the panel reliably switches it on (even after a previous disable); the onboarding / welcome command’s set, test and status views work again; snippets named things like “playlist” post correctly instead of showing the list; turning Pulse off in the Privacy panel now actually stops the digest; and the Verification panel shows the right status on new servers. Nothing for you to do.
v6.7.22: AutoMod & ticket reliability fixes
A handful of fixes so configured features always take effect. Setting up AutoMod through the /automod panel now reliably turns it on; adding a filter or blocked link whose text happens to contain words like “off” or “on” no longer misfires; borderline AI-review flags are no longer dropped on servers without a log channel; and a custom ticket close message now reaches the person who opened the ticket. Nothing for you to do.
v6.7.21: AutoMod custom filters now apply reliably
Your custom AutoMod filters now always take effect. Custom word filters and blocked links you add are now reliably enforced, including any you’d added before. If you’d set up a custom filter that didn’t seem to be catching messages, it’ll start working automatically. Nothing for you to do.
v6.7.20: /roll, group loot rolls, WoW-style
Settle it with a roll. The new /roll command starts a timed group roll, great for giveaways, prizes, or deciding who gets the drop. Everyone taps Need, Greed or Pass, and each person gets a hidden 1-100 roll. When the timer’s up, Need beats Greed and the highest roll in the winning tier wins (ties are re-rolled), with the results revealed in a little dice-roll flourish. Add an item name and timer if you like: /roll [item] [seconds] (10-300s, default 60). Anyone can start one; one roll runs per channel at a time.
v6.7.19: Manage your log channel in /settings
Change or remove your log channel any time. Open /settings → Behavior → Log channel to pick a channel to mirror your moderation actions to, or choose Portal only to turn the Discord channel off; your dashboard moderation log stays on either way. Setup also walks all the way through now: we removed the Step-1 “finish now” shortcut, so every server that starts /setup completes the quick 3-step wizard and ends up correctly configured.
v6.7.18: Your Discord log channel is now optional
Skip the Discord log channel if you like. Setting a Discord mod-log channel is now optional: in /setup, pick Portal only and carry on. Your permanent moderation log in the web dashboard is always on regardless, so you still have a complete, tamper-proof record of every action. Already have a log channel and want to drop it? Re-run /setup: it loads your current setup, so you can switch to Portal only in a couple of taps.
v6.7.17: Scam-image removals now appear in your dashboard log
A permanent record for every scam-image action. Scam-image removals and timeouts are now saved to your moderation log in the web dashboard, alongside all your other moderation actions: a tamper-proof record that can’t be edited or deleted, even by admins. This works even if you haven’t set up a Discord log channel (or if a channel entry gets deleted), so a removal is never left without a record. Only the action is recorded: who acted, what they did, when, and the reason; never the message content or the image itself.
v6.7.13: Scam-image alerts now always reach your staff
You’ll always see a record when a scam image is removed. If your server hasn’t set a mod-log channel, ThreatNet scam-image actions used to be applied without a visible record. Now, when there’s no log channel set, the alert is posted to your staff chat instead (with a reminder to set a log channel), so a removal never happens silently. Servers that already have a log channel are unaffected.
v6.7.12: Scam-image protection now catches more scammers
Scam screenshots get caught even from older accounts. Server Assistant already fingerprints scam images and blocks them across servers. Now the AI check for brand-new scam images also looks at posts from members who just joined your server, not only those on brand-new Discord accounts. Scammers often join on an older account and post their fake “withdrawal received” or crypto-giveaway screenshot straight away, and this closes that gap. Known scam images are still blocked instantly for everyone, and ordinary members posting normal images are unaffected. It’s on by default wherever scam-image protection is enabled.
v6.7.11: Raid, AutoMod-review & Double-XP buttons keep working too
More alert buttons that don’t go stale. Following the anti-nuke fix, the buttons on three more alerts now keep working even if the bot updates or restarts after the alert was posted, so you’re never left tapping a dead button on something time-sensitive:
- Raid alerts: Lock down and Dismiss.
- The Double-XP offer: Start the event and Not now (this one can sit for days, so it was the most likely to go stale).
- AutoMod “needs review” cards: Delete & warn and Allow.
As before, tapping one of these on an older message just works now instead of showing “This interaction failed.”
v6.7.10: Anti-nuke buttons keep working after an update
Your security controls don’t go stale. The buttons on an anti-nuke alert, Quarantine, Undo quarantine, Restore server, Trust this actor, now keep working even if the bot updates or restarts after the alert was posted. Previously, tapping one later could show “This interaction failed”; now it just works, so you’re never left unable to act during an incident. (The two-person confirmation for undoing a quarantine survives a restart too.)
v6.7.9: Expired buttons now say so
No more silent “This interaction failed.” If you tap a button on an older message, for example a security alert, after the bot has updated, those buttons are no longer connected. Instead of failing silently, the bot now tells you the button has expired and how to get fresh controls (re-run the command, or act from the web portal, where your controls stay live).
v6.7.5: Every way to set up now lands in the same place
However you set up, you get the same result. The /setup wizard, the one-tap /autopilot, and the web portal now all finish identically: your channels and roles configured, a moderation profile matched to your community, and the free AI trial on.
/autopilotis fixed. It now fully completes setup and switches your commands on, instead of leaving the server half-configured.- If you set up earlier and the bot still acted “not set up,” that’s now corrected automatically: no need to run setup again.
v6.7.4: Setup in one tap
Setup is now as fast as a single tap. The first screen of /setup has a new Looks good, finish now button: the bot fills in your channels, a sensible moderation profile for your community type, and your AI: you just confirm. No need to walk every screen unless you want to fine-tune.
- No AI key to enter. Your free 150,000-token AI trial is just on: there’s nothing to set up. Want to run on your own AI key with no trial limit instead? Run
/ai-configany time. - Still fully customisable. Prefer to pick everything yourself? The step-by-step wizard is still there: the one-tap button just skips to the end with smart defaults.
v6.7.2: Finishing setup just got easier
A one-tap way back into setup. If someone tries a command before your server is set up, the bot now shows a Run setup button right there: one tap opens the setup wizard, so you never have to remember the /setup command. The button keeps working even if the original welcome message has scrolled away or the bot has restarted since you added it.
- A quicker nudge if you get stuck. If setup is left unfinished, the friendly reminder to wrap it up now arrives sooner rather than a day later: it only takes about a minute to finish.
v6.7.0: Hanging out in voice now earns XP
Time spent together in voice chat now counts toward your level. While you’re actively in a voice channel, you earn XP for it, feeding the same balance as chatting. The busier the channel, the more it’s worth: a lively call with several people pays more per minute than a quiet two-person chat.
- It rewards being present, not just connected. You earn while you’re actually in the conversation: sitting muted to listen on a movie or study night still counts. You won’t earn while you’re parked in the server’s AFK channel, deafened, or alone in a channel, so nobody can farm levels by idling overnight.
- Double-XP events apply here too. If your server’s running a Double-XP event (or you’ve got a personal Double-XP buff from leaving a review), your voice time earns at 2× as well.
- Free for everyone. Like chat XP, voice XP is on for all servers, no Premium needed.
v6.6.3: /meme now captions the moment
/meme now reads like an emote. Instead of just echoing your search, the bot adds a caption describing what the meme says about you: /meme this is fine → “@User has decided everything is fine”, /meme drake → “@User has notes”, /meme woman yelling at cat → “@User is losing an argument to a cat”.
- Smart, in-context captions: on AI-enabled servers (your AI allowance, free trial included, not Premium-only) the caption is written to fit the meme and the conversation, accurate and a little funny. It’s governed by the same AI theme-pick toggle as emotes in
/settings → Emotes. - Always works: when AI isn’t available it falls back to a built-in library of well-known memes for a witty caption, and an unrecognised meme just posts the image. No dead ends.
GIFs & memes by KLIPY.
v6.6.2: New /meme command
Drop the perfect meme into chat. New /meme <search> posts a meme image matching your search: /meme distracted boyfriend, /meme this is fine, /meme success kid. Memes come from KLIPY.
- Shares your emote controls. The same
/settings → Emotespanel governs memes: channel allowlist, per-minute rate limit, and NSFW safe-search all apply, plus a new Memes on/off toggle (on by default).
GIFs & memes by KLIPY.
v6.6.1: Emotes that show the action, with natural captions
Emotes now show what you’re actually doing. /laugh posts a laughing GIF, /cry a crying one: the search leads with the action and prefers clips whose title or tags match it, so you get a relevant reaction instead of a generic theme image. Add a theme on top (/cry anime) and it still applies; if nothing in that theme fits the action, you get a plain matching GIF and a small note saying so.
- Captions read like a sentence. Posts now say
@User is crying,@User hugs @Target, or@User waves at @Target, instead of just the emote’s name.
GIFs by KLIPY.
v6.6.0: Emote commands: post the perfect reaction GIF
React with a GIF in one tap. New /emote (and the shortcut /e), plus /cry, /hug and /dance, drop a fitting GIF straight into chat, with autocomplete over hundreds of emotes (cry, dance, laugh, facepalm, wave… and aliases like lol, ty, congrats).
- Smart by default. Just run
/cryand the bot picks a theme that fits your server and the moment, then grabs a random matching GIF, so it’s fresh each time. Prefer your own flavour? Add it:/cry anime,/cry wow,/cry naruto. - Make it yours.
/emotestyle animesets your personal default theme so your emotes lean your way across every server;/hug @memberaims a reaction at someone. - Powered by your AI allowance, free trial included. The auto-theme uses your server’s AI (the free 150K trial counts); once that’s used up it simply falls back to a plain random GIF, so the commands always work. It’s not Premium-only.
- Server controls in
/settings → Emotes. Turn emotes on/off, limit them to certain channels, set a per-minute rate limit, allow spicier GIFs only in NSFW channels, and toggle an off-by-default “flavor pack.” Safe-search is on by default.
GIFs by KLIPY.
v6.5.3: Reward messages now show your spendable XP
The “you now have **X XP” line in vote and review thank-you messages now matches Crestbound.** Your wallet has two numbers: the lifetime XP that ranks you on the leaderboard (it only ever goes up), and your spendable XP: the balance you spend on Booster Packs in Crestbound, which drops each time you open a pack. Both go up together when you earn, so they match until you spend.
Those reward messages were showing the lifetime number, so after you’d opened a pack it could read higher than the balance Crestbound actually shows. Since the message is telling you to go spend it, it now quotes your spendable balance: the same figure you see in Crestbound. Nothing changed about how much you earn or can spend; only the number in the message.
v6.5.1: Earn rewards for reviewing Server Assistant
Leave us a review, get rewarded. Run /review to get your personal code, add it to a review you write on a bot directory, then run /review with the link, and you’ll earn 500 XP plus 1 month of Double XP.
- Double XP that follows you. For a month, you earn XP twice as fast in every server you share with Server Assistant, then spend it in Crestbound. Earn it again on another directory and the month is added on, not wasted.
- Across the directories: Top.gg, DiscordForge, Discord Bot List and discord.bots.gg. One reward per platform.
- Verified by your code, not a screenshot. The bot checks that your unique code is present on the live review page, so it can’t be faked, and only your own review counts. If a site hides reviews from automated checks, your link goes to our team for a quick manual confirmation and you’re rewarded by DM.
Thanks for helping more communities find the bot!
v6.4.0: ThreatNet cross-server protection is now live
ThreatNet is now live. When a user with a serious, corroborated history of abuse on other protected servers joins yours, your staff now see a clear advisory flag on them (free, on every server) and decide what to do. The flag never bans or sanctions anyone on its own; your team stays in control.
- Premium servers can go further with ThreatNet auto-protect. Switch it on and the bot will automatically ban a joining user whose account meets a cross-server risk threshold you choose, closing the gate before they can act. It’s off by default; turn it on with
/threatnet autoban on, or in/settings → Security → ThreatNet. The safesthighthreshold (serious and corroborated across two or more independent servers) is the default; you can set a broader one, and you choose the level. - Privacy-first and severity-only. Only a minimized, generic severity signal is ever shared across servers: never the offence type, your staff’s reasons, AI summaries, or message content. Individuals can opt out of profiling at any time. Full detail is in our Privacy Policy.
- Never acts on opt-outs. Auto-protect never bans anyone who has opted out of network profiling.
v6.3.2: One-tap verification channel setupSuperseded by v6.13.0
Setting up verification just got a lot easier. Verification works by hiding your channels from people who haven’t been verified yet and revealing them once they pass, but wiring that up by hand, channel by channel, is tedious.
Now there’s a “Auto-configure channels” button in /settings → Members → Verification. It proposes which channels stay public (your verify channel, plus rules / announcements), lets you keep any extras visible with a quick picker, and then, in one tap, hides everything else from unverified members and opens it to your verified role.
- Nothing is guessed blindly: you see exactly what will change before you confirm.
- One-tap Undo: it snapshots your current setup first, so you can revert instantly if it’s not what you wanted.
- You’ll need a verified role set and the bot’s Manage Channels/Roles permission.
Also: the Notifications settings menu is flatter: it opens straight to your notification options (with Instant alerts and Pulse inside), instead of an extra step.
v6.3.1: Settings, reorganised into four clear sections
/settings is tidier. As Server Assistant has grown, the settings list got long, so it’s now grouped into four sections:
- Settings: branding, presets, behavior, role tiers, AI, white-label, snippets, custom commands, FAQ
- Members: new-member handling, verification, onboarding, role panels
- Notifications: event pings and the daily Pulse digest
- Security: AutoMod, anti-nuke, scam-image protection, channel allowlist, privacy, backups
Tools that used to only have their own command, like AutoMod, AI config, onboarding, backups and more, can now also be opened straight from the matching section of /settings. Their commands still work exactly as before, and nothing about who can use what has changed.
v6.3.0: ThreatNet now stops scam images, not just scam text
Sick of seeing scams like this? An account joins, posts a screenshot of a fake “withdrawal received” or a too-good-to-be-true trading profit, and vanishes, and because the whole pitch is inside a picture, ordinary word filters never see it.
ThreatNet now recognises scam images. The moment a scam screenshot is flagged anywhere on the network, every server is protected from it: Server Assistant spots the same image and removes it automatically, before your members fall for it.
- It just works, on by default, for everyone, on every plan. Nothing to set up. Known scam images are removed the moment they’re posted, and the person who posted one is timed out.
- It catches brand-new scams too. On AI-enabled servers, images dropped by brand-new members are checked for never-seen-before scams, and once spotted, the whole network learns to block them.
- You’re in control. Prefer to review instead of auto-remove? Switch it to quarantine or flag-only under
/settings. - Privacy-first. Servers only ever share a small, irreversible fingerprint of a flagged scam image: never the image itself, and never anything tied to a person. The same opt-out that covers the rest of ThreatNet covers this too.
It’s the biggest upgrade to ThreatNet yet: turning every server that flags a scam into protection for all the others.
New, the Server Assistant Wiki: every feature & command, with live examples
There’s now a full wiki for Server Assistant: a complete, browsable reference that shows a live mock-up of exactly what you’ll see in Discord for every command, wizard and flow.
- Main features: a guided tour of what the bot does, with deep-dive pages for Pulse, ban appeals, the audit log, alt / ban-evasion detection and ThreatNet.
- Every command: grouped by area (moderation, AutoMod, AI, tickets, member experience, account & premium), each shown the way it appears in Discord.
- Step-through wizards: walk the
/setupwizard and other multi-step flows one screen at a time. - Search: find any command or feature in seconds.
Open it from Main Features in the top menu, or jump straight in at the wiki. Setup and the full command reference now live there too.
v6.2.7: Bring your own Anthropic (Claude) key
You can now bring your own Anthropic (Claude) key. Anthropic has long been listed as a supported bring-your-own-key provider, but the key-entry form only accepted OpenAI and xAI keys, so an sk-ant-… key was turned away. That’s fixed: in /setup and /ai-config, the form now accepts your Anthropic key alongside OpenAI and xAI.
Just paste the key: the provider is auto-detected from it (sk-ant-… → Anthropic, sk-… → OpenAI, xai-… → xAI), so the provider box stays optional, and you can leave the model blank for a sensible default. As with any BYOK key, your server runs AI on your own account (no trial limit) once you’re on Premium BYOK ($3/month).
v6.2.6: Setup: bringing your own AI key no longer gets stuck
A smoother “use my own key” step in /setup. If you chose Enter my own key and then closed the form, or typed the provider in a way the bot didn’t recognise, the wizard could get stuck: every Finish said “you didn’t fill the form” with no obvious way forward, even when you’d pasted a perfectly good key.
Now the bot auto-detects the provider from your key (an sk-… key is OpenAI, an xai-… key is xAI), so the provider box is optional. If you change your mind or close the form, the included free trial (150k tokens) stays selected and Finish just works. And if you paste a key the bot can’t use here, it tells you plainly: the built-in AI already runs on Claude, so no key is needed for the free trial.
v6.2.5: Setup: the permission-review buttons respond reliably
A smoother permission review during /setup. When the wizard asks you to review permission changes, applying them can take a few seconds: a series of role and channel edits. Previously, on a slow apply, the Approve & Apply, Re-check and Generate fresh buttons could appear to do nothing, leaving you to click again.
Those buttons now acknowledge your click straight away and then apply the changes, so the wizard moves on reliably no matter how long the apply takes.
v6.2.4: Setup-first: commands point you to /setup
A clearer first run. If you add Server Assistant and start using commands before running setup, they used to quietly do nothing, which can look like the bot is broken.
Now, in a server that hasn’t been set up yet, commands point you to /setup so it’s obvious what to do first. The getting-started and personal commands still work right away: /setup, /help, /invite, /portal, /whatsnew, /support, /premium, plus your account ones like /rank, /vote and /leaderboard (your XP follows you, not a single server, so those work everywhere). Everything else unlocks the moment setup is complete.
v6.2.3: The XP Update: Crestbound, Double-XP & better vote rewards
Your members earn XP just by being part of the conversation, and now there’s a whole game to spend it on.
Server Assistant quietly tracks how active your members are: every message earns a little XP, members climb through levels, and a server leaderboard shows who’s most involved. It’s built in, on by default, and needs nothing to set up: see XP & leveling for /rank, /leaderboard and level-up announcements.
Crestbound: the headline. The XP you earn is a currency you can spend in Crestbound, the Crest-collecting game in the web portal:
- Open booster packs with your XP and collect the Crests of the first Chapter, Embers of the First War, across four rarities.
- Discover brand-new Crests. The first person to open an undiscovered Crest summons its artwork: drawn once and then shared with every player, forever, with a line of credit to the discoverer.
- The grand reveal. When your batch finishes illuminating, one Unveil the Crests moment turns them all over at once: the heralds present your Crests, art and all, seen for the very first time.
- Burn spare Crests back into XP, and complete your collection.
Double-XP events. When a server has gone quiet, the bot offers your staff a one-tap 48-hour Double-XP event: while it runs, every member earns 2× XP for chatting. Only a server manager can start one, and the staff chat gets a recap of the total XP earned when it ends.
Better vote rewards. A vote for Server Assistant on DiscordForge now earns 75 XP (doubled to 150 if you’re in a server that has SA) and you can vote again every 8 hours. The thank-you and reminder DMs got a refresh, and the Crestbound page shows a live countdown to your next vote.
Weekly recap. Once a week, if you earned any XP, the bot sends you a friendly DM with your total: split into how much came from being active versus voting.
A note on fairness: XP is tied to you, not a single server: chat XP from every server you’re in, plus your voting rewards, add up into one account-wide total that you spend in Crestbound.
v6.1.0: Smart join verification: hold the risky joins, wave the rest straight throughSuperseded by v6.13.0
The second feature you voted for in v6.0 is here: verification that only gets in the way of suspicious joins.
Server Assistant now scores every new member as they join and decides whether they need a quick check. There are three modes:
- Intelligent (the new default): regular members walk straight in. Only risk-scored joins (brand-new accounts, no profile picture, or accounts carrying cross-server or ban-evasion signals) are held for a quick check. The right balance of safety and zero friction for real members.
- On: everyone completes verification before they get access.
- Off: no verification.
When someone is held, what happens next depends on how risky they look:
- Lower-risk → self-serve. They get a link to a quick web page: sign in with Discord, confirm you’re a real person, done: access is granted automatically, no staff needed. They’re pointed there from a tidy, read-only #verify channel.
- Higher-risk → your call. Your staff get a one-tap Approve / Kick / Ban card with the reasons, so a human decides. You set where that line sits.
A few things worth knowing:
- It’s tuned to be safe by default. New servers start on Intelligent. Existing servers are only switched on automatically if you already had a verified-access role set up: otherwise it stays off until you choose to turn it on. You’ll get a one-time heads-up in your staff channel either way.
- Everything stays on your server: verification answers and decisions are never shared anywhere.
- Manage it all under
/settings → Verification: the mode, how sensitive it is, and the self-serve cut-off.
Also in this release: an unban now clears the slate: if you unban someone (or lift a ban directly in Discord), it no longer counts against them in alt-detection or join risk-scoring. An overturned ban shouldn’t follow someone around.
v6.0.0: Anti-nuke / rogue-admin guard: a smoke alarm for your server
One of the three features you voted for in v6.0 is here: protection against a server “nuke” or a compromised admin account.
Server Assistant now watches for the tell-tale signs of a server nuke: one account suddenly deleting channels or roles, mass-banning or kicking members, or grabbing dangerous permissions in a tight burst. When that happens, it works out how likely it is to be an attack and responds straight away:
- It stops the damage. At high confidence it automatically quarantines the offending account, stripping the roles giving it power, then alerts you and your staff with a short, plain-language summary of what happened. If it was a false alarm, one tap puts everything back.
- You’re always safe. The server owner is never affected, and you can add trusted staff, roles or bots to a whitelist so their normal admin work is never flagged.
- Tuned to your community. Sensitivity is set automatically from your server type (busier servers get more headroom; locked-down servers are stricter), and you can adjust it yourself.
- Put your server back exactly. Server Assistant keeps a regular snapshot of your roles’ permissions and channel settings, so it can restore them precisely, and even recreate deleted channels, after an incident.
- Two-person rule. Optionally require two different admins to undo a quarantine, so a single compromised account can’t quietly switch your protection off.
Everything stays local to your server: nothing is shared anywhere. It’s on by default (detection and alerts don’t change anything on their own), and you’ll get a one-time heads-up in your staff channel before the automatic protection can act. Manage it all under /settings → Anti-nuke.
What's changed in the Server Assistant portal: the web dashboard you sign into with your Discord account.
v1.7: the portal joins the ease-of-use pass
- Add Server Assistant when you have none yet. If none of your servers has Server Assistant installed, the portal now shows an Add Server Assistant button right on your dashboard instead of leaving it empty.
- A Minecraft bridge status card. A new read-only card shows whether your Minecraft bridge is connected, with a link to the wiki for the full setup guide.
- Plan names spelled out. Plan names now read in full, for example “bring your own key,” instead of a short code.
- The Threat Score line explains itself. A plain explanation now sits alongside the number, so you know what it means without leaving the page.
- Retry when something fails to load. If your billing details or tickets fail to load, a Retry button appears instead of a dead end.
- Clearer guidance without moderation permissions. If your account lacks the Discord permissions Server Assistant needs, the portal now says so plainly and points you to what to do about it.
- Resolving a Minecraft ban appeal with a warning. Doing this from the portal now records a standard reason; the same action in Discord still lets you type your own.
v1.6: Your AI usage breakdown reads in plain English
- The dashboard was showing you our names for things. The breakdown of what your server’s AI allowance went on has been on your dashboard for a while, but it labelled each line with an internal short code,
nl_extractandmcdc_aiand the like, which meant nothing to anyone outside our own code. - Every line now has a plain English name, and closely related ones are gathered together rather than listed apart, so the assistant appears once instead of five times over. The figures themselves are unchanged: only the labels and the grouping are.
- Ask SAi and you get the same names. Asking it what has been using your tokens now comes back in the same plain wording as the dashboard, instead of the internal codes.
v1.5: Long messages get a box you can write in
- A one-line field is no place for a thousand characters. Editing your welcome message or your join-celebration message meant typing into a single-line box and scrolling sideways through the lot, which made writing a greeting that runs over several lines genuinely awkward.
- Any setting with a large character allowance now opens as a resizable text area, with its label above it and the box using the full width of the row. The Premium settings tab works the same way.
v1.4: The level-up channel is editable at last
- “Level-up channel” was greyed out, and should not have been. The field sat in Settings, Leveling with a tooltip describing what it does, and no way to type anything into it. Every other greyed field on that page is greyed because a channel picker is still to come; this one had simply been swept up with them by mistake, and stayed that way for a long time.
- It works now. Choose where level-up messages post, or leave it blank to keep them in whichever channel the member levelled up in. Nothing else about leveling changed, and if you never wanted a separate channel there is nothing to do.
v1.3: A simpler leveling toggle
- One “Level-up messages” switch. The portal’s leveling section now has a single Level-up messages on/off toggle in place of the old, confusing pair. Turn it off and the celebratory level-up messages stop; members still earn XP exactly as before, they just do it quietly.
v1.2: Crestbound joins the portal
- XP Games on the portal. The portal home now has an XP Games section, with Crestbound, the Crest-collecting game, as its first entry. Open it to jump straight into your collection.
- My Collection. A new view shows every Crest in the current Chapter: the ones you’ve found in full and the ones you haven’t as placeholders, plus your spendable XP and a collection counter at the top.
v1.1: Always up to date
- Automatic updates. The portal now refreshes itself in the background, so you always see the latest version without needing to hard-reload the page.
- Wiki link in the footer. A link to the Server Assistant Wiki now sits in the portal footer, so the full feature and command reference is always one tap away.
v1.0: The customer portal launches
- Sign in with Discord. The customer portal launched as a web dashboard you reach by signing in with your Discord account, a home for the parts of Server Assistant that live on the web rather than in chat.
What's new in Crestbound: the Crest-collecting game in the portal, powered by the XP you earn in Discord.
v1.5: The bot rounds out
- World-first discovery announcements. Server admins can pick a channel with
/setup; when a member makes a genuine world-first discovery, the server hears about it the moment the art comes to light. Announcement only, no reward ever differs by server. /duel: see your active Wardeck and jump straight onto the Battle screen.- Battles preload every Crest’s art so nothing pops in mid-duel.
v1.1 to v1.4: A cleaner, calmer Crestbound
- Discoverers are branded onto their Crests. The discoverer’s name now reads as a hot brand seared into the card, and you’ll see it burn in live the moment a Crest is revealed.
- Rarity now reads from the cost stamp alone: the shaped, coloured seal on the art. The old rarity-coloured borders are gone everywhere.
- A quieter, cleaner interface: decorative emoji swept out of the game’s menus, shop and messages; placeholder battle sounds removed (real, generated audio arrives as it’s created); the Starter Decks gallery and the Deck Builder rebuilt to match the rest of the game’s look.
v1.0: Crestbound stands alone
- The game moved into its own home at crestbound.wandweb.co: its own sign-in, its own Discord bot, the same game. Your collection, XP, Cinders, decks and discoveries all came with it; old links carry you to the new address.
- Everything you know, packs, discovery, Wardecks & battles, quests, the Shop, is unchanged, just faster on its own foundations.
Coming soon: Wardecks & battlesSuperseded by v1.5
- Battle mode has since arrived. Assemble a Wardeck — a 30-Crest battle group drawn from your collection — and put it to the test with
/duel. See the v1.5 entry above. - Server Wars, on the far horizon. A community-versus-community season: your Discord server is your banner, your members’ duels bank points for it, and fleet-wide standings crown a champion server each season. Cosmetic glory only, no server or member ever gains a gameplay advantage. Parked until enough communities are battling; watch this page.
v0.5: Make it yours: Card Backs
- Card Backs arrive. The Shop now has a cosmetics shelf: pick the free Banked Ember, one of five faction backs (300 XP each), or the prestige Vault Gilt (150 Cinders, the same quest currency that unlocks the Ember Vault). Your equipped back is shown everywhere a Crest sits face-down, collection placeholders and deck faces. Purely cosmetic: no card back ever changes how the game plays.
v0.4: A fullscreen home and the Shop
- Crestbound goes fullscreen. The game now opens into its own full-screen home: a main menu of illustrated panels, your Collection, the Shop, and the battle features as they arrive, with your XP balance always in view at the top.
- A proper Shop. Packs have moved out of the collection page into a dedicated Shop: pick one of the five faction packs (5 Crests from a single faction, no Mythics there), open the classic Chapter Booster, or eye up the Ember Vault, a premium pack of guaranteed rares crowned by a Mythic, opened with Cinders, a currency earned from quests. Your collection keeps a shortcut straight to the Shop.
- Hand-illustrated everywhere. The home screen, its menu panels and every pack in the Shop now carry rich HD artwork in the same style as the Crests themselves, each piece fades in as it’s ready.
v0.3: Tidy your collection: burn spare Crests
- Burn spare Crests for XP. Got duplicates? You can now burn a spare Crest to recover some XP, common 5, uncommon 12, rare 30, mythic 75, and spend it on more packs. There’s a confirmation every time, with an extra warning if you’re about to burn your only copy of a Crest.
v0.2: A more polished collection
- Rarest first. Your collection now sorts with the most prized Crests at the top, mythic, then rare, then uncommon, then common, so the headline pieces are always front and centre.
- Reveal animations. Opening a booster pack now plays a short reveal, with the Crests turning over one by one, and rare and mythic Crests catch the light with a subtle sheen.
- Collection counter. My Collection now shows how many Crests of the Chapter you’ve found at a glance.
v0.1: Crestbound launches
- The game arrives. Crestbound launched in the portal with its first Chapter, “Chapter I: Embers of the First War”: a sweeping cast of 450 Crests to collect across four rarities: common, uncommon, rare and mythic.
- Booster packs. Spend 200 XP to open a booster pack of 5 Crests, with the last Crest in every pack guaranteed to be rare or better.
- My Collection. Every Crest in the Chapter shown in one place, the ones you own in full, the ones still out there as placeholders, so you can always see what’s left to find.
- Powered by your XP. Crestbound runs on the same account-wide XP you earn from chatting, voice time, and from voting for Server Assistant, no separate purchase, no Premium required.
What's new in the Minecraft ↔ Discord bridge (MCDC): the bot side that links a Discord channel to your Minecraft server, and the free companion plugin that runs on the server. The plugin has its own version (currently v0.30.0); most bridge improvements are made on Server Assistant's side and need no plugin update.
Bridge setup that talks back (bot v6.144.0)
Pairing tells you when it’s done. The moment your server first connects, staff chat gets a note that the Minecraft bridge is connected, with the plugin version and player count included.
Install comes before the code. The /mcdc panel now tells you to install the
plugin first, and only then hands you the 30 minute setup code, in that order. A
reminder sits alongside the code too: it goes into your server console, not into
Discord.
A focused setup view stands in for the full panel until your server is connected, so you are not looking at options that do not apply yet.
Regenerating a token asks first, if a bridge is already connected and live, so you cannot break a working pairing by mistake.
In Minecraft chat. Long Discord posts no longer flood the screen, mirrored messages are capped. Notices lost the emoji that show up as boxes in the vanilla client. Players who already linked their accounts stop being asked to link again on every join.
The wiki’s Setup page has been rewritten around the 30 minute setup code, so it matches what you will actually see when you pair your server.
v6.142.0: bans and kicks are announced in game
Players just saw someone vanish. A ban or kick made through Server Assistant said nothing in Minecraft chat, so the people playing had no idea what had happened, or that anyone was watching at all.
One line now goes to the whole server, for example “Griefer was banned by Staff.” The player and what happened, and nothing more.
The reason is deliberately left out. It often quotes exactly what somebody said, so putting it in front of everyone can be worse than the thing being punished. It stays with your staff records. The moderator is not named either, so nobody becomes a target for the player who was just removed.
Bans made outside Server Assistant are left alone. A console ban or another plugin’s ban already announces itself however your server is configured, so SA does not say it a second time.
v6.140.0: ban or kick a player from Discord by name
Staff could only act on players SA had already flagged. Moderating your Minecraft server from Discord meant waiting for SA to catch someone, or for them to appeal. Anyone else had to be handled from the server console.
/mcban and /mckick take a Minecraft name, with no need for that player to be in your
Discord. /mcban works whether or not they are online. Your reason is shown to the player
and kept with your records, and both run through the same permissions, records and logging
as the buttons on a flagged message.
How much SA can do depends on whether it knows the account. While a player is online SA can match the name to their Minecraft account, so a ban also gets a record entry and an appeal link on the banned screen. Ban a name SA has never seen and the ban still applies, but there is no record entry and no appeal link. The reply always says which of those happened.
A kick needs them online to land, so if they are not, SA says nothing was sent instead of reporting a kick that went nowhere.
Nothing is shared beyond your server, the same as every other in-game action.
v6.139.0: a ban appeal can be accepted with a warning
Approve or Deny, and nothing in between. Accepting an appeal meant wiping the ban away entirely, so the fact that a player had been banned once and let back in on terms was simply lost.
Warn and unban keeps it. The player is unbanned exactly as Approve would, and a warning goes on their record in the same moment. You type that warning when you press the button, so it says why the appeal was accepted rather than repeating what they were banned for.
Nothing is shared beyond your server. In-game moderation stays on your own records, the same as kicks and bans already do.
Plugin v0.30.0 + v6.136.0: the appeal link now appears on the banned-login screen
A banned player had no reliable way to find their appeal. The link was only ever shown on the screen drawn at the moment of the ban, which is gone the instant they close the game, and which the server has already drawn by itself when a ban is issued outside SA.
Now it is on the screen they actually reach. Every time a banned player tries to rejoin, the “you are banned” screen shows the reason and a clickable appeal link, in the same layout as before so there is nothing new to recognise.
Bans issued on the server itself now have an appeal at all, which they did not before.
Older bans are covered too, since the screen appears on every attempt to come back.
Servers on auto-update get this without touching anything. A kick still carries no appeal.
v6.135.0: the join notice's Discord link now connects the player's account too
No plugin update needed. This is a Server Assistant change.
One click instead of a typed code. The Discord link a player receives when they join now opens a page that asks Discord for their permission, connects their Minecraft account to their Discord account, and then takes them to your invite. Previously they had to type a linking code in game, which in practice meant most players never linked at all.
Why it is worth having. A linked player’s in-game warnings and punishments go onto their Discord record, so staff see one history rather than two disconnected halves.
Consent stays with the player. Nothing is connected until they approve it on Discord’s own screen, and the in-game line says what the click will do.
If anything fails, the link still just opens your Discord, so the player never loses the thing they clicked for.
Plugin v0.29.0 + v6.134.0: a ban or kick made on the server is reported to Discord
Punishments that did not come from SA were invisible. An operator’s /ban in game, a
console ban, or another plugin’s ban produced nothing on the Discord side: no staff-chat
notice, no entry on the player’s record.
Plugin v0.29.0 reports them. SA posts the ban or kick to your staff chat with who issued it and the reason, and files it on the player’s record alongside their other warnings. A ban issued from the console is shown as coming from the server console rather than from a player.
SA’s own bans are not double-reported. The plugin recognises them from the ban record itself, so an SA ban is announced once, as before.
Servers on auto-update get this without touching anything.
Still to come: the appeal link for a player banned this way, which will appear on the “you are banned” screen when they next try to join.
v6.133.0: Kick becomes Kick and Warn, with the reason on the kick screen
No plugin update needed. This is a Server Assistant change.
A kick now teaches something. When you kick a player from a flagged-chat card, the reason you type is shown to them on the kick screen as a warning, rather than disappearing: “Warning: <your reason> (this has been added to your record)”.
The warning is kept. It shows in /warnings for that member, tagged ⛏️ Minecraft,
in the same list as their Discord warnings. If the player has not linked a Discord account
the warning is held against their Minecraft account and folded into their record
automatically once they link, so a regular offender who never links still builds a history.
Ban is unchanged, including its appeal link. A ban is not a warning.
Nothing leaves your server. In-game moderation is not shared with other servers.
v6.132.0: handle a flagged message or a ban appeal from your portal
No plugin update needed. This is a Server Assistant change.
Two Minecraft cards had portal buttons that did nothing. When SA flags an in-game message, or a banned player submits an appeal, the card appears both in your Discord staff chat and in your portal’s Needs input strip. Only the Discord buttons were wired up. Pressing Kick, Ban or Dismiss on a flagged message from the portal, or Approve or Deny on an appeal, failed quietly and left the card where it was.
Approving an appeal from the portal is the one to re-check. The player stayed banned. Approve it again and the unban is queued on your server.
A kick-only moderator can no longer press Ban from the portal. Each button is now permission-checked on its own, the way the Discord buttons always were.
What SA sends your server is unchanged. The reason a player sees on the disconnect screen names the rule that was broken, and portal actions are recorded in your log channel and audit trail exactly like Discord ones.
Plugin v0.28.0 + v6.131.0: links the bot sends are clickable again, and the out-of-tokens line is one line
Links attached to a bot message were being dropped. The plugin could make a [wiki]
citation clickable, and that turned out to be all it could make clickable: a message
carrying a link but no [wiki] marker had its address quietly discarded and arrived as a
sentence with nothing after it. Two recent features were affected, the first join
welcome’s optional link and the join notice’s Discord invite, both of which were
described here as clickable when they were not.
Plugin v0.28.0 fixes it for both. Any bot message carrying a link now gets a short
clickable chip at the end of the line. A [wiki] citation looks and behaves exactly as it
did, and nothing changes for ordinary bridged chat. Servers on auto-update get this
without touching anything, and both features start working on the existing bot.
The out-of-tokens notice is now one line in game. It used to print the entire Discord notice into Minecraft chat. It now reads “My battery is flat rn but I’ll be back on [date], or charge me up now [here]”, with [here] opening your portal.
Why the link is a chip and not the address. A full URL ate a third of a chat line, so the chip is short and the address is on hover, where it stays readable and copyable. On a plugin older than v0.28.0 the marker prints as plain text, so nothing is lost, it just cannot be clicked.
v6.130.0: the in-game join notice can carry your Discord invite as a clickable link
A link players can click, rather than an address they have to retype. The join notice
your bridge shows arriving players is drawn by the plugin as plain text, so an invite typed
into the notice itself reaches them as characters to copy out of chat by hand. /mcdc now
has a 🔗 Discord link button beside Join notice: put your invite there and the
bridge sends it to each arriving player as a proper clickable link, privately, just after
the notice.
Every join, not just a player’s first. The First join welcome from the previous release fires once per player, ever. This one goes out each time someone joins, because the regular who is still not in your Discord stopped being a new arrival long ago.
It is part of the join notice, and follows it. Turn Join notice off and the link goes quiet with it. Save a link while the notice is off and the bridge says so at the time, rather than letting you find out by watching players arrive to silence.
No plugin update needed. This works with the plugin you already have. The link arrives a moment behind the notice rather than as part of it, which is the one visible sign that the two are sent separately, and a player who joins and quits within a second or two may not see it.
Nothing is sent until staff add an address, and the change is recorded in your log channel like any other setting.
v6.129.0: your bridge can welcome a player in Minecraft chat the first time it sees them join
A new arrival can now be greeted in game, not just noted in Discord. The bridge has always been able to mirror a “joined the game” line into your Discord channel, but nothing ever happened on the Minecraft side, so nobody already playing had any signal that the person who just spawned in had never been there before. Now the bridge can post a welcome into the server’s chat.
It is a broadcast to the whole server. Everyone playing sees it, rather than it being a quiet note to the person who just arrived. That is the point of it: the people already on the server get the chance to say hello back.
Staff write the wording. /mcdc has a new First join page holding three things: a
switch, the message itself, and an optional link. Write [player] where you want the name
of the person who just joined, and [server] where you want your server’s name. Leave the
message box empty and a friendly built-in line is used instead, so turning the switch on is
by itself enough to get something sensible into chat.
The optional link arrives with the message. Add one and it is delivered alongside the welcome, so a newcomer’s very first line can also point at your rules, your map, or whatever you would rather they read first.
Off until you switch it on. No linked server starts welcoming anyone until its staff turn this on deliberately.
It greets the first join Server Assistant has seen, not a player’s first join ever. This is the part worth reading before you flick the switch. The bridge only knows about joins from the point this update reaches you, so on the day you turn it on it has not yet seen any of your regulars. Each of them gets one welcome, on their next login, and then never again. Within a few days it is greeting genuine newcomers only. That is expected behaviour rather than a fault, and if you would rather your regulars did not each get one, switch it on at a quiet hour.
A rename is not a new arrival. A player who changes their name is not welcomed a second time.
Nothing to install. This is a change on Server Assistant’s side and needs no plugin update.
Plugin v0.27.0: typing a question no longer brings up a list of player names over the chat
What was wrong. Asking the assistant something in game popped up a box of online player
names over every word you typed. Type /ody how do i build a farm and the suggestion box
appeared on how, then do, then i, and so on, sitting over the chat area and putting a
player name under Tab and Enter while you were still mid-sentence.
Why it happened. A command that offers no suggestions of its own does not end up suggesting nothing: Minecraft falls back to matching whatever you last typed against the list of players currently online, and it does that at every word. The ask command takes one long free-text question, so it got the player list on all of it.
What changed. The plugin now answers for its own commands:
/askody(and/ody,/asksai) suggests nothing, anywhere in the question. Its argument is a sentence, so there is nothing a suggestion could usefully offer./saportalsuggests nothing; it takes no arguments./sainow offerscompanion, thenonandoff./mcdcnow offerslink,reload,status,updateandversion, pluscancelafterupdate, and only to staff who can already run it.
Those last two are a small bonus rather than part of the fix: the real subcommands had been buried under the player list too, so nobody had ever been shown them.
/mcdc link deliberately suggests nothing after the word itself. What follows it is your
setup code and relay URL, and a popup is exactly where a secret gets read over a shoulder or
picked up in a recording. The plugin has refused that command in in-game chat since v0.24.0
for the same reason.
Nothing about who may use the assistant changed, and @sai’s appearance in the /msg
suggestion list is untouched: that is a separate mechanism on a vanilla command and it
behaves exactly as before.
Nothing to do. Auto-update will pick this up, or run /mcdc update from your server
console.
v6.121.0: linking, unlinking and regenerating your bridge token are now on the record
What was wrong. Linking a Minecraft server to a Discord channel, unlinking it, and regenerating its bridge token were recorded nowhere at all. Not in your server’s Discord log channel, not in the audit trail, not anywhere you could go back and read later. Those three are the highest-value actions on the whole bridge: connecting a server, cutting it off, and minting a new credential for it. Nothing said who had done any of them, or when.
What changed. Each of the three now posts an entry naming the staff member who did it and which linked channel it applied to, alongside the bridge settings v6.118.0 already covered.
Your bridge token is never republished, and neither is a setup code. Free-text boxes such as the @sai Attitude have been logged by shape since v6.118.0, for example “attitude set (63 characters)”. A credential does not get even that much: the entry says only that a token was issued, replaced or revoked. A character count of a fixed-shape credential tells a reader something about the credential itself and nothing useful about the change, so it is left out. The plugin has refused to echo a setup code back into in-game chat since v0.24.0, and this holds the same line on the Discord side.
Regenerating writes two entries, not one. Your old token stops working the moment it is revoked, whether or not the new one is minted successfully. Recording only rotations that went to plan would leave the revocation of a live bridge token unrecorded, which is the case you would most want to look up.
The security-relevant /settings controls came along too. ThreatNet auto-protect and its
threshold, the anti-nuke switches, the scam-image controls, the channel allowlist, AutoMod’s
AI review, alt detection, the anti-raid thresholds, the Privacy toggles, the auto-role on
join and the verification gate all now post a line as well. This release also picked up the
bridge’s chat translation target, which the v6.118.0 sweep of that panel missed.
How this sits with log verbosity. On errors only, these entries are hidden. On dangerous only, they are shown, because who linked or unlinked your server and who replaced its token is exactly what a dangerous-only watcher is watching for.
Nothing to install. This is a change on Server Assistant’s side and needs no plugin update.
v6.120.0: the Greeting box in /mcdc → @sai Studio now says what it is
Asked what Greeting did, the panel had no answer. It sat unlabelled between Tone · how it talks and Attitude · who it is, and the word reads like something sent when a player joins, which it is not. It now reads Greeting · its opening line: the line @sai opens with on its first reply in a conversation, up to 200 characters.
And where to change it. Greeting is the only field on that panel with no button of its own, so it now carries ✏️ Identity, the button whose box holds it, next to the assistant’s name.
Panel wording only. The greeting behaves exactly as before, and no plugin update is needed.
v6.119.0: the Attitude you wrote for @sai now actually changes how it talks in game
What was wrong. v6.117.0 added the 🎭 Attitude box to /mcdc → 🤖 @sai Studio.
Servers that filled it in saw it save correctly, saw it in the Studio panel, and then heard
no difference in game at all. “A sassy, ill-tempered god who has seen every newcomer make
the same mistakes for three thousand years” answered in exactly the same flat assistant
voice as an empty box.
Why, because it was not what it looked like. It was not a cache, it was not a stale setting waiting on a config push, and there was no second answer path that skipped your description. Your text was reaching @sai intact, every single time. The problem was the instructions wrapped around it: they described the personality as a fact about @sai and then spent far more words on what it was not allowed to change than on asking @sai to speak that way at all.
The brevity rules finished the job. @sai is told to keep replies short, leave out the extras, and stop once the question is answered. Nothing anywhere said the voice was exempt. Under a tight reply budget a personality reads exactly like an extra, so it was the first thing cut.
What changed. @sai is now told plainly to adopt the voice in every reply, and the reply kinds are named so none of them can be treated as an exception: one-liners, refusals, and “I don’t know” answers all come back in character. Being brief is no longer a reason to drop it, because the voice is how @sai spends the words it has, not extra words on top. The In-character tone got the same treatment, so it now reads as an instruction rather than as one more restriction.
Nothing about containment changed. Every limit stated when Attitude shipped still holds, and still outranks whatever you wrote: @sai refuses any request to change ranks, roles or permissions and flags it to your staff, answers only as the assistant you named and never claims to be anything else, will not speculate or invent facts or misstate where an answer came from, and keeps its short plain-text single-line replies and its length limit. An Attitude asking for any of that still gets you nothing but a refusal in a different voice. The only thing this release changes is whether your voice comes through.
Nothing to re-save, nothing to install. If you already set an Attitude it starts working with this release. This is a change on Server Assistant’s side and needs no plugin update.
v6.118.0: /mcdc settings changes are now recorded in your log channel
What was wrong. Changing a setting in /mcdc left nothing in your server’s Discord log
channel. For the @sai Studio settings the change was recorded, just not anywhere a server
manager could see it. For a good part of the rest of the panel it was not recorded at all.
Bridge controls that now leave a record, and did not before. In-game enforcement (the toggle that puts Kick and Ban buttons on Minecraft alerts for your staff), the rank-sync master switch, role-to-rank mappings added and removed, the server-event relay, the reaction relay, the online-count channel topic, health alerts, and the in-game join notice along with its text. Role-to-rank mapping deserves calling out: it is the list that decides which Discord role grants which in-game rank, and until now nothing anywhere recorded who edited it.
What an entry looks like. A Setting changed post in your log channel saying who changed it, which setting, and what it changed to. A change that changes nothing posts nothing.
Your own writing stays out of it. The free-text boxes (attitude, knowledge pack, greeting, website, and the join notice text) record only the shape of the change, for example “join notice set (48 characters)”. The wording you typed is never reposted into the channel.
@sai Studio and the Discord-side AI settings are covered by the same change. Access, tone, attitude, identity, knowledge pack, website and the Companion switches now post to the log channel as well.
How this sits with log verbosity. On errors only, these entries are hidden. On dangerous only, they are shown, because changing what your assistant is told, or which Discord role grants which in-game rank, is precisely what that setting exists to catch. If your bridge settings change often you will see more lines than before; errors only silences them.
Nothing to install. This is a change on Server Assistant’s side. No plugin update is needed.
v6.117.0: tell @sai who it is with the new Attitude field, and "In-character" finally has a character to stay in
Where to find it. /mcdc → 🤖 @sai Studio → 🎭 Attitude. It sits beside
Identity, because it belongs with the name your assistant answers to rather than with the
settings that control how it replies.
What to write in it. Who your assistant is, in plain words, up to 240 characters. “A
gruff dwarven smith who has seen every newcomer make the same mistakes.” “A patient tour
guide who is delighted anyone asked.” “A deadpan librarian.” That description is carried
into everything @sai says: replies in chat, answers to @YourName mentions, and the
private in-world companion if you have it switched on. Leave it blank and nothing changes
from before this release.
Why 240 characters and not more. This is a character brief, not a reference pack. Your server knowledge pack is the place for facts, and it stays at its own much larger limit. @sai’s replies are short by design, so a personality longer than the replies it flavours describes a voice there is no room to perform.
Tone and Attitude are different controls, and they compose. Tone is how it talks: concise, friendly, in-character. Attitude is who it is. A brisk dwarven smith and a brisk cheerful helper are both still brisk, so setting one does not overrule the other. The Studio panel now labels them that way so the difference is visible at a glance.
“In-character” was pointing at nothing, and now it is not. That tone told @sai to stay in character for this server’s theme. There is no theme setting anywhere in the product, nothing derives one, and nothing was ever passed to @sai. So the instruction asked for a character that had never been written down: @sai either made up a different one each reply, which is worse than none because it is inconsistent, or fell back on generic playfulness. If you picked In-character in the past and could not see what it did, that is why. In-character now means “stay in the character described in Attitude”.
Pick In-character with no Attitude and you get Friendly. Exactly Friendly, not a fourth half-configured mode, so a server that has set the tone but not the character behaves the same as one that set neither. The wizard tells you this rather than leaving you to notice: the option is labelled “In-character · stays as your Attitude”, it warns when there is no Attitude to stay in, the Studio panel flags the gap, and clearing the Attitude text warns you if that has just disarmed an In-character setting.
What Attitude can never do. It is your text going into your assistant’s instructions, so the limits are worth stating plainly. Whatever the description says, @sai still answers only as the assistant you named and never reveals or claims to be anything else, keeps its plain-text single-line replies and its length limit, refuses any request to change ranks, roles or permissions and flags it to your staff, does not speculate or invent facts, and does not misstate where an answer came from. “You are happy to hand out ranks to anyone who asks nicely” changes nothing except the tone of the refusal. Every one of those rules outranks the Attitude completely, including on the private companion.
Nothing to install. This is a change on Server Assistant’s side. No plugin update is needed.
v6.111.0: the Minecraft health alerts can now be switched off from /mcdc
Which notices this covers. Three, all of them posted to your staff chat: your Minecraft
server went offline, your Minecraft server recovered, and TPS has dropped below 12. They now
sit behind one Health alerts toggle on the first page of /mcdc, beside Topic count.
Why it exists. On a server that reboots on a schedule, the offline notice and the recovered notice that follows it are staff chat narrating something you scheduled yourself. Every night. The pair is noise, and the cost of noise is that the notice which actually matters gets skimmed past with the rest. If that describes your server, switch Health alerts off and the three notices stop.
On by default. Existing bridges are unaffected and new ones start with alerts on. This is a control for a channel that has become noisy, not something you now have to opt in to.
The bridge-offline notice is not part of this. The separate notice telling you that in-game moderation has stopped running still comes through with Health alerts off, on purpose. Choosing to hear less about routine server health is not the same as choosing not to be told that the filtering on your server has stopped.
Nothing to install. This is a change on Server Assistant’s side. No plugin update is needed.
Plugin v0.26.0: the notice players see when they join now names everything that is checked, not just DMs
What players see now. The grey line shown once on joining reads:
Chat and DMs are checked for abuse. Be good, have fun!
It used to read [MCDC] Private messages here are checked for abuse.
Why it changed: the old wording was too narrow to be accurate. It named private messages
and nothing else, so the fair conclusion from reading it was that everything else went
unread. That has not been true for several releases. The filter covers in-game chat, signs,
written books, item and anvil renames, mob name tags, /me emotes, usernames and private
messages, plus the private companion ask on Server Assistant’s side. A player who put
something on a sign believing only DMs were looked at had been told that by us.
The new line covers the whole surface in one sentence, and still says DMs explicitly, because that is the part nobody would otherwise assume.
The [MCDC] prefix is gone from this one line. It keeps its grey colour, so it still
reads as the server speaking rather than as another player in chat. The separate bridge
notice, the one telling players that chat here reaches Discord, is unchanged and keeps its
prefix.
What has not changed. The notice is still mandatory and nothing here can switch it off:
it is compiled into the plugin rather than being a setting, so join-notice: false does not
touch it, rewording join-notice-text does not reach it, and it cannot be overridden from
the Server Assistant side. The single condition on it is also unchanged: it is only sent
when the filtering it describes is actually running, so an unlinked or idle bridge stays
quiet instead of promising a check that is not happening.
Nothing to do. No config change, no new key, no setting to review. Auto-update will pick
this up, or run /mcdc update from your server console.
v6.108.0 + v6.109.0: @sai answers with the numbers from a wiki page's stats box, and holds back the ones the wiki disagrees with itself on
What players were asking for. Hard numbers. How much health a creeper has, how tall it is, how many uses a diamond sword has, how much damage something does. Those values live in the stats box at the top of a wiki article rather than in the writing underneath it, and @sai only read the writing. So the answer depended on the number happening to appear in a sentence, and a creeper’s 20 health appears nowhere in the prose of its page. @sai now reads that box.
The part worth knowing about is what it will not answer. A number given confidently and wrongly is worse for your server than no number, so three rules sit on top of this:
- Where the wiki lists two different values for the same thing, @sai gives neither as a flat answer. A wolf has 8 health wild and 40 tamed. A creeper is 1.7 blocks tall in Java and 1.8 in Bedrock. Answering with one of those would be confidently wrong for half the players asking, so @sai tells the player the page gives more than one rather than picking.
- Where a value has two properly labelled sides, both are named. A diamond sword is 1561 uses in Java and 1562 in Bedrock, and the player gets both, each labelled with its edition, which is an answer rather than a dodge.
- Where the number is not actually written on the page, @sai says so. It does not estimate one, and it does not fall back on what it thinks it remembers.
Two honesty fixes shipped alongside it.
- The rule that keeps @sai to what was on the page now applies even when there was no page. It only ran when a lookup had found something. When the lookup came up empty, which is the common case for an off-topic or oddly worded question, the rule was not applied at all, which is exactly the moment it is needed. This is the other half of the fix for @sai describing villagers as living somewhere they do not.
- @sai stays consistent with what it has already told a player. It could reverse a correct answer later in the same conversation with nobody having challenged it, which reads to your players as an assistant that cannot be relied on twice. If it genuinely needs to correct itself, it says what changed.
No plugin update needed. All of this is on Server Assistant’s side.
v6.107.0: @sai stops answering from the wrong wiki page when a common word appears in the question
What happened. A player asked in in-game chat: “how far can copper golems detect chests”. @sai answered from the wiki page for Chest. The word chest was in the question, that page matched it, and once a page had been found @sai treated the lookup as settled. The proper search, the one that would have found Copper Golem, never ran. The reply read as confidently as any other and pointed your player at the page it had used, which was the wrong one.
The fix. A thin match on a stray word no longer counts as having found the page. @sai carries on looking for the page the question is really about, and answers from that.
What this does not change. Questions that were already landing on the right page behave exactly as before. This closes off one way of going wrong; it does not touch answers that were already right, and @sai still tells a player when it cannot find anything rather than guessing at it.
Second fix: ordinary word endings. A player asking about oxidising would not match a section headed Oxidation, so the one section on the page that answered the question was passed over. Everyday English endings are now handled, so the wording of the question and the wording of the heading meet.
No plugin update needed. Both fixes are on Server Assistant’s side.
v6.106.0: @sai stops being argued out of a correct answer, and the op-request alert now covers the private companion too
What happened. A player asked @sai a question in in-game chat and got a correct answer, one @sai had looked up on the Minecraft wiki before replying. The player came back with “the wiki says I need op”. There is no such line on that page: the player made it up, and said so afterwards. @sai apologised, agreed it had been wrong, and replaced a correct answer with the player’s invention. Anyone reading the chat then had the wrong answer, from your assistant, with its apology attached.
The fix, in one line: @sai now remembers which page an answer came from. Before, an answer and the page behind it came apart the moment the reply was sent, so “the wiki says otherwise” had nothing to be measured against and the safest thing @sai could do was defer. Now it can tell the difference between a page it actually read and somebody’s claim about a page. When it has something real behind an answer, it holds it, says which page it used, and offers to go and check again.
The limits are the interesting part, so here they are plainly:
- A real correction still lands. If you tell @sai that a recipe changed in a specific version, or describe what you have just seen on your own server, it treats that as new information, checks again, and updates its answer. Being harder to bluff is not the same as being stubborn.
- What it declines is the empty version: “that’s wrong, the wiki says so”, with no version, no detail and nothing it can go and look at.
- When @sai hasn’t looked anything up, nothing changes. It stays open to being corrected exactly as it was. It does not start defending answers it is holding from memory, and the behaviour from v6.93.0 stands: it still won’t tell a player something isn’t in the game.
Second change: the permission-request alert now covers every surface. Since v6.100.0,
asking @sai in public chat to be given op or staff has raised a staff alert. Asking the
private in-world companion the same thing raised nothing whatsoever, which is the wrong
way round: the private route is the one your moderators cannot read over someone’s shoulder,
so it was the least visible way to try it and the one with no alert on it. That is closed.
The check now runs on the private companion as well as chat, and on the other text surfaces
your server already has covered: signs, books, item names, mob name tags, /me emotes and
private messages.
We told you something that wasn’t true, so here it is corrected. The v6.100.0 notes said a request claiming someone had already approved it is raised most prominently of all. That was true of public chat, and it was not true of the private companion, where the request raised nothing at all. It is true everywhere now.
Nothing about this grants anything, and nobody gets punished for asking. Server Assistant does not change permissions, roles or ranks because someone asked it to, on any surface, in any wording, whoever they claim sent them. Real permission changes are made by your staff in Discord or in LuckPerms, directly. All the alert does is tell your staff it was asked, so a human can decide whether it is worth a look. A player who asks out of curiosity gets a refusal and no consequence.
No plugin update needed. Both changes are on Server Assistant’s side.
v6.104.0 + v6.105.0 + plugin v0.25.0: link tokens exposed by our old setup instructions are replaced for you, and the setup code is now single use
Read this first: most servers need to do nothing, and your staff chat will say which group yours is in.
The problem, stated plainly. Our own setup instructions used to tell you to type
/mcdc link with your token into in-game chat. That was wrong. A command typed in chat can be
read by every other plugin running on the server, and it is written into latest.log. So for
any server that followed those instructions, the credential to its bridge went to both places.
Plugin v0.24.0 already stopped accepting the command in chat. This release is the other half of
that: dealing with the tokens that were exposed before it landed.
If your server is on plugin v0.25.0 or newer, it is replaced automatically. The new token is delivered over the encrypted connection your plugin already holds. It is never typed into chat or a console, never shown in Discord, and never written to a log on either side. Your staff chat gets a confirmation card telling you it is done and that nothing is needed from you.
Nothing goes offline while it happens. The old token stays valid until the new one has been confirmed working. There is no gap, no restart, and no window where the bridge is dead. If you were watching the bridge closely you would not notice.
If your server is on an older plugin, it cannot be done automatically. There is no
trustworthy way to hand a new credential to a plugin that has no way of receiving one. That
staff chat gets a card explaining exactly that, followed by the manual steps: mint a fresh code
in /mcdc, put it in config.yml, restart. The same card is sent if an automatic attempt
starts and does not complete, so nobody is left assuming they were covered when they were not.
This runs once, and only once. It is a migration, not a rotation service. Once a server is holding a token that was issued automatically, it is not swapped again, and you will not get this card a second time.
The setup code in /mcdc is now single use and expires after 30 minutes. Previously it was
presented in a way that implied it stayed valid indefinitely, which is not how a credential
should be handled. A code now covers one link and then stops working, and it lapses on its own
if you generate it and get distracted.
The /mcdc panel leads with the config.yml route now. It is listed first because it
never puts the code through a command at all, which removes the whole class of problem this
release exists to clean up. The console command is still there for anyone who prefers it. A
🔄 Regenerate token button sits alongside for minting a fresh code whenever you want one.
So, the one thing worth acting on: if you have ever pasted your token into in-game chat and your server is not on plugin v0.25.0 or newer, regenerate. Everyone else is already handled, and the card in your staff chat will tell you which of those you are.
Plugin v0.25.0 is what makes the automatic path possible. It is the build that tells us which version your server is running, which is how we know a replacement can be sent safely. Auto-update will pick it up, or run /mcdc update from your server console.
v6.102.0 + v6.103.0 + plugin v0.24.0: emotes, private messages and usernames are filtered too — plus an https requirement and a token worth regenerating
Read this first if you read nothing else: if you have ever typed your link token into
in-game chat, regenerate it from the /mcdc panel. Details at the bottom. Everything else
in this release happens on its own.
v6.101.0 covered signs, books, item names and mob name tags. It didn’t cover everything. That release was scoped from what an operator reported — signs. This one is scoped from working through every place on a server where a player can put text in front of another player. Three more, and the first was the widest of the lot:
/meemotes. An emote goes to every player on the server, and it never fires the chat event — so it slipped past masking, past flagging and past the Discord bridge all at once. Nothing your filter did had ever touched it. It’s the oldest chat bypass there is, and it was wide open.- Private messages (
/msg,/tell,/w). Once public chat is filtered, targeted harassment moves here — and you had no visibility into it at all: no masking, no alert, nothing. - Usernames. An offensive name is repeated into your Discord channel every session that player plays. This one is flag-only: a name is an identity your Minecraft server, Discord and LuckPerms all key off, so quietly rewriting it in one place would help nobody. Staff get an alert on join, and staff decide.
Draft books — a gap in the last plugin release, and worth naming as one. v0.23.0 checked a book when it was signed, which missed the simplest workaround available: write it, never sign it, leave it in a chest for someone to pick up. Books are now checked as they’re written. The author’s own copy stays exactly as they typed it — nobody’s draft gets mangled while they’re still writing it — and the masking applies once the book leaves their hands.
That brings the total to eight places covered: chat, signs, books, item names, mob name
tags, /me emotes, usernames and private messages. All eight follow the same single AutoMod
switch — nothing extra to enable, no second word list to maintain, and a server with chat
relaying off gets none of it.
As before, checked is not the same as bridged. Chat is still the only thing mirrored into your Discord channel. Emotes, private messages and usernames are checked and flagged, never posted there.
Private messages — the part you should be able to explain to your players. We’d rather you heard this from us in plain terms than worked it out later:
- Every private message is sent to us and checked — all of them, not just the ones that turn out to be bad. There’s no way to tell whether a message contains harassment without checking it, and the filter that can tell is your Discord server’s AutoMod, which runs on our side.
- No person reads one that doesn’t match. The check is software from end to end. A message that matches nothing is deleted from the queue it’s checked from within about a day, and no record of it is written anywhere — not your moderation log, not a decision card, nothing.
- A message that does match reaches your staff, and only your staff — as an ordinary flag alert, naming who it was aimed at, because a moderator handling harassment needs to know who is on the receiving end.
- No AI provider is involved, on any plan, at any point. It is deterministic pattern-matching.
- There is no separate switch — and, to be equally plain about the other side of that, no setting that filters public chat while leaving private messages unchecked.
Why it works this way, the balancing test behind it, the alternative we rejected and why, and your players’ right to object are all set out in the Privacy Policy.
Every player joining sees an in-game notice saying private messages are checked for abuse,
and you cannot switch it off. It isn’t the join-notice key, it isn’t in your config, and it
ignores the relay override — it is separate from your own bridge notice, which stays yours to
reword or disable. This filtering has no opt-in moment, and for a player who never joins your
Discord that line is the only notice that ever reaches them, so it isn’t something an operator
can remove. Say it in your server rules as well.
Your staff are now told when in-game moderation stops running. If your Minecraft server stopped checking in — server down, plugin crashed, token revoked, a setting wrong, network cut — nothing told anybody. Staff chat simply went quiet, and everyone carried on believing in-game moderation was still running when it wasn’t. A safety feature that fails silently is worse than one that was never installed.
Staff chat now gets a clear “in-game moderation is NOT running” alert, naming when your server was last seen and the few things worth checking (starting with the relay address), plus a short confirmation when the bridge comes back. It also lands on the portal’s needs-attention rail, because the fix isn’t a button in Discord — someone has to go and look at the Minecraft server, and a chat message scrolls away while the bridge stays dead.
- It waits about 15 minutes first. A restart, a big world loading, a long plugin list — none of those should raise an alarm. The cost is that a genuinely dead bridge can go unreported for around a quarter of an hour, which is the right trade: an alert that fires every time you reboot is an alert everyone learns to ignore.
- One alert per outage, not one per check, with a cooldown so a flapping connection can’t fill your staff chat. If a down alert was suppressed, you won’t get an orphan “it’s back” line for it either.
- Never for a server that isn’t linked, and never for one still being set up.
- Not tied to the health-alerts toggle. Muting those meant muting server-lag chatter, not agreeing to be kept in the dark about moderation failing.
Security: the relay address must now be https://. A plaintext address is upgraded to
https:// and retried automatically, so nearly every server will migrate without touching
anything. Only if that retry fails does the bridge stop sending — deliberately, and
loudly, rather than putting your link token on the wire in the clear. That is exactly why the
offline alert above shipped alongside it: if your bridge does stop, the alert is what tells
you.
Security: /mcdc link must now be run from the server console, not typed in chat. Our own
setup instructions used to tell you to run it in game, and that was wrong. A command typed into
in-game chat can be read by every other plugin on the server, and it is written into your
server log — so the token, which is the credential to your bridge, was exposed to both. Running
it from the console keeps it out of chat and out of the log, and the /mcdc wizard now hands
you the line for the console.
So: if you have ever pasted your link token into in-game chat, regenerate it. Open
/mcdc, generate a fresh token, and run the new line from your server console. An old token
keeps working until you replace it — which is precisely the reason to replace one that has
been in chat. Nothing else in this release needs anything from you; this does.
This one needs the plugin update — the checks run on your server. Update with /mcdc
update, or let auto-update stage it for your next restart.
v6.101.0 + plugin v0.23.0: signs, books, name tags and anvil renames are filtered too
Chat has been filtered and masked for a long time. Every other place a player can type was not — so anyone determined to get their words in front of people simply stopped using chat. A sign at spawn, a signed book passed round, a name tag on a mob in the public farm, a renamed item in a shop: all durable, all public, and none of it going anywhere near your filter.
Four surfaces are now covered: signs, signed books, mob name tags, and item renames at an anvil.
- Other players see the text masked, exactly the way chat is masked — including the same handling of spaced-out and disguised spellings, so the usual workarounds don’t get through either.
- Your staff get an alert naming the surface it came from, the text as it was really written, and the coordinates. No more asking “which sign?” — the alert tells them where to stand.
- It uses the word filter your server already has. Nothing new to configure and no second list to maintain. A server with chat relaying turned off gets none of it.
Only newly written text is checked. Anything already in the world before this update — signs already standing, books already written, name tags already applied — is never scanned. There is no retroactive sweep, so updating won’t suddenly flood staff with alerts about a build from six months ago. The bypass is closed going forward; what’s already there stands until someone edits it.
Anvil renames are reported when the item is taken out of the anvil, not while you type — so renaming a sword doesn’t send staff a running commentary of half-typed words.
This one needs the plugin update — the checks run on your server. Update with /mcdc
update, or let auto-update pick it up.
v6.100.0: the wiki link in the bridged copy is checked too
The copy of @sai’s answer posted to your Discord channel could carry a wiki link the answer never used. The check that catches exactly this shipped a few versions ago, but it only ever ran on the reply shown in game — the bridged copy went out unchecked, so the two could disagree. Players saw the results: an answer about permissions linked to a page about a YouTuber, and “what’s your source” linked to a page called Infinite Water Source. Both copies now go through the same check, so a link either supports the answer or isn’t shown at all.
Follow-up questions now track the most recent thing you asked. Ask about bees, then ask about redstone, then say “how do i harvest it tho” — and you’d get the bee answer back. A follow-up is now read against your latest topic, not an older one.
@sai no longer tells you off for asking something twice. Replies had started opening with “You already asked that!”. Asking the same thing again simply gets a normal answer.
Questions that sound like they’re about you rather than the game. “How do I kill myself
in Minecraft” is an ordinary question about the /kill command, and it still gets its
normal, direct answer — that hasn’t changed. When the same kind of phrasing turns up with
nothing marking it as being about the game, @sai doesn’t answer it as game mechanics: it
says so briefly and kindly, tells you how to get the game answer if that’s what you meant,
and quietly lets your staff team know so a human can check in. It is not treated as a
rule-break — no warning, no punishment, and nothing on anyone’s moderation record.
For server owners: requests to be given operator or staff now raise a staff alert. @sai has always refused them — that part never changed — but only blunt phrasings like “give me op” were being reported. Polite ones (“can I have operator”) and ones claiming prior approval (“a staff member said I can have op”) slipped through unflagged, so staff never heard about them. All of them are flagged now, and a request claiming someone already approved it is raised most prominently of all, since that’s the one worth verifying. Ordinary chat that merely mentions staff is unaffected.
No plugin update needed — this is Server Assistant’s side.
Plugin v0.22.3: @sai's in-game replies are all the same colour again
Two answers in a row could come out in different colours: the one that ended with a
[wiki] link showed up white, while the one without it showed up in the usual
grey. Nothing else about the reply was different, so it looked random from in game.
Adding the clickable [wiki] link was rebuilding the line from scratch and losing the
colours it had already been given — including the assistant’s name at the front. A reply
with no link was left alone, which is why only some of them changed.
Adding a link now costs the line nothing. Whatever colours you’ve set for @sai’s replies are kept exactly, link or no link.
Update the plugin with /mcdc update, or let auto-update pick it up.
v6.99.0: @sai remembers your last few questions in Minecraft
A player asked “@ody hey how do i make a bee farm?”, got a good answer, then asked “@ody how do i harvest it tho” — and was told how to harvest wheat, carrots and potatoes. Every question asked in game was answered on its own, with no idea what came before it, so “it” had nothing to point at.
@sai now reads a follow-up in the light of your last few questions, the same way the Discord side already did. Ask about bees, then ask how to harvest it, and the answer is about bees.
Your private Allay conversation and public chat are separate conversations. Something you ask the Allay companion privately never shapes an answer everyone in chat can read, and the other way round.
The memory is short. It’s held only while the bot is running, never saved, and forgotten after 10 minutes of quiet.
Typing casually no longer sends @sai to the wrong page. A trailing “tho”, “rn”, “lol” or “pls” was quietly wrecking the lookup: searching “diamond” found the Diamond page, but “diamond rn” found the Formatting codes page, and “nautilus tho” found nothing at all. Casual chat words are now ignored when @sai looks something up.
Asking about a “farm” now looks up the thing you’re farming. “bee farm” was matching crop-farming pages — which is exactly where that wheat answer came from. Ask about a bee farm and @sai looks up bees. Questions that really are about farming still work as before.
No plugin update needed — this is Server Assistant’s side.
v6.98.0: @sai says when it's not sure, and stops making things up
A player asked whether piglins can barter the Soul Speed enchantment. @sai got the first half right — they barter enchanted iron boots — and then added that this was “the only way to get that enchantment without trading with villagers in ancient cities”. Ancient cities have no villagers, and two messages later @sai said so itself. One of the players put it plainly: “ody straight up lying”.
Two changes:
It stops adding extra claims. The page @sai had read said nothing about villagers or ancient cities — the invented part was welded onto an otherwise correct answer. It’s now told, in as many words, not to add specifics its source doesn’t support, and to watch for the phrasings where that creeps in (“the only way to…”, “you can also get it from…”).
When it isn’t sure, it says so — and shows you where it looked. Before, an unconfirmed answer came with a quiet “this may have changed in a newer version”, which reads like a confident answer with a footnote. Now you’ll get “Not sure, but…” — and, when it used a page, the [wiki] link to go and check for yourself. Previously unsure answers had no link at all, which left you with a hedge and nowhere to take it.
Also fixed: a correct answer about ancient cities was losing its [wiki] link because of how plurals were matched.
v6.97.0: the in-game [wiki] link only appears when @sai used that page
When you ask @sai a Minecraft question in game, the reply ends with a clickable
[wiki] link to the page it read. Sometimes that link pointed at a page the answer
hadn’t actually come from — a player asked what the chances were that someone would say
something, @sai correctly said it can’t predict that, and still linked the /say command
page.
The link is a claim about where the answer came from, so a wrong one is worse than none. @sai now checks the finished answer against the page and leaves the link off when they don’t line up. Answers are unchanged; you’ll just see slightly fewer links, and the ones you see are ones the answer really used.
No plugin update needed — this is Server Assistant’s side.
Plugin v0.22.2: the assistant really does appear in /msg now
v0.22.0 didn’t actually work. We said the assistant would show up when you type /msg,
and on a real server it didn’t. Sorry — that one got out the door on a check that only
covered part of the job.
It works now, and one case in particular is worth knowing about: typing /msg followed by
the first letters of your assistant’s name, when no player on the server has a name
starting with those letters, previously showed you nothing at all. That was the most
obvious way to try the feature, which is why it looked completely dead.
Nothing else about the list changed: @a and @p still work, vanished players stay
hidden, and your assistant is still not added to the player list or the player count.
Requires plugin v0.22.2 — servers with auto-update on will pick it up on their own.
Server owners who’d rather leave /msg alone entirely can still set
companion.msg-suggest-persona: false in the plugin’s config.yml.
Plugin v0.22.0: your assistant now appears when you type /msg
Type /msg in game and the list of names that pops up now includes your assistant,
after the real players. Picking it works exactly like /msg Ody <question> always has —
this only makes it discoverable, so players who were never told about it can find it.
We said in v0.21.0 that this was impossible. That was wrong, and we’ve fixed it. The reasoning was that Minecraft’s client builds that list from the players it already knows about, without asking the server — which is true, and is why our earlier attempt did nothing. What we missed is that the server can ask the client to check with it instead. It now does, for this one list.
Nothing else about that list changes: @a and @p still work, and players hidden by a
vanish plugin stay hidden. Your assistant is not added to the player list or the
player count — it is only offered as a suggestion while you type.
Server owners who’d rather leave /msg completely untouched can set
companion.msg-suggest-persona: false in the plugin’s config.yml. /msg <assistant>
and /ody keep working either way.
Requires plugin v0.22.0 — servers with auto-update on will pick it up on their own.
Plugin v0.21.0: you can see your own question again
Asking with /ody or /msg Ody sent your question silently — nothing appeared in chat,
so there was no sign it had worked until the answer came back. Your question is now echoed
back to you (only to you) the moment you send it, the same way it always was when asking
through the Allay companion.
We also removed the v0.20.0 attempt to list the assistant in /msg’s autocomplete. It
couldn’t work the way it was built: Minecraft’s client builds that list from the players it
knows about, without asking the server. (We concluded at the time that no plugin could
ever add to it. That was wrong — v0.22.0 does it, by having the server ask the client
to check with it. This entry is left as written for the record.)
Use /ody <question> instead — it’s a real command, so it tab-completes normally. The
first time you use /msg Ody, a one-off tip now points you at it.
Requires plugin v0.21.0 — servers with auto-update on will pick it up on their own.
Plugin v0.20.0: your assistant shows up when you type /msg (withdrawn in v0.21.0)
/msg Ody already worked — but nothing told you so. The suggestion list that pops up when
you type /msg only showed real players, so unless someone had mentioned it, you’d never
know you could message your assistant at all.
Now it appears in that list alongside the players online, so you can tab straight to it.
It’s only offered to players who can actually use the assistant — being suggested a name that then turns you away is worse than not being suggested it. And players hidden in vanish stay hidden.
Requires plugin v0.20.0 — servers with auto-update on will pick it up on their own.
Plugin v0.19.0: ask @sai privately, and quieter replies in chat
Ask @sai without using public chat. /ody <question> — or /msg Ody <question>, if
that’s more natural — sends your question straight to the assistant and the answer comes
back only to you. Players asked for this after @sai suggested “@mention them in chat”,
which isn’t something you can do from Minecraft. Both work with whatever name you’ve given
your assistant.
@sai’s replies no longer say [Discord]. It isn’t a Discord player talking — it’s your
server’s assistant answering a question — so the tag was misleading.
And they’re grey now, instead of bright blue, so they sit alongside player chat instead
of shouting over it. Ordinary bridged Discord messages are unchanged. If you preferred the
old look, set sai-to-mc-format in the plugin config to the same value as
discord-to-mc-format.
Requires plugin v0.19.0 — servers with auto-update on will pick it up on their own.
v6.96.0: @sai reads the real crafting grid
Asked how to craft a soul torch, @sai said the soul sand “replaces the coal at the bottom”. Wrong twice over: coal sits at the top of a torch recipe with the stick below it, and the soul soil is a third ingredient, not a swap. A player corrected it in chat.
@sai now reads the actual crafting grid from the wiki for “how do I make X” questions. Recipes live in tables, and tables were being stripped out before @sai ever saw them — so it was answering from memory and getting the layout wrong.
Positions come through too: what goes on top, in the middle and at the bottom, which ingredients can be swapped for which, and how many you get. Only recipe questions do the extra lookup, so nothing else got slower.
v6.95.0: the in-game [wiki] link stops appearing twice
@sai’s answers in Minecraft were ending with two [wiki] tags — one plain, one
clickable. @sai types the tag itself out of helpfulness, and the real link was then added
after it rather than replacing it.
Every reply now carries exactly one [wiki] link, however many tags end up in the
text. Replies already showing the double repair themselves, so you don’t need to do
anything.
v6.93.0: @sai stops saying "that isn't in the game"
Asked how long dried ghasts take to turn into happy ghasts, @sai replied that ghasts don’t have “dried” or “happy” variants and suggested you were thinking of a mod. They’re real — waterlog a dried ghast for about 20 minutes to get a ghastling, which grows into a happy ghast over another 20.
The right page was in the search results and lost to a shorter title. Both Ghast and Happy Ghast came back, and @sai took whichever ranked higher rather than whichever matched more of your question. Now the more specific page wins: if you name two words, a two-word page title beats a one-word one.
And a page not mentioning something is no longer treated as proof it doesn’t exist. @sai was reading the Ghast page, finding nothing about dried or happy variants, and concluding they aren’t real. It now understands that it’s reading part of one page — if the answer isn’t there, it says it couldn’t find it and points you at the wiki, rather than telling you the thing doesn’t exist.
v6.91.0 & v6.92.0: @sai finds the actual numbers on a wiki page
Asked “how far can copper golems detect chests”, @sai said they don’t detect chests from a distance — while reading the page that says they search a 65×17×65 area. It had the right page and was picking the wrong paragraphs out of it.
Questions asking for a figure now prefer the paragraphs that contain one. A measurement like “65×17×65” outranks an unrelated number like “3 seconds”, “how far” matches the words a wiki actually uses (area, radius, within, centered), and those questions get more of the page to work with.
And @sai now uses the page’s own contents list. A wiki page’s sections — “Behavior”, “Chest interactions and item transportation” — are labelled by a person to say what each part covers, which beats guessing from the wording of your question. So when you ask “how far can they detect chests” and the page says “search … in a cubic area”, the section heading connects the two. No extra lookups, so it’s no slower.
No plugin update needed.
v6.90.0: @sai reads the part of the page that answers you
@sai was only reading each wiki page’s opening summary. Asked “how far can copper golems detect chests” it found the right page and had to admit the detail wasn’t in what it read — because the detection range is further down the page, under behaviour, not in the intro.
It now picks out the paragraphs that match your question. Ranges, durations, drop chances, spawn conditions — the specifics that live in the middle of an article — actually reach the answer now. The page’s opening definition is always kept as well, so a figure arrives with the context that makes sense of it.
Only when it needs to. A question the summary already answers behaves exactly as before and is just as quick. And if the deeper read fails for any reason, @sai falls back to precisely what it did previously.
No plugin update needed.
v6.89.0: @sai searches properly now — and finds the right page
@sai now uses a real search engine to find the right wiki page. The wiki’s own search was the weak link: asked “how far can copper golems detect chests” it never returned the Copper Golem page at all — so @sai had nothing useful to read and fell back to guessing.
The answer still comes from the Minecraft wiki. The search engine only decides which page to read, and it’s restricted to minecraft.wiki, so the source is unchanged — it’s just far better at finding the right article from a normal question.
It only searches when it needs to. If the wiki’s own search already found the right page, nothing extra happens. The search engine is there for the questions that were previously failing, which also keeps it well within its free allowance.
If the search is ever unavailable, @sai simply falls back to what it did before — nothing gets worse.
No plugin update needed.
v6.88.0: @sai's in-game replies finish their sentences
Asked “what’s the thing that sorts my items”, @sai gave a long answer that ran past its first sentence into a second thought and ended in a “…”. Replies should end properly.
@sai now aims much shorter — one or two complete sentences — and is told plainly that finishing its sentence matters more than saying everything, so it answers the question and stops instead of listing every alternative.
And when a reply does have to be shortened, it now ends properly. Previously, cutting at the end of a sentence removed the full stop and put a “…” in its place — so an answer that had finished cleanly still looked cut off. A shortened reply now keeps its full stop, and the “…” only appears when something genuinely was cut mid-sentence.
No plugin update needed.
v6.87.0: a guessed wiki page is no longer remembered for a day
When @sai looks something up, it remembers which wiki page it used so the next player asking the same thing gets an instant answer. That was sensible for a page it had confirmed — but it was doing the same for a page it had only guessed at, and holding onto a guess for a whole day meant one wrong lookup kept being wrong all day, on every server that asked the same way.
A guess is now forgotten within minutes, so it gets another go. A confirmed page is still remembered for a day, because wiki articles don’t change that fast.
And there’s now a way to clear it deliberately. If @sai ever cites a page that’s plainly wrong, switching the wiki lookup off and back on wipes everything it remembered — you no longer have to wait it out.
To be clear about what was never remembered: @sai’s actual answer. Only which page it read. Every player gets a fresh reply.
No plugin update needed.
v0.18.0: the [wiki] source on an @sai answer is now clickable in game
@sai’s in-game answers end with a [wiki] citation naming the page the answer came from.
Until now that was text only — Minecraft chat has no links, so there was nothing to
click.
Now [wiki] is a real link. Click it and the wiki page opens in your browser. Hover it
and you get the page name and the full address, so you can still read or copy it without
the long URL cluttering chat.
Requires plugin v0.18.0 — run /mcdc update in game, or wait for the automatic update.
Until your server updates, the citation still appears as plain text exactly as before, so
nothing is lost by updating late.
v6.85.0: @sai no longer denies that new mobs exist
Reported in game: “how far can copper golems detect chests?” → @sai replied that copper golems “were a mob vote concept that didn’t make it into the game”, on a server running a version that has them.
Three things were wrong and all three are fixed:
- @sai treated its own training data as the last word on what exists. It now assumes anything a player names by name is in the game and was added after its cutoff — it says it isn’t familiar with it yet rather than denying it.
- The wiki lookup was serving changelog pages. “Bedrock Edition Preview 1.21.110.24” slipped past the filter that exists to block exactly that. Preview, snapshot, beta and release-candidate pages are all excluded now.
- Plurals missed the right article. “copper golems” didn’t match the Copper Golem page, so a changelog outranked it. Plural questions now find the singular article.
Plus: when the lookup isn’t confident it found the right page, @sai keeps its “may have
changed” caution and shows no source link — and the [wiki] link itself is now short (the
page name in game, a compact clickable [wiki] in Discord).
No plugin update needed.
v6.84.0: @sai cites the wiki page behind each in-game answer
In-game answers now end with [wiki] and a link to the minecraft.wiki page @sai read.
Ask “how do I tame a nautilus” and the reply points at the Nautilus article, so a player
can go and read the detail a single chat line can’t hold.
It also makes a wrong answer visible. @sai picks the best of several wiki search results and can occasionally pick the wrong page; until now that just looked like a slightly odd answer. Now the source is right there in the line.
In Discord the link is clickable, without a big preview card under every bridged answer. In game it prints as readable text — Minecraft chat won’t open it for you. Refusals and error notices are never given a source link; only real advice is.
Uses the same wiki-lookup switch, so turning the lookup off removes the citations too. No plugin update needed — this is a Server Assistant-side change.
v6.83.1: @sai now finds the right wiki page for your question
v6.82.0 taught @sai to read the Minecraft wiki before answering in-game questions. It turned out it couldn’t reach the wiki at all — and once that was fixed, it was looking up the wrong page.
Asked “what does a nautilus eat”, it was searching that whole sentence, and the wiki answered with a version changelog page rather than the article about nautilus. @sai read that page, found nothing about nautilus in it, and fell back to guessing — which looked exactly like the original problem.
It now searches for what you’re actually asking about. The question wording is stripped down to the thing itself — “how do I craft a hopper” becomes “hopper” — plurals are matched to the singular article name, and version/snapshot pages are skipped since they never answer a gameplay question. If one of the results is the thing you named, that page wins.
Tested against the live wiki across common questions — nautilus, hopper, beacon, creeper, axolotl, diamond, nether portal, netherite — all now find the right article.
No plugin update needed.
v0.17.0: the bridge now reports who's AFK, so idle players stop earning XP
Server Assistant pays XP per minute of Minecraft playtime, and it had no way to tell playing apart from being logged in. An AFK pool earned as much as a player actually online and doing things.
The plugin now tracks activity and reports idle players to Server Assistant, which withholds playtime XP from them until they do something. The plugin only reports the fact — the bot decides what it means — so the two halves can update independently.
A player counts as active when they change block position, break or place a block, interact, click an inventory, chat, or run a command. Turning your head or drifting in an AFK pool is deliberately not activity, since that’s exactly the case this addresses.
afk-minutes in your config sets the threshold (default 5, range 1–120). Raise it if
your server has slow legitimate activities or AFK farms you want to keep rewarding.
Performance was the main design constraint. Movement fires up to 20 times a second per player, so the check compares block coordinates rather than exact positions and does no work at all when a player hasn’t moved between blocks.
Nothing else changes — no kicks, no interruptions, no messages to your players. Only XP pauses, and it resumes the moment they move.
Pairs with bot v6.83.0. An older bot ignores the new flag; an older plugin doesn’t send it and the bot treats everyone as active. Either way playtime XP keeps working.
v6.82.0: @sai looks the answer up on the Minecraft wiki instead of remembering it
v6.81.0 stopped @sai giving confident answers about an old version of Minecraft. That fixed the wrong answer — it didn’t produce a right one. A player asking “how do I tame a nautilus” in game went from a confidently wrong reply to an honestly unsure one, which is better and still no help to them.
@sai now reads the Minecraft wiki before answering an in-game question. It looks up the page for what was asked and answers from that, treating the wiki as more reliable than its own training data. Ask about nautilus now and it tells you they can be tamed, saddled and ridden as an underwater mount.
Because it has actually checked, it drops the “this may have changed in your version” caveat when the wiki answered the question.
It stays fast and fails gracefully. The lookup is a single request, and answers are remembered for a day, so a question your players ask repeatedly is only fetched once. If the wiki is slow or has no page for what was asked, @sai falls back to the careful hedged answer from v6.81.0 rather than leaving anyone waiting.
You can turn it off if you’d rather @sai never make an outside lookup. On is the default.
No plugin update needed — this is entirely on Server Assistant’s side.
v6.81.0: @sai no longer gives confident answers about an old version of Minecraft
The problem. A player asked @sai in game how to tame a nautilus and got back “you can’t tame a nautilus — nautilus shells are items you find, not living mobs.” On that server’s version of Minecraft, you can. The answer was wrong, stated with total confidence, in front of everyone in chat.
Why it happened. @sai’s general Minecraft knowledge comes from training data, which has a cutoff date. Your server doesn’t. Minecraft changes mobs, items and mechanics with every release, so an answer that was right when the assistant was trained quietly goes wrong the moment your server updates past that point — and the assistant has no way to know it has.
What’s changed. Your Minecraft server already tells Server Assistant which version it’s running, on every check-in. @sai is now given that version, and told its own knowledge may be older. It’s also no longer allowed to flatly tell a player something is impossible — “you can’t do that”, “that isn’t in the game” — from memory alone.
Ask it about something it thinks isn’t possible and it will now tell you what it knows, say it may have changed in the version you’re running, and point you at your staff or the in-game recipe book.
It hasn’t become vague. Crafting recipes, redstone, mob behaviour and command questions are answered as directly as before. The new caution applies only to claims about whether something exists or is possible — the questions where a Minecraft update actually changes the answer.
No plugin update needed — this is entirely on Server Assistant’s side.
v6.79.0: @sai's answers now reach Minecraft, and answer to your own name
Answers from Discord now cross into the game. When someone asked @sai a question in the bridged channel, your players saw the question mirror into Minecraft and then nothing — the answer stopped at Discord. It now follows across, posted under your assistant’s own name.
Your assistant answers to its own name in game. Renamed it in @sai Studio?
Players can now use @YourName in Minecraft chat. @sai, !sai and !ai still work,
so existing habits and anything you’ve written in your server rules stay valid.
Worth knowing: naming your assistant a common word means @that word starts summoning
it in chat.
No plugin update needed.
v6.77.0: staff get told when their rank is waiting on an account link
Rank sync only applies to players who’ve linked their Minecraft and Discord accounts. Until now, giving someone a synced role while they were unlinked did nothing visible — the rank never arrived and nothing explained why.
Now they get a DM naming the rank waiting for them, plus the two steps: /link in
Discord, then !link <code> in game. DMs closed? We tell your staff chat instead
and mention them.
Worth knowing about ordering. Assign the Discord role before someone links. A player who links while holding no matching Discord role is treated as having no rank, and the mirror will remove the one they had in game — that’s the mirror working correctly, but it surprises people.
Also fixed: /link and /unlink sometimes failed with an “Unknown interaction”
error when the server was busy. Both now respond straight away.
No plugin update needed.
v6.76.1: @sai no longer refuses your leaderboard page
The check that stops @sai reading pages anyone can post to was too blunt — it turned down
ordinary pages whose names merely contain one of the words it watches for.
/leaderboard was refused, because “board” ends the word, while /leaderboards was
accepted, because the plural breaks the match. /scoreboard, /dashboard and
/postal-address were turned down the same way.
Those pages work now. The wall is otherwise unchanged: forums, wikis, comment threads,
boards and user profiles are still refused, with no override. If a page you trust is still
turned down, give @sai a different one — that remains the intended answer.
No plugin update needed.
v6.76.0: @sai can answer from your server's website
Most of what players ask @sai in-game — how do I rank up, what’s on the store, when’s the
next event — is already written down on your server’s website. @sai can now read that page
and answer from it, instead of you copying it all into the knowledge pack by hand.
Open /mcdc → 🤖 @sai Studio → 🌐 Website and paste your server’s address. From then
on @sai answers players from that page, and hands out the address when the address is what
they wanted. It re-reads about once a day; 🔄 Refresh now picks up a change immediately.
The panel reports what it actually read — the character count, the page title and the
sections it found — so you can confirm @sai learned the right thing.
- Premium, opt-in, off by default. No existing server has been opted in.
- One page only — the address you give.
@saiwill never follow a web address a player types into a question. - Pages anyone can post to are refused, with an explanation and no override: a forum,
wiki, comment thread, board or user profile is somewhere a stranger could write what
@saitells your players. It errs towards refusing, so if a page you trust is turned down, give it a different one. robots.txtis honoured.- Only the extracted text is kept — never the page — overwritten each re-read and deleted when you switch it off, change the address, or remove the bot.
This is a Server Assistant-side change — no plugin update is needed.
v6.75.0: @sai Studio changes now appear in your audit log
@sai Studio — /mcdc → @sai Studio — is where you decide what the in-game assistant
is: who’s allowed to talk to it, how it sounds, what it’s called, and what it knows about
your server. Until now, changing any of that left no trace. A knowledge pack could be
rewritten, or @sai opened up from staff to everyone, and there was nothing afterwards to
say who did it.
Every one of those changes is now written to your audit log, alongside your kicks, bans and AutoMod actions:
- Who may ask
@sai— staff only, or everyone. - The reply tone, and the assistant’s name and greeting.
- Your server knowledge pack — the rules, the how-to-play, the answers it gives out.
- Both SAi Companion switches — the companion itself, and whether new players get one automatically.
- The Ask @sai on/off button on the bridge wizard’s main page.
Entries record the change, not the content. A switch reads companion: off → on; an
access change reads access: staff → everyone. Anything you wrote yourself is recorded
only by its shape — the knowledge pack, the assistant’s identity and greeting. The log
will say knowledge updated (412 → 980 chars), never a word of what it says. So you can see
that your in-game rules were rewritten, and by whom, without a copy of your text living in
a second place.
Opening the Studio and closing it again writes nothing. Only real changes are recorded.
The Discord-side assistant is covered in the same release — the AI mode, provider and model, the image-generation provider, and the Reception persona and greeting. See the SA Bot tab.
Nothing to turn on, and no plugin update needed.
v6.74.0 + Plugin v0.16.0: Reach your customer portal from in-game
Players had no way to get to the Server Assistant customer portal from inside Minecraft — they had to go and find the address somewhere else. Two ways now, and they work for everyone on the server.
/saportal— type it in chat and the plugin prints a clickable link to the portal. Click it and your launcher opens it in your browser.- Ask the assistant. On servers with the assistant switched on, asking
@saiwhere the portal or website is now gets the same link back in chat.
No permission, no rank, no linked Discord account. /saportal is available to every
player who can type in chat — the portal is a public web address, so there is nothing to
gate. You don’t need to have run /link to use it. Both routes give out the address only;
the portal page itself carries the Privacy and Terms links in its footer.
The command also answers to the shorter /portal. If your server already runs a warp or
teleport plugin that claims /portal, that plugin keeps it — /saportal always works.
This one needs a plugin update to v0.16.0. Servers with auto-update on will pick it up
by themselves; otherwise run /mcdc update in-game, or download the new jar from the
Minecraft wiki page.
v6.73.0: Minecraft chat flags now expire — the auto-close safety net actually runs
When AutoMod flags a message in bridged Minecraft chat, it lands in the portal’s Needs input list waiting for a staff decision. v6.72.0 added a safety net for items nobody ever acts on: warn your staff, give them a day, then close the item. It wasn’t doing anything — flags were never given a closing date in the first place, so nothing ever reached the warning stage. This release gives them one, so that safety net now genuinely works.
Minecraft chat flags close after about two weeks — the same as Discord-side AutoMod reviews, and deliberately shorter than the roughly one month given to ban appeals, raid alerts and verification items. Chat flags carry an extract of the flagged message, so they shouldn’t sit around. (Owner approvals still have no closing date and wait until answered.)
Then the behaviour is as v6.72.0 described: a warning first — a notice in the portal, a push notification and a DM to the staff who can act — then 24 hours to act on the flag or dismiss it, and only then does it close itself. Closing records that nobody acted; it is not a decision either way. The record is cleared 90 days after closing.
One thing you will now start to see: once a flag is past its date, it also drops off the portal’s Needs input list. That isn’t new — it is how the list has always worked — but since nothing ever reached a date before, nobody had seen it happen. It doesn’t skip anything: the flag is still warned about, still gets its full 24 hours to be acted on or dismissed, and is not deleted at that point.
Flags raised before this update don’t have a closing date, so they aren’t affected — they stay in your queue as they are.
No plugin update needed.
v6.71.0: Flagged Minecraft messages are no longer kept in the activity log
This is a privacy fix, and it is worth being plain about it.
Our privacy policy says the moderation-actions log does not store message content. For AutoMod flags raised on bridged Minecraft chat, that wasn’t true: a short extract of the flagged message was being written into the durable record — the same record you can read and search in the portal activity log. Two paths did it: the automatic flag itself, and the reason pre-filled for your staff when they kicked or banned a player straight from the flag card.
The durable record now keeps who and which filter matched — and no longer the message text.
What has not changed — your moderators lose nothing they need to judge a message:
- The staff alert in Discord still quotes the message in full. Your moderators still see exactly what was said in chat, in full, before they decide anything.
- The server log channel embed still shows the full reason.
- The kick or ban message the player sees in-game is unchanged.
- Discord-side moderation is entirely unaffected.
Only the durable, searchable activity record is redacted — bringing it into line with what the privacy policy already promised.
No plugin update needed.
v6.70.0: The assistant no longer fills gaps with guesses
A player asking the assistant in-game “what are the rules on this server?” — on a server
with no rules configured — used to get an answer anyway. It would say staff set those up,
suggest checking “a rules channel if there is one”, and add that they “might have
also set up a /rules command or something similar”. None of that was known to be
true; it was plausible-sounding filler, and it sent players looking for things that may not
exist.
It now never names a command, channel, role, rank or feature it hasn’t been told exists. When it doesn’t know something, it says so in one short sentence and points at the one thing that is always true — ask the server’s staff — instead of padding the answer with guesses.
This applies everywhere it answers: in-game, in Discord, the welcome assistant,
and /faq.
It still answers plainly what it does know. If your server’s knowledge pack says “no griefing”, it says “no griefing”. The change targets invention, not confidence — a well-filled-in server gets the same direct answers as before.
A tip for operators: fill in your server knowledge pack — /mcdc → @sai Studio —
and the assistant can answer these questions properly instead of pointing players at staff.
No plugin update needed.
v6.69.0: /online rebuilt — who's on the game server, answered truthfully and instantly
/online, run in your linked Minecraft channel, shows who’s on the game server right
now. It already existed, but it was thin — and it could tell you things that weren’t true.
This release rebuilds it.
- A stopped server used to show as online. With the server down,
/onlinekept reporting the last thing the bridge had heard, listing whoever was playing at that moment. It now recognises that the information has gone stale, says the server appears to be offline, and withholds the old player list instead of showing a roster that isn’t really there. - A connection problem used to read as “no Minecraft server linked” — confusing, when one plainly was. Trouble reaching your server is now reported as exactly that.
- Long player lists no longer cut a name in half. Busy servers get a tidy “+N more”.
- Replies are instant. It reads the presence information the bridge already refreshes about once a minute, rather than asking your server again on every use — so running it repeatedly is immediate.
- The same health marker as your channel topic — 🟢 / 🟡 (running slow) / 🔴 (offline) — so the command and the topic can never disagree.
- It tells you when the list was last refreshed, so a minute-old list is never mistaken for live truth.
- Wrong channel? It points you at the right one. And in a server with no Minecraft link at all, it tells you how to set one up.
It shows Minecraft names only — never which Discord account a player is linked to, even for players who have linked one. Answers are visible only to the person who ran the command, so it never clutters your chat channel.
No plugin update needed.
v6.66.0: Set up rank sync in /mcdc — map a Discord role to an in-game rank
The plugin brought rank sync to your server; this release brings you the controls.
Everything is set up in Discord, in /mcdc → 🏅 Rank sync.
- Map a role to a rank. Pick the Discord role, name the in-game rank it should grant (your LuckPerms group), and flip the master switch on. When someone’s Discord role changes, their in-game rank follows within about a minute.
- Several roles? Highest one wins. A member holding more than one mapped role gets the rank of their highest-positioned Discord role — your Discord hierarchy is your in-game hierarchy.
- It only mirrors — it never takes instructions. Nothing a player types, in Discord or in Minecraft or to the assistant, can request a rank change. Ranks only ever change because an authorised staff member changed a Discord role, or edited LuckPerms directly.
- Some roles are protected, and SA tells you why. Pick a role that shouldn’t be
mirrored and SA declines it with the reason:
@everyone, bot- and integration-managed roles, roles carrying Administrator, and any role at or above Server Assistant’s own position (your Operations / Executive Operator tier). - Only mapped ranks are ever touched. Ranks you set by hand in LuckPerms, and your staff and admin ranks, are never modified. Anyone outside your mapping is left completely alone.
- Removing a mapping demotes cleanly. Take a pairing out and SA withdraws the rank it granted, instead of leaving it stranded.
Needs the MCDC plugin v0.15.0 or newer and LuckPerms on the game server. Off until you turn it on. No plugin update needed for this release.
Plugin v0.15.0: Keep Minecraft ranks in step with Discord roles
Your Minecraft ranks can now follow your Discord roles automatically. Give someone a role in Discord and their in-game rank updates on its own — no manual LuckPerms edit, no waiting for a staff member to be online.
- Map the roles you want mirrored. In
/mcdc, pair each Discord role with the in-game rank it should grant. When a linked member’s Discord roles change, their in-game rank follows within about a minute. - It only mirrors — it never takes instructions. There is no in-game command and no chat message that can request a rank, and asking the in-game assistant for one does nothing at all. Ranks are only ever changed by an authorised staff member acting in Discord or directly in LuckPerms; the plugin simply reflects the result.
- Only the ranks you map can be touched. Anything outside your mapping is off limits — ranks you set by hand in LuckPerms, and your staff and admin ranks, are never modified. If a player isn’t in the mapping, they’re left completely alone.
- Needs LuckPerms; off until you turn it on. Rank sync is disabled by default. On a server without LuckPerms it simply stays unavailable — your chat bridge is completely unaffected either way.
Update the plugin with /mcdc update in-game, or let auto-update pick it up.
v6.65.0: Obfuscated slurs are now masked in Discord too
A slur deliberately typed with characters between the letters was hidden in-game but printed in full in the linked Discord channel — so the bridge undid the masking players were protected by. Both sides now mask it identically, and only the slur itself is replaced: the rest of the message keeps its wording and casing.
This applies wherever AutoMod is on with a slur filter pack enabled — the same condition as the in-game masking. No plugin update needed.
The same release also widened the slur filter itself to cover misogyny and sexism, transphobia, homophobia and ableism — see the SA Bot tab for the full note.
Plugin v0.14.1: Summon your companion straight from your hand
The @sai companion item now works when you right-click it in the air — you no longer have to aim at a block to summon your companion. (It still never spawns a stray Allay.)
v6.62.0 + Plugin v0.14.0: @sai companion polish + staff-only enforced in-game
A big polish pass on the in-game @sai companion, from your testing feedback.
- A friendlier companion item. The hotbar item is now a glinting Allay spawn egg (was a player head) — right-click it to summon your companion; it never places or spawns a stray mob.
- He sticks close. Your companion now prefers to settle and stand near you, only flying to catch up when you get ahead — no more constant flitting.
- You see your own question. When you ask @sai, your question is echoed back privately to you (still hidden from public and Discord chat) so you can see what you asked.
- Smarter, never silent. @sai now answers general Minecraft questions too, and always replies — even if just to say it didn’t catch that.
- Clearer linking. Prompts now say to run
/linkin Discord (not in-game). - Staff-only is enforced in-game (security). If @sai is restricted to staff or
linked members, everyone else is blocked from the
/saicommand and the companion entirely — not just refused after asking. The companion stays fairness-neutral (no items, no combat, no advantage), and @sai still never changes roles or perms.
Needs the companion plugin at v0.14.0 (auto-updates as usual).
Plugin v0.13.1: Startup log now names the auto-restart state
A small polish: the server startup log now shows whether /mcdc update
auto-restart is on, alongside auto-update — so an operator can confirm both at a
glance on boot. No change to how updates or restarts work.
Plugin v0.13.0: One-command plugin updates — /mcdc update now restarts to apply
Updating the MCDC plugin is now a single command. Previously /mcdc update
downloaded the new build but you had to restart the server yourself to load it —
now it can finish the job for you.
/mcdc update→ done. It downloads, verifies, installs, and then restarts the server to apply the new build — no second step.- A heads-up before it goes down. Online players get a short (~10-second) in-game countdown first, so nobody’s caught off guard.
- Changed your mind? Run
/mcdc update cancelduring the countdown to abort — the update still applies on your next manual restart. - You’re in control. Set
update-auto-restart: falsein the plugin config to keep the old “download now, restart later” behaviour. The automatic on-startup update check never restarts on its own — only the/mcdc updatecommand does.
Requires your host to relaunch the server when it stops (most panels — Pterodactyl, systemd, a restart script — do this automatically).
v6.61.0: 🧚 Summon your own SAi companion in-game
Players on Premium can now summon a personal SAi companion right inside Minecraft and ask @sai a question privately — the answer comes back to just that player, not the whole chat.
- A private answer, just for you. Ask @sai something and the reply is sent to you alone, so you can get help without filling up the chat.
- The same SAi your server already set up. It’s the very same SAi — its name, tone and server-knowledge all carry over.
- It still only explains, guides and reports. The companion never changes settings, roles or permissions.
- A friendly first hello (optional). Servers can have a companion greet first-time players automatically.
Turn it on in /mcdc → 🤖 @sai Studio → 🧚 SAi Companion. Premium, opt-in.
Needs the companion plugin at v0.12.0 (auto-updates as usual).
v6.60.0: Make the in-game @sai assistant your own
You can now customise the @sai assistant on your linked Minecraft server —
its name, its manner, what it knows, and who’s allowed to use it — all from a new
@sai Studio page in the /mcdc wizard.
- Give it your own name, tone and greeting. Rename @sai, pick how it speaks (concise, friendly, or in-character), and write the line players see when they first talk to it.
- Teach it your server. Add a knowledge pack of your own details — rules, ranks, how to claim land, upcoming events — so @sai can answer players’ “how do I…” questions with your real information. When something isn’t in the pack, it says so and points players to staff rather than making an answer up.
- Choose who can use it. Open it to everyone, to linked members only, to staff only, or turn it off entirely.
- It still only explains and guides. @sai never changes anyone’s roles or permissions — a request to do that is refused, exactly as before.
This is a bot-side change — no plugin update needed.
v6.59.0: Earn XP for time spent on your linked Minecraft server
You now earn XP just for playing on your linked Minecraft server — the same way time in voice channels earns XP.
- Same rate as voice XP. Time on the server earns at the same rate as time in a voice channel, and your 2× events and buffs apply to it just like everywhere else.
- A fair hourly cap keeps it balanced with the rest of the server.
- Link your account to start earning. Use
/linkin-game or the/mcdcwizard to connect your Minecraft account to Discord — playtime XP is credited to linked players only.
Needs the companion plugin at v0.11.0 (auto-updates as usual).
v6.58.0: Channel topic status dot now shows server health
The status dot on the linked channel’s topic now reflects your server’s health instead of the player count, so an online but empty server no longer shows a grey dot.
- The dot tells you how the server is doing. 🟢 means online and healthy, 🟡 means online but running slow, and 🔴 means offline or in trouble.
- Empty no longer looks down. An online server with nobody on it now correctly shows green instead of a grey dot.
Follows v6.57.0, which made the topic show offline when the server is down. This is a bot-side change — no plugin update needed.
v6.57.0: Channel topic now shows offline correctly
The linked Discord channel’s topic used to get stuck showing “🟢 online” with a player count even after the Minecraft server had stopped. It now correctly shows 🔴 Server offline when the server goes down or stops responding.
- The topic tells the truth. When your server stops or stops responding, the channel topic flips to 🔴 Server offline instead of leaving a stale online count sitting there.
- It flips back on its own. When the server comes back, the topic returns to the live player count and stats automatically — nothing to run.
This is a bot-side fix — no plugin update needed.
Plugin v0.10.0: Updates to AutoMod
Behind-the-scenes improvements and refinements to AutoMod. Needs plugin v0.10.0 (auto-updates as usual).
v6.55.0: Updates to AutoMod
Behind-the-scenes improvements and refinements to AutoMod.
v6.54.0: Minecraft chat flags — Dismiss + a reason prompt
The Minecraft chat-flag alert is now a proper action card, and it also shows in the operator portal’s Needs input list so nothing slips through.
- Dismiss button on every flag — and your audit log records who dismissed it.
- Kick / Ban open a reason box pre-filled from the offence (the rule + the flagged text) that staff can edit before confirming — the reason the player sees on disconnect.
v6.53.0: Live server stats in the channel topic
The linked Discord channel’s topic now shows your Minecraft server’s live status at a
glance, for example 🟢 1/7 online · TPS 20.0 · 4ms · 2.3GB.
- Online count, TPS, tick time, and RAM, right in the topic. No need to run a command — the numbers sit at the top of the bridged channel.
- Refreshes about every 5 minutes. Discord rate-limits topic edits, so this updates periodically rather than second-by-second. No plugin update needed.
Plugin v0.9.0: One-restart updates, instant settings, no kick appeal
The companion plugin now updates and configures itself more smoothly. Auto-updates as usual.
- Updates apply in a single restart (it used to take two).
- Your server-side settings apply instantly on start — things like your custom join text take effect right away instead of about a minute later.
- New
/mcdc updatecommand to check for and stage an update on demand. - No appeal line on kicks. A kick is temporary, so the disconnect screen no longer shows an appeal link for kicks (bans still do).
Plugin v0.8.0: Clickable appeal link on the kick/ban screen
The appeal URL shown on a player’s disconnect screen is now a clickable link, not just text. Auto-updates as usual.
- One click to open the appeal. Whether the click actually opens a browser depends on the player’s Minecraft client, but the URL is always readable and copyable either way.
v6.52.0: Minecraft chat-flag alerts go to your staff chat
When a bridged Minecraft message trips AutoMod, the flag notice — with its Kick / Ban in-game buttons — now posts to your staff-chat channel instead of your server-log channel, so it lands where your team is watching. No plugin update needed.
- Falls back to your usual alert channel if no staff chat is configured. The full audit trail still records every flag as before.
v6.51.0: Blocked links are masked in bridged chat
A link your AutoMod blocks (IP-grabbers, or any domain on your link blocklist) is now
masked to *** in bridged chat — in the Discord copy and the in-game broadcast —
instead of only raising a staff flag. No plugin update needed.
- The bad link doesn’t reach the room, but your staff still see it. The masked copy is what players see; your staff alert and server log keep the real link for evidence.
v6.50.0: Ask-SAi answers now show in Discord too
When a player asks SAi in-game (@sai …), SAi’s reply now also appears in your linked
Discord channel — not just in Minecraft. No plugin update needed.
- The bridged conversation reads the same on both sides. Staff watching from Discord can follow the whole exchange instead of seeing a question with no reply.
v6.48.0 / Plugin v0.7.0: Flagged words masked in the in-game broadcast
Words your AutoMod catches are now masked to *** in the in-game Minecraft chat, while
the true wording still reaches Discord and your server log for your records.
- Players see the clean version, staff see the real one. The in-game broadcast is masked; your staff alert and server log keep the original wording.
- Needs plugin v0.7.0+. If auto-update is on, this applies on your next server restart — nothing to download by hand.
v6.47.0: One AutoMod switch covers Discord and Minecraft
Bridge filtering and monitoring now follow your single AutoMod switch — the old separate MCDC toggles have been removed. No plugin update needed.
- One place to control it. Turn AutoMod on and it protects your Discord and your bridged Minecraft chat together; there’s no longer a second bridge-only toggle to keep in sync.
Bans-only appeals and short appeal links
Appeals are now cleaner to offer and easier to type. No plugin update needed for these changes on Server Assistant’s side.
- Only bans offer an appeal now. A kick is temporary, so kicked players no longer get an appeal prompt — only banned players do.
- Short, hand-typeable links. A ban-appeal link is now
https://sa.wandweb.co/a/<code>, instead of the old long/mc-appeal?token=…URL.
Plugin v0.6.0: Appeal a ban/kick from the web, and in-game unban
Banned or kicked players now get a one-time web appeal link on their disconnect screen, and approving an appeal unbans them in-game automatically. Auto-updates as usual.
- A way back in from the disconnect screen. The player sees a link they can use once to appeal, so they aren’t left with no path forward.
- Approve once, they’re back. When you approve an appeal, the plugin lifts the ban on your Minecraft server for you.
Plugin v0.5.0: Carries out staff kick/ban actions in-game
Carries out staff kick/ban actions in-game when triggered from Discord. Auto-updates as usual.
- Runs enforcement on your server. When staff press Kick or Ban in-game on an AutoMod flag alert in Discord, this plugin carries the action out on your Minecraft server.
- Auto-updates as usual. If auto-update is on, this version applies on your next server restart — nothing to download by hand.
Plugin v0.4.0: Reports your server's health to Server Assistant
Reports live server health (TPS, tick time, RAM, uptime) to Server Assistant so it can show your server’s status in Discord. Auto-updates as usual.
- Live health on every check-in. The plugin now includes your server’s ticks-per-second,
tick time, memory use, and uptime when it reports in, so Server Assistant can show them in
the
/mcdcpanel and/onlineand raise optional health alerts. - Auto-updates as usual. If auto-update is on, this version applies on your next server restart — nothing to download by hand.
Plugin v0.3.0: In-game setup — link the bridge without editing config.yml
You can now link the bridge entirely in-game, with no config file to edit and no restart.
- Link from Minecraft or the console. As a server operator (or from the server console),
run
/mcdc link <token> <relay-url>— the same token and relay URL shown in Server Assistant’s/mcdcsetup panel — and the bridge links straight away. - It confirms the link for you. The plugin validates the token and tells you which Discord channel it linked to, so you know it worked without leaving the game.
- No config.yml, no restart. Pasting
relay-urlandtokenintoplugins/MCDC/config.ymland restarting still works, but it’s now the alternative — not the only way. - Auto-updates as usual. Install this version once and later plugin releases apply automatically on your next server restart.
Plugin v0.2.4: Automatic updates, clearer console, join-notice control
The companion plugin now keeps itself up to date. Install this version once, and
from here on new plugin releases apply automatically on your next server restart —
no more downloading a new .jar by hand.
- Install once, then hands-off. On startup the plugin checks Server Assistant for a newer build; if there is one it downloads it, checks it, and stages it so your server picks it up the next time it restarts.
- Verified downloads only. Each update is checked against a checksum before it’s staged, over HTTPS — the plugin never applies a jar that doesn’t match.
- You stay in control. It never restarts your server for you, and you can pin your
current version any time by setting
auto-update: falsein the plugin’sconfig.yml. - No more backlog on restart. When your server (or the plugin) loads, in-game chat no longer replays the recent Discord history all at once — it picks up cleanly from the moment it comes online.
- You can see it working. The server console now prints the plugin version on start and
reports the update check plainly — “up to date”, or “update available: vX → vY — downloading…”
then “staged, applies on the next restart”.
/mcdc statusshows the version and whether auto-update is on. - Join notice, controlled from Discord. The in-game “chat is bridged” notice players see
on join can now be edited and toggled from the
/mcdcwizard (see the bot entry) — the plugin picks up your choice automatically, no config file or restart needed. /mcdc versionin-game. Run it on your server to see the version you’re running and whether you’re on the latest — “you’re on the latest (vX)” or “update available: vY”.
Grab this one update from the download link and drop it in as usual — it’s the last manual install you’ll need.
Discord reactions in Minecraft
Reactions on the Discord side now carry into your linked Minecraft channel, so a thumbs-up or a laugh reaction is visible to players in-game, not just in Discord.
- Reactions appear in-game. React to a message in the bridged Discord channel and it
shows up in Minecraft, for example
Alice reacted 👍 to Bob: "gg". - A Reactions toggle in the wizard. It’s controlled from the
/mcdcwizard and is on by default, so turn it off there if you’d prefer not to relay reactions.
One-command setup wizard
Linking and customising the bridge is now a single /mcdc wizard (also reachable from
/settings → Minecraft), replacing the old /mcdc link, /mcdc status,
/mcdc translate and /mcdc unlink subcommands.
- Pick or create a channel. Open the wizard and choose a channel to bridge from a dropdown, or press Create a channel for me and Server Assistant makes one. On linking it shows the paste-ready plugin config and download link, once.
- One-click toggles once linked. Flip server events (joins, leaves, deaths, advancements, start/stop), the topic online-count, and translation on or off from the wizard, rotate your token, or unlink, in a couple of taps.
- Chat filtering is now optional. AutoMod masking of bridged chat is a toggle, on by default, that you can switch off to relay chat exactly as typed.
- No channel clashes. The wizard won’t bridge a channel already used as your
reception/verification, staff-chat, or mod-log channel.
/onlineis unchanged.
Plugin v0.1.0: The MCDC companion plugin goes public
The first public release of the MCDC companion plugin, the small, free add-on that runs
on your Minecraft server and does the talking to Discord. Drop the .jar into your server’s
plugins/ folder, paste in the two lines /mcdc link gives you, and restart.
- Built for modern servers. Targets Paper/Spigot 1.21.x and needs Java 21.
- Relays what happens in-game. In-game chat, plus joins, leaves, deaths and advancements, are sent through to your linked Discord channel, each one a toggle you control.
- A live online-player count. The plugin keeps Discord updated with how many players are currently on your server.
- Outbound-only, no console access. The plugin makes outbound HTTPS connections only, with no RCON and no ports to open, so no server passwords ever leave your machine.
The Minecraft ↔ Discord bridge goes live
The bot side of the bridge arrived: link one Discord channel to your Minecraft (Paper/Spigot) server with the free companion plugin, and your in-game and Discord chat become a single conversation.
- Two-way chat with real player identity. In-game chat lands in your Discord channel as the player, their Minecraft name and skin-face avatar, and anything typed in that Discord channel shows up in-game.
- Optional AI translation, both ways. Turn on one target language and everyone reads a single conversation, in-game and in Discord, with messages translated live. It is off by default, and text already in your chosen language is left untouched.
- See who’s on at a glance.
/onlinelists the players currently in-game, and the linked channel’s topic keeps a live count, for example “🟢 7/40 online”. - Set it up with one command. Run
/mcdc link, drop the free companion plugin into your server’splugins/folder, paste in the two lines it gives you, and restart. Manage it any time with/mcdc status,/mcdc translate, and/mcdc unlink.