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: /settingsMembersNew MembersWelcome & 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:

  • /me emotes. 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. /ticketsEdit panelMax 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 — /settingsRole TiersFine-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. @sai will 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 @sai tells your players. There is no override for this, and it deliberately errs towards refusing: if a page you consider legitimate is turned down, point @sai at a different one.
  • robots.txt is 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, /online kept 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. /online now 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 /automodAI 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 /automodFilter 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 enable slurs_l2 in /automodFilter 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 /link in 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 /link in-game or the /mcdc wizard 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 /mcdc wizard 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 /unlink any 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 /mcdc panel, 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 /mcdc panel.
  • 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 /mcdc panel 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 /mcdc panel.
  • 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 automod status 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. /brand now 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 /mcdc panel.
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 /mcdc setup panel.
  • The panel shows the exact command. The /mcdc setup 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.yml and 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 /help to 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 /mcdc wizard 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 /leveling or 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 /mcdc wizard, 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. /online lists 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’s plugins/ 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”).
  • /rank shows your Level and progress to the next one, plus a clear “XP to spend” line.
  • /leaderboard ranks 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 /autopilot step is now just how setup starts: you get its smart detection and the ability to tweak anything, in one flow.
  • /autopilot still 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. /retro still 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.

  • /autopilot is 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-config any 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 → Emotes panel 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 /cry and 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 anime sets your personal default theme so your emotes lean your way across every server; /hug @member aims 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 safest high threshold (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 /setup wizard 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.

Browse by version v6.x latest v5.x v4.x v3.x v2.x v1.x

What’s next?