Update log
Everything that changes in Sample Bot, in full, and how to turn each thing on. The announcement in Discord is the short version; this is where every detail lives.
v3.0.1
3 October 2026
Status panels you switch with a command, tickets that only the boards you pick can see, and an infraction for staff who sit out a vote.
Status panels
A message staff switch with a command. Make a panel called Assistant panel with the command
/assistantpanel, add Staff transfers and Applications,
post it, and staff run /assistantpanel to set each one On (a green
circle), Off (red) or Delayed (orange). Text variables hold
whatever staff type, like who is hosting. The posted message is edited in place every time, so the
channel always shows where things stand. Use the built-in layout, or design it yourself in the
message builder, as an embed or plain text, with {staff_transfers} wherever its status
goes.
- Open
/configStatus panels and press New status panel. Give it a name and a command name. - Press Add on/off/delay or Add text for each thing it shows.
- Optionally pick one of your designs under How it looks. The page shows the
{key}to type for each variable. - Pick a channel to post it in, and the staff boards allowed to update it.
Choose exactly who sees each kind of ticket
A ticket type now has one list: the boards that see it. Pick Moderators and Admins, and only Moderators and Admins can see and handle those tickets. Before, boards with the claim any ticket permission and every pinged board could see them too, whatever was picked. Leave the list empty and every staff board sees them. Pings are chosen from the boards that can see the ticket, and the page says plainly who sees it and who does not.
- Open
/configTickets and pick a ticket type. - Choose Boards that see these tickets, then which of those get pinged.
- Tickets opened from now on follow the new list. Open ones keep who could already see them.
Vote attendance
Staff who are active in the server while a vote is up and do not vote can get an infraction automatically. You choose staff votes, session votes or both, how long after the vote starts the check happens, so nobody is caught before they could click, how far back a message counts as being active, and which infraction. It is posted and escalates like any other. Whoever started the vote, anybody on leave, and everybody when the vote has already passed are never given one.
- Open
/configVote attendance. - Pick which votes it watches and which infraction it gives.
- Press Change the minutes to set when it checks and how far back counts.
v3.0.0, the “Summer” Update
30 September 2026
ER:LC redrew the county, and Sample Bot came with it: the CAD on the new map, department servers run as part of your main one, rules for each channel, self roles, and a long list of things staff can now do for each other.
Never close a ticket
A ticket type decides whether its tickets close themselves after a quiet spell. That is the right rule for most tickets and the wrong one for the ticket that has to stay open while management decides something. Staff can now hold one ticket open, whatever its type says. It stays open however quiet it gets, and the ticket shows it is held. Letting it close again starts the quiet clock from that moment, so it never closes the second it is released.
- Nothing to turn on. In the ticket, press Never close on the panel at the
top, or type
/ticket nevercloseanywhere in the channel. - Press Let it close, or run
/ticket nevercloseagain, to undo it. - Only staff who can claim that kind of ticket can do this. The button only shows on ticket
types that close themselves, set under
/configTickets.
Start and end somebody's leave
A member who tells a manager in DMs that they will be away should not have to be chased into filing a request. Staff with the new Force leave of absence permission can put a member on leave directly, and end anybody's leave early. It is treated exactly like an approved request: it is posted in the LOA channel with who started it, the LOA role goes on and comes off, the member gets a DM, and it ends on its own on the date given. Your maximum leave length still applies.
- Open
/configStaff boards, pick a board, and turn on Force leave of absence under Shifts & leave. - Run
/loa forcestartwith the member, the last day of their leave and a reason. They are shown the reason. - Run
/loa forceendwith the member to bring them back now. Holders of this permission can also press End early on any leave post.
The CAD map, on ER:LC's new county
ER:LC replaced the whole map, and the CAD, staff map and regions editor are now drawn on the new one. Every unit sits where it actually is: the new map was lined up against hundreds of real player positions, and they follow the roads. It also loads far faster than the map images PRC publish, which are around eighteen megabytes each. All four seasons are there, summer, spring, fall and winter, each with or without postal numbers. The CAD relearns where each postal is from players on the new map, so for the first while a dropped pin may not name its postal.
- Nothing to turn on. Open the map and pick a season under Map on the right.
- Regions drawn on the old map now cover the wrong streets. Open the regions editor and draw them again.
Channel rules
Rules for one channel at a time, each with its own punishment. Make your commands channel commands only, so "hey guys" is removed. Make general no media, which catches uploads, stickers and GIF links. Make a screenshots channel media only, or keep links out anywhere with no links. The message is always deleted, and you choose what happens to the sender: nothing more, a warning by DM, a timeout for as long as you set, or a kick. Timeouts and kicks go on their record. Your staff are never caught, and every hit is written to the automod log.
- Open
/configAutomod and press Channel rules. - Pick a channel, then what it is for. Each rule starts on Delete and warn.
- Change what happens to the sender from the menu. For a timeout, press Timeout length and type something like 10m or 1h.
- For a commands channel where your bots use
!or;, press Command prefixes and type them. Leave it empty if the channel is for slash commands only.
Start and end somebody's shift
Staff with the new Force shifts permission can start a shift for a member who is in game and forgot, and end anybody's shift. The member is told by DM either way. A shift can only be started for somebody who is actually in your ER:LC server, because shifts end on their own for anybody who is not.
- Open
/configStaff boards, pick a board, and turn on Force shifts under Shifts & leave. - Run
/shift forcestartwith the member, and optionally the shift type. - Run
/shift forceendwith the member./shift endstill works, for either permission.
Departments
Run a server for each department, police, fire, DOT, as part of your main server. Up to ten. Each department server gets Plus from your main server for as long as you have it. Ranks follow the roles people hold in the main server: give somebody the LSPD Officer role there, and they get Officer in the LSPD server. Anybody given a rank who is not in that server yet is sent a one-use invite, and has the rank the moment they join, which is how accepted applications land in the right place. Bans in the main server reach every department too.
It is one community underneath as well. A department server uses your main server's ER:LC connection, so shifts and sessions work there without entering the key again. Shifts worked in a department count towards the main server's leaderboard and quotas. Leave approved in the main server puts the LOA role on in every department too. Tie a department to Law Enforcement, Fire & EMS, DOT or Dispatch, and its ranks open that part of the CAD. A new department server can be built for you, with its channels made and your ranks copied in and linked.
Pick an ER:LC team for a department and its shifts run themselves: anybody holding one of its ranks who joins the Police team in game is clocked on in the department, and clocked off when they leave it. And every department can have a live roster, one message listing each rank, highest first, and who holds it, kept up to date by itself.
- In your main server, open
/configDepartments and press New department. You will be given a code. - Add Sample Bot to the department's server, open
/configDepartments there, press This server is a department and enter the code. - Back in the main server, open the department. Press Build its channels to set up its server, and pick roles in Copy roles from here to make matching ranks there. Or link a role you already have to one of theirs with Add a rank. Then press Sync everybody now once, for the people who already had the roles.
- Pick which CAD department its ranks open, if any, and which ER:LC team clocks its members on automatically.
- Press Post roster to put a live roster in the department's server.
- Bans are copied by default. Press Stop copying bans to turn that off, or Remove them from the server to have people who lose every rank removed from the department's server.
Self roles
Buttons that give a member a role, and take it away when pressed again: session pings, departments people are interested in, anything opt-in. Design the panel yourself in the message builder, where any button can now Give or remove a role, or post a ready-made one in a single command. A button will never hand out a role that can moderate or manage the server, a staff board's role, or one above the bot's own.
- Quickest: run
/selfroles postwith a channel and up to ten roles. - Or in the message builder, add a button and set what it does to Give or remove: and the role.
Fixed
- Setting a quota for a staff board refused every number, including 0 for no quota. It accepts them now.
- Opening the regions editor sent you to the dispatch sign-in and then into the CAD. It has its own sign-in and asks which server you are drawing for. The map now zooms and pans, so a region can be drawn around a single building on the new county.
v2.6.1
25 September 2026
Verified accounts on the feed, a quota per staff board rather than one for everybody, and a reason when a ticket is closed.
Verified accounts
An account can now be verified, and every post it makes carries a blue tick beside its name. It is how members tell your official fire department account from somebody who named theirs the same, and a staff announcement from an impression of one. Staff decide it, nobody can ask for it, and it can be taken back at any time.
- Open
/configPosts and press Verify accounts. - Pick an account from the list to give it the tick, or press it again to take it back.
- More than 25 accounts? Press Search and type a name, a handle, or the member who made it.
A quota per board
One weekly number for the whole server never fitted: ownership is not doing four hours of
in-game moderation a week, and a rule that punishes them for it is a rule you turn off. Each
board now carries its own quota, or none at all, and everything that shows or judges one asks
for the person's own: /shift, both leaderboards, the staff dashboard, and the
Monday promotion and infraction pass.
- Open
/configStaff boards and pick a board. - Press Quota and type minutes a week. Leave it blank to follow the server default, or type 0 so that board is not held to one at all.
- The server default is still Default Weekly Quota in
/configWording & images, for every board that has not set its own.
Closing a ticket says why
The Close button now asks for a reason, and /ticket close takes one as an
option. Optional in both. Whatever is written is said in the channel before it goes, kept on the
ticket, and sent to the member in the DM that tells them it closed. From their side a ticket
used to simply disappear. A ticket closed through an accepted close request reuses the reason
staff already gave, and one that closes itself says how long it waited.
- Nothing to turn on. Press Close as usual and fill the box, or leave it empty.
Fixed
- Claiming and unclaiming a ticket timed out. Both waited on the channel being renamed, which Discord allows about twice every ten minutes and queues after that, so staff saw "Sample Bot is thinking" and then an error. They answer straight away now, and the colour on the channel name catches up afterwards.
- The session dashboard names the ER:LC server owner instead of showing their Roblox id.
v2.6.0
22 September 2026. Everything since v2.4.0.
The biggest update Sample Bot has had. A rebuilt message builder, a session dashboard, full Discord moderation with automod and ban appeals, merging servers, copying a setup between servers, a social feed, quota promotions, and ticket transcripts you can read on the website. Each section says how to set it up.
The message builder, rebuilt
Design any message the bot posts instead of typing a heading and a body into Discord. It is built so a good-looking message takes about a minute.
- Every message starts from Default, exactly what your bot posts today, with Card, Card with logo, Modern, Just text and Blank beside it.
- Only the parts you use are on screen, and clicking any part of the preview jumps to the box that edits it.
- Fill-ins work everywhere they can. The player count, join code, server name, date and session status now work in every message.
- Banners are edited right there, and they are the same setting as
/configBanners. - Custom messages get their own command, like
/rules, limited to the staff boards you choose.
- Go to samplebot.app/builder and sign in with Discord.
- Pick your server, pick what the message is for, then pick a look.
- Change the words and press Save. Panels and session posts use it straight
away. Sticky messages and auto pings need it picked on their page in
/config. - To let a team design messages without full access, tick Use the message
builder on their board in
/configStaff boards.
Session dashboard
One message in your session channel that keeps itself up to date: whether a session is running, the server name, join code and owner, the player count, online staff, the queue, and how a community vote is going. It has a Game Quick-Join button and a Notifications button that turns the session ping on or off for whoever presses it. It stays at the top of the channel when a session ends.
- The low-player command is now
/session boost. Full and boost post a new message, and a boost pings your session role. - A boost no longer rewrites the original session post into a second copy.
- Staff votes never appear on the dashboard. Only community votes do.
- In
/configChannels, set Session Announcement Channel. - For the Notifications button, set Session Ping Role in
/configRoles. - Optional: in
/configWording & images, write a Session Dashboard Intro. - Run
/send sessiondashboard. Change how it looks in the builder under Session dashboard.
Discord moderation and automod
- Warnings, mutes, kicks, bans and timed bans, each filed as a numbered case with a reason. Timed bans lift themselves.
- Automod, sixteen filters, from spam and scam links to mass pings and zalgo. Each can delete, warn, or both. Every filter is off until you turn it on, and staff are never filtered.
- Automatic punishment decides in advance what happens when somebody keeps collecting cases.
- The moderation dashboard is rebuilt, with one log for Discord, in-game and automod, and a card for every person.
- In
/configStaff boards, give boards the moderation permissions they need: Warn, Mute, Kick and Ban members. - In
/configModeration, pick a log channel and add preset reasons. - Use
/warn,/mute,/kickand/ban. - For automod, turn on the filters you want in
/configAutomod.
Ban appeals
When somebody is banned with /ban, the message telling them why can carry an
Appeal this ban button. What they write lands in a channel you choose, pinging
the boards you choose. Accepting unbans them and sends them an invite back; denying tells them the
ban stands. Only permanent bans made through /ban can be appealed.
- Open
/configModeration and press Ban appeals. - Pick the channel appeals land in. That turns appeals on.
- Optional: pick the boards to ping, and set a fixed invite link. Without one, a single-use invite is made when an appeal is accepted.
- Anybody who can ban can accept or deny an appeal.
Tickets that close themselves
When the member stops replying, the ticket warns them and then closes, per ticket type. Nothing closes before staff have replied, and a ticket where the member spoke last is never closed.
- Open
/configTickets and pick a ticket type. - Press Auto-close and set how many hours of silence close it, how many warnings to send, and how far apart. Zero hours turns it off.
- This is part of Sample Plus+.
Ticket transcripts on the website
Every closed ticket's transcript is kept and can be read at a link after signing in with Discord. Only the person who opened the ticket, staff who can handle that kind of ticket, and whoever runs the server can read it. The member gets the link when their ticket closes.
- Nothing to turn on. Every ticket closed from now on has one.
- Optional: to also post each transcript for staff, set a transcript channel on the ticket
type in
/configTickets. The post carries a View transcript button.
Quota promotions and infractions
Promote whoever reaches two or three times the weekly quota by one rank, onto the next board if that is where the next rank is, and file an infraction of your choice for whoever misses it. It is decided every Monday for the week that just ended. Staff on approved leave are never punished, and a week is only judged if these rules were on for all of it.
- In
/configWording & images, set Weekly Shift Quota (minutes). - To promote, set Promote At 2x Or 3x Quota to 2 or 3.
- To punish a miss, set Infraction For Missing Quota to warning, strike, suspension, demotion or termination.
- Make sure your ranks are set up on each board in
/configStaff boards, with a role for each, and that Promotions Channel and Infractions Channel are set in/configChannels.
Merging two servers
/merge folds two servers into one: the roles, the channels, your Sample Bot setup,
then the members. Nothing happens until the other server's owner reviews the whole list and
accepts. Members who have not moved get reminders on your schedule.
- Merge requests are off by default. Allow the direction you want in
/configMerge settings. - The owner starting it runs
/mergewith the other server's ID and chooses what carries across. - The other owner accepts from the message they are sent.
Copy a setup into another server
Panels, ticket types, automations, applications, FAQ answers, moderation setup, auto pings, sticky messages, roleplay types and the marketplace can be copied to another server. Tickets, shifts and punishment records never travel.
- In the server you are copying from, open
/configExport and import and export it. You get a code. - In the other server, import that code in the same place. Anything that cannot be matched is shown before anything is written.
Staff
- Boards hand out roles. Set them with Roles it gives on the
board in
/configStaff boards. - Duty nicknames in your own words. Set the three Nickname
Tag settings in
/configWording & images. - Demotions say what an accepted appeal hands back. Pick the rank with the
appeal_rankoption on/infraction issue. - Nobody decides their own infraction appeal, and roles the bot owns put themselves back if removed by hand. Both are automatic.
Community
- A social feed. Members make accounts with
/accountand post with/post. Set the forum channel, the log channel and account limits in/configPosts. - Sticky messages and auto pings: set them up in
/configSticky messages and/configAuto pings. Both are part of Sample Plus+. - The marketplace is a shop, with a picture and a Buy button per item. Add
items in
/configMarketplace, then run/send marketplace. - Suggestions can ping boards and limit how many one member has waiting. Set
both in
/configSuggestions. - Counting saves: servers that have reviewed the bot at
samplebot.app/reviews get one save a day. Choose when it is used in
/configCounting. /blacklistkeeps your server's list of servers you will not deal with. Set Server Blacklist Channel in/configChannels, and give boards Blacklist other servers in/configStaff boards.
The assistant works without paying for AI
The ticket assistant, the application reader and the automation builder run on six AI providers: Anthropic, Google Gemini, Groq, OpenAI, xAI and OpenRouter. Gemini and Groq are free with no card.
- Get a key from the provider you want.
- Paste it in
/configConnections. The bot checks it and picks a model that key can use.
Sample Plus+
One payment of $50 USD or 8,000 Robux for one server, with our team setting it up for you. Card payments become your slot the moment they go through, slots stack, and every free server gets three days of Plus to try a week after the bot joins.
- Run
/buy plus, or see the pricing page. - Redeem the slot on the server you want from the same command.
Fixed
- People joining a busy server were welcomed as member number one.
- Buttons failed with "This interaction failed" for over a minute after every restart.
- The staff boards page would not open once a server had about fifteen boards. The same fix covers ticket types, applications, dashboard pages and the marketplace.
- The website took about a minute to load your servers in the CAD and the staff dashboard.
- Tickets that close themselves never actually did once a ticket was claimed.
- Adding a marketplace item failed in every server.
/configAutomod would not open.- Panel wording could not be saved.
- A suggestion with a ping role never posted.
- Continue with verification failed for members who were already verified.
- Live in-game events could not be set up without buying the CAD.
- Voice channels never appeared in the status channel pickers.
- One deleted emoji could take a whole ticket panel down.
- Verify and ticket buttons disappeared the second time a design was saved.
- A panel lost its top banner as soon as it was given a design.