CHANGELOG

Updates

What changed, newest first. Feature requests from server owners go straight into this list — most of what is below started as a message in a Discord.

v0.9731 October 2026

Unbans stay lifted after a restart, linking with a code from the panel

Bans
  • Unbans stay lifted. The game loads lifted bans back from its ban file at a restart, so the bot now lifts them again, for 30 days after the unban.
  • Player files: filter the timeline by warnings, kicks, bans, whispers and more. Automatic team moves are hidden until you ask for them.
Also new
  • The /linkpanel answer offers a code in game as well: type your SteamID, get the code whispered, enter it in a form. No slash commands needed.
  • The settings menu sent Ban list panel and Team switch cooldown to the wrong section. Fixed.
v0.9630 October 2026

Unbans reach every server, one ban list instead of four

Bans
  • An unban now reaches every server. A ban on only some of them could stay in place while the bot listed the player as free.
  • Ban lists in Warcon and the game is one table now: every banned player once, with where the ban sits (organisation list or which servers).
  • The ban list panel can be refreshed where it is, or posted again at the bottom of the channel, with a link to it.
Also new
  • Branding: the bot also wears your picture in your Discord, not only your name, so command replies look like yours too.
  • Weapon challenges count kills whichever name you use: the in-game name, the bot's name or the code (FAL, Deagle, WEPN-033).
  • Shop: sell an unban if you want to (product → Unban). It lifts the ban on your servers only, and not one set without appeal.
  • Linking by typing a SteamID is gone again: anyone could claim someone else's account. Without a Steam sign-in, /link sends a code in game.
  • Warn players before the daily restart, in game and in Discord if you like (Settings → Auto end match). Uses your restart time or Warcon's.
  • Kill feed → Ask the server: the game says whether it sends its kills to us, and why not if it doesn't.
v0.9529 October 2026

Challenges count from when you add them, one panel per board

Challenges
  • A new challenge counts from the moment you add it, not from the start of the day or week. Changing what it counts or switching it back on starts it again.
  • One panel per board: one for everybody, one for your roster only, each in its own channel. The roster board shows Discord names.
  • The panel lists each challenge with its full name and emoji, its goal, leaderboard points and reward. Number them if you like.
  • Reset leaderboard starts the board from zero, and challenges finished earlier this week can be finished again.
  • Every finished challenge gets its own message, with a separate channel for the roster if you want. Optional: linked players only.
Also new
  • Whitelist export and import, expiry dates included (Whitelist → Export and import), and the same through the API.
  • /bountyclear takes open bounties down. A bounty on a player who left now ends even when the server is below the player minimum.
  • Members can link by typing their SteamID64 instead of signing in, if you switch it on (Settings → Account linking).
  • End the match after a server restart, so the rotation rolls on instead of staying on the default map (Settings → Auto end match).
v0.9428 October 2026

Auto messages on a player count, tidier seed calls

New
  • Auto messages can go out once a match when the server has held a player count for a few minutes, and only between set times (Automation → Auto messages).
  • Seed calls and "the server is live" show the player count as it is now, and the live message can remove itself after a time you set (Settings → Seed calls).
  • Challenges can count several weapons at once, e.g. all sniper rifles.
  • The kill feed and the alerts have the server switcher at the top, like the overview.
  • Challenges can pay days of whitelist instead of seed points, and players can be linked in bulk (Settings → Account linking → Several at once).
  • VIP days can be made gift-only, and the panel can hide the roles or use your own text (Settings → VIP days).
  • /challengepanel: the challenges with a leaderboard of challenge points only (optionally a second one for a role) and a My progress button.
  • Kill streak challenges (kills without dying), up to 50 challenges, and challenges that only count on the leaderboard.
  • /bountypanel: members put a bounty on an online player and see the open bounties with a button.
  • Link players from your own website: the bot imports your list (Settings → Account linking), or your site sends links through the API.
Fixes
  • /vippanel, /reportpanel and /linkpanel post the panel as their answer when the channel refuses it, and show what Discord said.
  • Whitelist ids coming and going no longer raise "server config changed outside the dashboard"; the bot also takes removed players off the list the game keeps in memory.
v0.9327 October 2026

Challenges, a cleaner whitelist, and a pile of your requests

New
  • Challenges: daily or weekly goals (kills, wins, headshots, a weapon, long shots, seeding) that pay seed points to spend in the shop. Set up under Automation.
  • Clans play together: name your clans (tag + Discord role) and members are moved to their clan's team when they join (Settings → Clans play together).
  • Barred weapons can unlock for everybody once any team reaches a score you set (Settings → Kill feed, "Allowed again from a score").
  • Each server can have its own status panel banner (Settings → Per server → Status panel).
  • Whitelist: one row per player with all their reasons (shop, seeding, booster…), their Discord name, and a filter by reason.
  • "Move clan tags last" now also orders the team balance suggestions in every mode.
  • A role for everyone who linked Steam, taken away again on unlink — lock channels to linked members (Settings → Account linking).
  • Seeding can count only from a number of players, so one player alone no longer racks up seeding time (Settings → Seed calls, "Counts from").
  • Broadcast to one team only: pick the team next to the message on the Overview.
  • Events: their own colour, sign-up only for chosen roles, and weekly events that post the next one by themselves.
  • Bounties can pay more for longer runs (Settings → Bounties → "Bigger runs pay more").
  • New right "Unban own bans": staff lift their own bans, anybody else's goes to a manager as a request.
  • Player files list the player's kills and deaths, and every staff action on them. Roster names open the file and show class levels.
  • Link a player by hand, set Discord nicknames from in-game names, and a voice channel name while seeding.
  • An automation log channel shows what auto messages, welcomes and bounties sent; reporters can be told their report was reviewed.
  • Report panel: /reportpanel posts a button with a form — no command to learn. Ban list: share one of your bans with the network, with evidence.
  • Network alerts can be limited to the kinds you care about (cheating, toxicity …). Whitelist roles can give a set number of days instead of "while held".
  • Shop: products staff hand out themselves, a purchases channel, and /bounty to put a bounty on a player for seed points.
  • Map votes can ask for the mode too (Normal, Infantry only, Hardcore). Team roles: a Discord role for the team a player is on right now.
  • Give one person a role's dashboard rights without the Discord role. Regulars list up to 100 players; anti-cheat cards show the last kills.
  • VIP days: a balance from roles each month, seeding and shop purchases, used or donated with the /vippanel buttons (Settings → VIP days).
  • Seasons: name your seasons with a start date, and boards can show "This season" next to all time (Settings → Leaderboard panel).
  • /switch queues a team swap: you are swapped with somebody who wants your team.
  • Weather that changes during the match, up to five more anti-cheat rules of your own, and a ban log channel with one card per ban.
  • The bot character knows the K/D, favourite weapon and longest kill of a linked player who talks to it.
  • Bans have their own tab under Moderation. Seeding: tick several players to add or remove minutes, or reset them (seed points too if you like).
  • VIP days balances show Discord names, with how many days each member used on themselves and gifted to others.
Fixes
  • Times in the action log showed as raw text ("<t:1793663754:f>") instead of a date.
  • The welcome texts and the voice channel name can now be set per server in the dashboard too (Settings → Per server).
  • The buttons under the public leaderboard copy showed the members-only ranking instead of everyone.
  • Changing a player's whitelist time could change the time they had bought in the shop instead. It now only changes their own timed entry.
  • After a bot restart a server that was being seeded up got no seed call and no seeding time until it had filled and emptied again.
  • /vippanel, /reportpanel and /linkpanel answer at once and say clearly when the bot may not post in the channel.
v0.9226 October 2026

Team lock for every mode, a welcome once a match

New
  • Lock teams in any mode: from the start of the match, or once a team reaches a score (Settings → Team switch).
  • Auto messages can go out once a match, a set number of minutes in — a welcome 5 minutes after the start.
  • The map vote result now says the time of day too, voted or not.
  • Events can make their own Discord role: everybody who signs up gets it, it is deleted 24 hours after the start.
  • Community API: GET /api/v1/kills hands out the kill feed with SteamIDs, weapon, distance, headshot and teamkill.
  • Once-a-match messages set to the same minute now send one of them per match (random or in turn), not all at once.
  • 50 vs 50: "Move clan tags last" keeps players with a [TAG] together — they are only moved when nobody untagged is left.
Fixes
  • The public statistics, the player search and the kill lists could freeze the bot for several seconds at a time. They now run in the background.
Earlier releases

92 of them, closed so this page stays readable. Open any one to read it.

v0.9123 October 2026Dashboard fast again in the evening
Fixes
  • A crawler fetching player pages by the thousand could stall the bot for minutes in the evening, leaving the dashboard on its loading screen. It is shut out and player pages no longer slow the bot.
  • Whitelists that should have run out but stayed on direct-connected servers have been taken off.
  • Team balance no longer logs a failure when a player already moved to the right team themselves.
New
  • Automatic roles: a rule can require another role first, e.g. only verified members get @Veteran.
  • Event rosters show each player's K/D, and WDL teams see who is registered with their team (Settings → Events → WDL key).
  • Roster page: a WDL column, a status dot instead of the Server column, a ★ for whitelisted, and columns you can switch off.
  • New event sign-up sheet: a column per role, a button per role with your server's own emoji, Absence, and a banner. New events remember your last settings.
  • Community API: a new "links" scope reads which Discord account linked which Steam account in your Discord.
v0.9022 October 2026Expired whitelists leave the server again
Fixes
  • On a direct connection, a timed whitelist (seeding reward, adopted entry, bounty) could stay on the server after it ran out, with no end date. It is now taken off when it expires.
v0.8921 October 2026Live boards stay one message
Fixes
  • A live scoreboard, status panel or leaderboard could be posted again beside the old one when Discord answered slowly. Only a message that was really deleted is posted anew now.
v0.8816 October 2026Timed jobs on time again
Fixes
  • The bot's every-minute jobs (whitelist expiry, kill feed setup, leaderboard panels and more) could fall ten minutes behind. Each now runs on its own and on time.
  • Shops on a Stripe account in a country where Stripe allows no platform fee (Malaysia, for one) could not sell at all. They now sell, without our fee.
v0.8715 October 2026Kill feed after the Season 2 update: copy two lines into your server config
Kill feed
  • Season 2 moved the kill feed into the server config file, where no tool can write it any more. Most kill feeds stopped with the update.
  • Dashboard → Kill feed → "Setup lines" gives each server its two lines. Paste them into ServerSettings.ini under [/Script/WDRCON.WDRCONSettings] and restart.
v0.8613 October 2026Roles and rosters for events, banned players out of match recaps, and up to 50 whitelist roles
Events
  • Events can have roles now (Infantry, Recon, Pilot, FOB, Anti Air, Armour, Commander or your own), with places per role. Players pick theirs when they join.
  • Staff can build a roster from the sign-ups in the dashboard (drag players into squads) and post it to Discord; it updates when you change it.
  • Players who are not on the Discord can be added to an event by SteamID. They get the event whitelist and can go in the roster.
Recaps & whitelist
  • A player who is banned, before or during the round, no longer shows up in the match recap or on the public match page.
  • Up to 50 Discord roles can now give a whitelist slot, up from 10.
v0.8510 October 2026A role for everyone in voice, no more freezes from leaderboards, and safer whitelist lengths
Voice role & map vote
  • Everyone in the voice channels you pick now holds a role, and loses it when they leave. Use it as the ping role for seed calls and map votes, so the ping reaches the people playing.
  • With the time-of-day vote off, each map vote option now shows the sky set on that rotation entry, e.g. "Bakurani · Farmland · Night Clear".
Fixes
  • Leaderboard panels of big communities froze the bot for up to four seconds at a time, failing buttons everywhere. They are now worked out on their own thread.
  • The voice channel role is now taken back when someone leaves the channels. It could stay on after the first minute.
  • "1m" means one minute, and a whitelist set to it ran out a minute later. Whitelists now last at least an hour; for a month write 1mo (or 30d).
v0.849 October 2026Whitelist removals stick, map votes open on KOTH again, and quiet kill feeds say why
Fixes
  • Taking a player off the whitelist on a directly connected server now sticks. Before, the list could put them straight back.
  • Map votes open again on servers whose last rounds ended early on a map change: the bot now uses the score the mode really ends at (100 in KOTH).
  • Leaderboard buttons and shop purchases answer at once instead of failing with "This interaction failed" on busy evenings.
  • Directly connected servers no longer flash "Server is offline" in the dashboard when the game drops one idle connection: the bot asks again at once.
Kill feed
  • A kill feed that goes quiet is checked again daily. If another tool took over the address, the dashboard says which one; if all is set, it tells you what to try.
v0.838 October 2026Buttons answer again on busy evenings, and dashboards and Steam sign-in open reliably
Faster answers
  • On busy evenings the bot could freeze for up to 25 seconds at a time: buttons failed with "This interaction failed" and some dashboards would not open. The longest pause is now under two seconds.
  • A player count the website asked for on every visit now runs on its own thread, and a few slow domain lookups no longer hold up every connection — which also fixes Steam sign-in failing.
Steam checks
  • When Steam asks the bot to slow down, it now pauses for ten minutes instead of asking again, and friend lists stay within a fixed budget. Account age and VAC checks keep working.
v0.828 October 2026Your vote channel can keep only the vote that is open, and show who voted
Map vote
  • Only keep the newest vote takes the earlier votes for that server out of the channel when a new one is posted, so a channel kept for votes shows the one players can still use.
  • Show who voted names the people under each option, up to eight per option and a count for the rest. Nobody is pinged by it, and it stays off unless you turn it on.
  • Both sit under Settings → Map vote and can differ per server. Deleted votes stay on record — only the message goes.
v0.817 October 2026A Discord role can now spare your regulars from the high ping kick
High ping
  • Settings → High ping → Exempt by Discord role. Anyone holding one of those roles is never kicked for ping, so a clan with hundreds of members no longer has to list every SteamID.
  • They need their Steam account linked here with /link, same as the name filter's role bypass. The SteamID list still works alongside it.
  • The role is only looked up for players actually over the limit, so it costs nothing on a full server.
v0.805 October 2026The end-of-match line now lands on the final scoreboard, not in the next round
End of match
  • It was sent when the bot saw the map had changed — which is after the next map finishes loading, so it arrived about a minute late, in the opening of the following round.
  • It now goes out the moment the score says the round is decided, while everyone is still on the scoreboard. Said once per round, and still said if a round ends some other way.
  • It also shows up in your action log now, with how many players the server delivered it to.
v0.795 October 2026A logo pasted from Discord no longer disappears a few days later
Your own name and picture
  • A link to a file posted in Discord expires after a few days. The address still ends in .png, so the cards simply went back to the bot's own picture with nothing to say why.
  • Those links are now refused when you save them, and one that has already expired says so instead of showing a bare 404. Upload the logo to an image host and paste that address.
  • A Discord server icon is fine — those do not expire. Two of ten subscriptions were affected.
v0.785 October 2026A server the bot had quietly stopped watching is watched again
Live tracking
  • If one check of one server ever hung, that server was never looked at again until the bot restarted: no rounds, no seeding time, no alerts, no panel — while every other server carried on normally.
  • A check that overruns is now dropped and the next one runs, so a server cannot fall out of sight. Five communities were in that state today, one of them with 400 players on it.
  • Nothing to do on your side. If your rounds or alerts stopped for no reason, they are back.
v0.775 October 2026Barred weapons can now be set per server
Per server
  • Settings → Per server → Kill feed now has the barred weapons: bar the GL on two of your servers and leave it on the third.
  • The message to the player, the kill or kick and the admin alert can differ per server too. Servers left on Community follow your main setting.
  • Tick This server on the one that differs. An empty list there means that server bars nothing, whatever the community setting says.
v0.764 October 2026A map vote can no longer turn an infantry-only round into a normal one
Map vote
  • On an infantry-only server a vote could set the next map without the infantry-only setting, so the game played that round in its default mode — tanks and all.
  • The winning map is now always played the way the rest of your rotation is played, and a map the vote adds takes the rotation's game mode with it.
  • A round your rotation already has is played from your rotation instead of being added a second time, so the rotation stops growing on every vote.
Rotation
  • An entry with no game mode is now called out for what it does — the server plays it in its own default mode — instead of being listed as one the server would reject.
v0.754 October 2026“Only members with this role” now holds for every ranking, not just the first
Leaderboard panel
  • With All in one message on, the role filter applied to the ranking written into the channel and to none of the ones behind the buttons — K/D, matches, seeding and profit showed everybody.
  • Switching the single message off made it look as though the setting worked, because then each ranking is a panel of its own and goes through the filtered path. That is how it was found.
  • The buttons now use the same filter, paging included. Nothing to change on your side.
v0.744 October 2026Weapons your server does not allow, enforced from the kill feed
Barred weapons
  • Settings → Kill feed → Weapons this server does not allow. Every kill with one of them gets an answer: a word to the player, and a kill or a kick as well if you want one.
  • Asked for by an infantry-only community who wanted the .50 and the grenade launcher left alone, with nothing but reading the feed by hand to catch anybody.
  • Pick them from the ones your own feed has seen: the game's spellings are not what you would guess, and the .50 comes through as AMR 50.
How it counts
  • Per round, like the teamkill rule: "from the 3rd kill" means the third this match, and it starts over with the next one.
  • It is a per-server setting, so one server can bar a weapon while another leaves it alone. Needs the kill feed.
v0.734 October 2026The tag message box now shows the wording players will actually hear
Protected tags
  • Leave What they hear empty and the bot uses its own wording — one of four lines, depending on whether the tag leads to a kick and whether you let members in by a Discord role.
  • The example in the box matched none of them. An owner tested with it empty, got wording she had never written, and had nowhere to look it up.
  • The box now shows the exact line your setup would send, and a check keeps it that way.
v0.723 October 2026Recent visits showed kills from rounds the player barely touched
Player files
  • The kills, deaths and cash beside a visit came from every round that visit overlapped, however briefly. Rejoin for the last two minutes of a 73-minute round and you were shown its twenty kills as your own.
  • A visit now has to cover at least half a round before that round's figures are put beside it. On a sample of 509 recent visits, 227 were carrying numbers they had not earned.
  • A visit that played the round keeps its figures exactly as before.
v0.713 October 2026An unban the server did not really carry out is no longer reported as done
Unbanning
  • A ban placed by SteamID sits in the server's own ban list whether or not the server ever saw that player. The unban then answers "no player matching" while the entry stays put.
  • The bot took that as done and said so. An owner told a player he was clear to join, and days later he still was not — the entry was still on the server.
  • The ban list is now read back before anything reassuring is said, and you get told to take the entry off the server itself instead.
v0.703 October 2026A logo that does not load now says so instead of quietly doing nothing
Community branding
  • The picture is fetched when you save it. A link that gives back an empty file, a deleted one or a web page is refused with the reason, instead of being stored and ignored.
  • Two of the nine communities paying for branding had a picture that could not load — one empty, one gone. Discord quietly falls back to the bot's own avatar, so they were paying and seeing nothing.
  • Pictures already saved are checked too: the branding page now tells you if yours stopped working.
Where the picture comes from
  • There is no upload here — you link to an image that is already somewhere on the web, ending in .png, .jpg, .gif or .webp. Discord fetches it from that address every time it posts, so it has to stay reachable.
v0.693 October 2026A deleted ban list panel comes back, and there is a button to ask for it
Ban list panel
  • Settings → Ban list panel → Post it now. Every other panel on that page had this button and the ban list did not, so there was no way to ask for it again.
  • Delete the messages and the bot now notices and posts them afresh. It used to compare the list, find it unchanged and never look at whether the panel was still there — three communities had a dead one.
  • If the messages keep disappearing within minutes, it stops after a few tries and says so in your log rather than writing into the channel on a timer.
Why it posts more than once
  • A long ban list is spread over several messages, about twenty bans each, and the bot keeps them all up to date. Fifty bans means three messages — that is the list, not a mistake.
v0.683 October 2026Hear about every VAC and game ban that joins, not just the ones that score high
Join alerts
  • Settings → Moderation alerts → Always tell me about a VAC or game ban. A player joins with one, the alert channel hears about it, whatever the risk setting says.
  • A game ban on its own, or a VAC ban older than a year, never reached the usual threshold — and turning the threshold down to catch them also reported private profiles and young accounts.
  • Off by default, so nothing changes unless you switch it on. Asked for by a server owner.
Steam ban kick
  • Yesterday's fix for Warcon's split permissions missed this one: the automatic kick for players with a Steam ban was still asking for the old permission name.
  • It was dead on the same 59 servers as the rest. Working again, and a check now hunts for that mistake instead of us grepping for it by hand.
v0.672 October 2026Warcon split one permission into three and the bot stopped noticing
Kick, kill and move
  • Warcon turned the moderation permission into three separate ones. Keys issued since then carry only the new names, and the bot was still asking for the old one.
  • On 59 servers across 43 communities that meant no /kick, no /kill, no team moves, and the idle kick, spectator kick, balancer and teamkill kick silently doing nothing.
  • Both spellings work now and nothing needs changing on your side. The bot reads whichever your key has.
Setup
  • The connection checklist and the message after /setup no longer report a new key as missing a permission it has.
  • Found by a server owner who spotted the Warcon release notes and connected it to what he was seeing.
v0.662 October 2026Bans the game cannot carry out now take effect anyway
Ban list
  • The game cannot ban a player who is not on your server, so the bot holds the ban and carries it out itself the moment they join.
  • This repairs itself for bans already on your list. It covered 974 standing bans across the network that had no effect anywhere.
  • Lifting a ban lets go of the held one too, so nothing comes back on its own.
Clearer errors
  • When a server refuses its own config the bot says so, instead of reporting that your list was rejected. One owner spent two days looking for a bad entry in a list that was fine.
  • The message about a Warcon key missing the ban-list right now appears in your language.
  • A SteamID64 is checked properly, so nonsense cannot get onto a list.
v0.652 October 2026Bounty messages said the name of the setting instead of your text
Bounties
  • The bot was announcing the words bountyMessage and bountyClaimedMessage in game instead of the lines you wrote. Fixed, with nothing to change on your side.
  • The three bounty lines are edited under Settings → In-game messages, which shows the default and the placeholders you can use.
  • The second set of boxes under Bounties is gone, so there is one place to edit them instead of two.
v0.641 October 2026Settings now say which of your servers they apply to
Per server
  • Everything in Settings applies to all of your servers. Differences live in the Per server section, and every section that can differ now says so with a link to it.
  • Lock teams, the game's own team lock and the teamkill alert threshold can really be set per server now. Those rows existed but did nothing.
  • The settings for restarting a ruined match can be set per server as well.
v0.631 October 2026Rounds end when they end again
Match tracking
  • For about forty seconds after a map change a server reports no teams, and the bot read that as the scores having been reset. On servers that stay on one map, rounds stopped ending at all.
  • One round had been open for three days with a 100-point win inside it that nobody was told about. Recaps, match length, the team record and the clock on your status panel are accurate again.
  • Rounds are no longer recorded for an empty server or for a single player on their own.
v0.621 October 2026A switch for reading players' game careers
Game career data
  • The bot reads players' WARDOGS level, classes and unlocks for their player files and role rewards. There is a switch for it under Settings → Game career data now.
  • It only ever asked about players actually on one of your servers, and only for what the game itself publishes.
Smaller things
  • Two settings sections shared the same code, so pointing somebody at ST-40 or ST-41 could send them to the wrong screen.
  • The groups in the rights matrix are in their intended order in every language, not only in English.
v0.611 October 2026Your log stops reporting things that did not happen
Whitelist
  • A player whose whitelist has no end was being announced as freshly whitelisted every time they earned a seeding reward. One community had the same four names scrolling past all day.
  • When a whitelist runs out and the server refuses to take the player off, your log now says so and what the server answered.
Quieter
  • Three standing problems were logged on every single attempt, about 1,500 lines a day between them. They are reported once an hour each now.
  • Watch mode writes its log lines in German, Spanish and Turkish, like the rest of the bot.
v0.601 October 2026The end-of-match message works, and a whitelist stops fighting itself
In-game messages
  • Settings → In-game messages → End of match had never sent anything. It failed on every match end since the day it shipped, 37 times in the last day alone.
  • There is now a check that compares every line the bot sends against the list of known messages, so this cannot ship unnoticed again.
Whitelist
  • A timed whitelist the server would not remove was put back and taken off again every minute. One community did that 1,406 times in a day.
  • It ends once now, with what the server said kept beside it, and your log says so in words.
v0.591 October 2026The teamkill counter resets with the round again
Teamkills
  • The count was kept per server session rather than per round, so three teamkills stayed three until the server restarted. It counts within the round now.
  • Asked for by an owner whose players were being kicked for something they had done hours earlier.
Match tracking
  • 191 rounds across the network were still open, some for a fortnight, because nothing closed a round on a server that had gone quiet or offline.
  • Rounds on empty servers, on servers that stopped answering and on servers the bot no longer follows are closed properly now.
v0.581 October 2026Watch the bot decide before you let it act
Watch mode
  • Settings → Watch mode → Only watch, do not act. Everything the bot decides by itself is written into your log and carried out by nothing. Read a week of it and judge for yourself
  • Several of these features move players, kill them and restart rounds. Asking an owner to switch that on and find out on a full server is asking a lot — this is the answer to that. It covers the idle kick, the team limit, the balancer, the round restart, the name filter and the Steam ban check
  • Your staff are untouched. Somebody typing /ban still bans. A switch that quietly swallowed a moderator's work would be a trap rather than a trial, and there is an automated check guarding exactly that so it cannot be broken later
  • Every suppressed decision appears in Log as *would have run … and did not*, with the player and the server
  • It sits near the top of Settings rather than inside some feature's section, because it governs all of them — and a switch like that buried three screens down is one nobody finds until somebody tells them
v0.571 October 2026The lock stops punishing the people fixing your teams
Switching to the losing side is allowed now
  • Lock teams for the match used to send back everyone who changed sides, which is the wrong half of the problem. Nobody stacks a server by joining the side that is losing — somebody who walks over to the thin side is doing the job this whole feature exists to do, and we were marching them back
  • Only a switch onto the fuller side is undone now, or one that would put a side over your limit. The rule is simply whether the sides are level or better for them having moved: 50 against 48 becoming 49 each is help, 48 against 50 becoming 47 against 51 is stacking
  • This makes the lock usable on a busy server. One community called it too blunt to switch on, and they were right
And a way out of a match the teams have already ruined
  • Settings → 50 vs 50 → Restart a match the teams have ruined. For the case nothing else can reach: a side gets rolled, twenty of them quit at once, and everyone still playing has been in that match for an hour. A limit cannot help, because nobody is arriving on a server that is emptying. Moving the survivors is worse than the problem
  • So the players are told, given time to even it out themselves — walking to the small side is always allowed — and the round is restarted only if they do not
  • It judges by share, not by gap. Ten players apart is a rout at thirty players and nothing at a hundred. The small side has to fall under 40% of the two sides, be at least 8 players short, and somebody has to be winning because of it — a close game is hurting nobody however uneven it looks, and restarting one would be the rudest thing this bot does
  • Off by default, with a cooldown so it cannot restart in a loop. Restarting somebody else's match uninvited is not a thing we switch on for them
v0.5630 September 2026“Unknown name, Unknown name, Unknown name”
A ban list of strangers
  • Your community ban list showed a column of *Unknown name* with nothing but SteamIDs underneath, and so did most of the player files. The name was hard-coded to null in one case and looked up only among people who had played on your own servers in the other
  • Which is precisely backwards: the people with a file or a ban are mostly the ones who never played there. A network ban of a cheater somebody else caught, a report about a player seen once, a ban placed before they ever arrived — none of them have a name on your server, and all of them had one somewhere
  • Both now fall back to any name that SteamID has worn in any community, and then to the Steam profile. On a sample of 1,897 player files it took the ones with a name from 749 to 1,895. One community's ban list went from eighteen SteamIDs to eighteen names
  • Nothing new is collected for this. Every one of those names was already on record and simply was not being asked for
v0.5530 September 2026Whitelists that ran out and never went away
A skip with no note
  • When a timed whitelist runs out, the bot takes the player off the list. If the community has since disconnected its server, there is nowhere to take them off — so the whole thing was skipped, silently, for ever: no log line, no error, and the grant sat open. On the dashboard it showed as a live whitelist that had expired hours earlier
  • It is now closed properly, with the reason written into the log. Four of them had been hanging in one community for up to six hours
  • There was a quieter risk in it too: a grant still marked open would have been written back onto the list the day that community reconnected — handing back a whitelist that ran out last week
v0.5430 September 2026“Could not lift this ban” when the player was already free
A refusal that meant success
  • When the bot lifts a timed ban and the server answers *“that player is not currently banned”*, it had been treating that as a failure — retrying every minute, and showing the community a red line saying a ban could not be lifted. The player was free. That is what we were asking for
  • Four bans had been sitting like that for up to ten days across four communities, each retried thousands of times for nothing. They are closed, and that answer now counts as the success it always was
Checked and found healthy
  • Map votes. 501 failures in a week looked alarming: on KOTH the game reports no score limit, so a vote set to trigger at a percentage has nothing to measure against. Almost all of them are more than three days old and there have been none for six hours — the bot learns the limit from the first match that finishes, and it did. Nothing to fix, which is worth saying as plainly as a fix
  • Every address the dashboard asks the bot for — 164 of them — is answered by something, and every setting a community can change is read by something. Both were checked because the day's bugs were all of that shape, and both came back clean
v0.5330 September 2026Bans waiting for a first visit are visible at last
Eighteen bans nobody could see
  • The game cannot ban a SteamID it has never seen, so the bot holds those bans and carries them out the moment that player first joins. That has worked for a long time — and it was shown nowhere. The function that reads them was written and never called once, so a ban of somebody your server has not met simply disappeared from view after you issued it
  • Settings → Bans now lists them, under *Waiting for a first visit*, with the reason. One community had eighteen sitting there, every one a network ban of a known cheater, and no way to know
  • This is most of what a ban list contains. Keeping a stranger out before they arrive is the point of one
And the tests now match reality
  • Two of the 886 automated checks were still asserting that a community ban gets written into the server config and shows as *applied*. The game ignores that key — it has been saying so in every reply — and both claims were removed from the product days ago; the tests had not caught up, which is a good way to defend a bug
  • They now check the opposite: that the config is not used for bans at all, and that nothing claims an entry is applied when it is only listed
v0.5230 September 2026The bot now tells you when it cannot do something
94 broken channels nobody knew about
  • The setup check looked at eight channels. There are twenty-nine channel settings. The kill feed was not one of the eight — and one community's kill feed had been failing every forty seconds for over a day, 2,277 times, with the only record of it sitting in a log on our server
  • It now checks every channel the bot has been pointed at, so a feature added next month is covered without anybody remembering to add it. Across the network that turned up 94 broken channels in 45 communities — a quarter of all servers had something silently failing
  • The live voice channel is checked too. It is stored with the server rather than as a setting, so nothing was looking at it, and renaming it was failing 407 times a day. Discord needs both *Manage Channel* and *Connect* for that, and *Connect* is the one everybody misses
  • And the kill feed setup log says why it failed instead of the word “error”. The reason was already being recorded and thrown away at the one place anyone reads. Of 26 failures: 17 connections without the *Config & settings* right, 5 revoked Warcon keys, 3 timeouts, 1 rejected server image
Smaller things from the same sweep
  • Settings → In-game messages → 50 vs 50: moved because the team was full can be edited now. The bot has always sent it; the dashboard keeps its own list of editable messages and this one was never added to it
  • Premium is in the sidebar. The page where a community subscribes was in the tab list and in none of the sidebar groups, so it could only be reached by typing a query parameter by hand. It is under Setup, and it is called Premium rather than Branding, which is what people are looking for
  • A check was written for all of this: it compares the lists that are supposed to mirror each other — settings against the dashboard, messages against the editor, tabs against the sidebar — so this class of gap gets caught rather than reported by whoever runs into it
v0.5130 September 2026Bans of players your server has never met now actually happen
The button that did nothing
  • Yesterday we shipped a button to put a community ban list in force. For one community it reported success eighteen times and banned nobody. They checked their config, found nothing, and said so — they were right
  • A ban list is mostly people your server has never met. That is the point of one: keeping a known cheater out before they arrive. The game cannot ban a SteamID it has never seen, and the bot has always had an answer for that — it holds the ban and carries it out the second that player joins
  • That answer was unreachable for directly connected servers. They are given a made-up organisation id so the rest of the code has something to key on, and the ban path read it as “there is an organisation ban list” — so instead of holding the ban, it wrote the player to the very list the ban came from, got told “already on it”, and reported success. A closed circle with a cheerful message on the end
  • Fixed. That community's eighteen bans are now held and will land the moment any of those players first joins. If you pressed the button and nothing happened, press it again
  • And the result now tells you the truth: how many were banned on the spot, how many are waiting for a first visit, how many were refused — instead of one number that counted all three as done
v0.5030 September 2026The roster remembers your roles, and has a permission of its own
Two things wrong with yesterday's roster
  • The roles you picked did not survive leaving the page. They lived in whoever's browser had it open, which was our mistake: a community decides once who counts as one of theirs, and the whole staff should see the same roster. Pick your roles and press Remember this — it is saved for everybody
  • Roster is now its own permission in Settings → Roles & permissions, instead of borrowing Player notes. A squad leader can be given the roster without also being handed the private notes on every player who ever set foot on your servers. Anyone who could open it yesterday still can
  • Both reported by a community, who also could not find the tab at first — it is under Community
Why this one is worth more than it looks
  • Saving those roles is the start of something four separate requests have been circling: bounty targets drawn from your own members, a leaderboard of them, an awards post for them, a spectator kick that leaves them alone. Each of those needs the same question answered — who counts as ours — and now it is answered once, in one place, instead of four features each growing their own switch
v0.4930 September 2026A word at the final scoreboard, and an idle check that works during seeding
End of match broadcast
  • Settings → Messages → End of match. A line sent in game once the round is over, while everyone is sat on the final scoreboard. Empty by default, so nothing changes until you write one. {winner}, {map} and {scores} are available, and it can differ per server
  • The reason to have it, in the words of the community who asked: pointing players at your Discord mid-round means a banner across somebody's screen during a firefight. At the final scoreboard it interrupts nobody
The idle check can now cover seeding
  • The idle kick only ran above a player count, so it deliberately stayed out of seeding — which is the one time a community asked for it. There is now a ceiling as well as a floor: set it to where your seeding ends and the check works while the server fills, then stops on its own once the count passes it, and starts again if the server empties out
  • And it can kill instead of kick. On a full server you want the slot back; while seeding you do not — a body still counts towards the number that draws other players in. A killed player is asked the same question again a few minutes later, and is told why first, since the game's kill command carries no message of its own
  • Both default to off and to the behaviour they had, so nothing changes for anyone who does not touch them
  • The request came with a script that killed everybody every four minutes. We did not copy it: that also kills the people building, repairing and holding the point, and during seeding those are the players most worth keeping. The check only touches somebody who has done nothing at all for the whole window — cash, kills and deaths all unmoved
  • Both asked for by a server owner
v0.4830 September 2026Telling who somebody is when the game will not say
“usually the name you know them by”
  • Streamer mode and anonymous mode give a player a name from a small pool, and the server reports that name, so your scoreboard fills up with Teas and Ghosts and an admin has no idea who is who. The SteamID identifies them, but nobody recognises a SteamID on sight
  • The live scoreboard now shows the name a player is usually known by on your servers, under the one they are currently wearing: *usually the name you know them by*. It picks the name that SteamID has worn here the longest, not the most recent one — a run of random names would otherwise bury it — and says nothing at all when they have never worn one long enough to be known by it
  • The SteamID under each name is no longer grey-on-grey. It was always there; it was also the first thing to disappear when you glanced at the board
  • Reported by a community, who asked whether they were missing something. They were not — it genuinely was not there
Worth knowing if you run into this
  • Settings → Name changes posts to your alerts when somebody renames mid-session, with the names that SteamID used before. Worth switching on if your community sees a lot of this
  • Every name is kept either way, so the player pickers in Discord and on the dashboard find people by names they no longer use — typing an old name still finds them under the new one
v0.4730 September 2026Post into a thread, and never ban the wrong Tea
Threads
  • Anywhere you pick a channel, you can now pick a thread. Seed calls in their own thread rather than a whole channel, recaps in another — they show up in every channel picker under the channel they belong to, as general › seeding
  • Threads fall asleep when nothing happens in them, and a sleeping thread refuses messages — which is exactly what a seed call would hit, since it is quiet precisely when nobody is seeding. The bot wakes the thread before posting, the same way it already handled its own forum posts
  • Only threads that are currently awake are offered, since an abandoned one is not somewhere to send anything
  • Asked for by a community while setting the bot up
Two players called Tea
  • WARDOGS gives players in anonymous mode a name from a small pool, so a busy server has several people called the same thing — we currently have three different SteamIDs that have been Tea. Typing that name into /ban, /kick or /warn took the first match, and the command went through: right log entry, wrong person gone
  • An ambiguous name is now refused, with the SteamIDs of everyone it could mean, so you can say which. Picking from the dropdown was never affected — that has always sent the SteamID — and where two people in that list share a name, the last four digits are now shown beside it
  • Found while looking into a question from Marco of ARC about how random names are handled. They are not handled at all yet; this was the part that could hurt somebody
v0.4629 September 2026Report bans can have a length, and the leaderboard buttons look like buttons
Two things users asked for today
  • Banning from a report now asks how long. Deciding a report was a permanent ban and nothing else, because there was nowhere to say otherwise — so a first teamkill and a cheater got the same sentence, and staff either overdid it or banned a second time by hand afterwards. The Ban dialog and the Discord button both take 12h, 7d, 3w. Leave it empty and it is permanent, exactly as before, so nothing changes unless you want it to. Asked for by a community
  • The leaderboard panel buttons are capitalised and carry an icon — 💀 Kills, 🎯 K/D, 🎖️ Matches, 🌱 Seeding, 💰 Profit. A column of buttons reading "kills / matches / seeding" looked like unfinished work, and it was. The heading above them stays lower case on purpose: it is the middle of a sentence, not a label. Asked for by a community
v0.4529 September 2026The community ban list was never reaching your servers. It does now
What was wrong, plainly
  • The community ban list was written into your server config. The game ignores the ban list there — and it has been telling us so in every single reply: *"DefaultBannedPlayerIds is managed by the ban endpoints, not this file; the supplied list was ignored."* That sentence arrives in a field we were throwing away. Nobody read it, for months
  • So a community ban never took effect, and taking somebody off the list never lifted anything. One community unbanned the same player six times in four days, each one confirmed by the server, and he was back every time. They were right and we were wrong, repeatedly, in writing
  • We are not going to dress this up: if you added someone to your ban list and assumed they could not join, that assumption was wrong until today. The list itself was never lost — every entry is still there
What changed
  • Community bans now go through the endpoint that enforces them — the same path a staff /ban takes, which has always worked. Add someone to the list and they are banned straight away
  • Your existing entries are waiting for you, not fired off behind your back. The Bans tab now shows how many of your list are not in force on each server, with a button to put them in force. We are not doing that for you: on some servers it is fifty bans in one go, and that should be a person who knows their server pressing a button, not a deploy
  • Players your servers have never seen may be refused — the game will not ban a stranger. Those stay on the list and take effect the first time they turn up
  • Whatever your server says about a config we send it is now kept and shown, instead of discarded. That one field would have saved everyone months
  • The whitelist was never affected. It travels through the config and the config carries it properly, which is how the two could be told apart
  • Found by pulling on a thread from a community who kept saying their unbans were not sticking
v0.4429 September 2026The team limit no longer forgets who switched sides
A restart used to disarm it for the rest of the match
  • The 50 vs 50 team limit works at the door: it only redirects somebody who has just arrived or just switched sides, so nobody gets dragged out of a fight. Spotting a switch means remembering which side each player was on — and that was kept in memory only
  • So every restart of the bot wiped it. Afterwards everyone looked like a long-standing member of whatever side they were on, and a switch made before the restart was invisible for the rest of the match. On a full server, where switching is the *only* way teams can go wrong, that is the feature gone entirely. It is now kept properly, and a restart changes nothing
  • Found while looking into a 58 v 41 on a 100/100 server. Worth knowing if you run one: on a full server the limit has nothing to do — nobody is arriving to be redirected. What fixes teams there is "Players keep the team they started on", which sends a switcher back and needs no free slot. If your teams drift while the server is full, that is the setting you want
  • Reported by a community, who asked whether it was people hopping around or the system failing. It was both, in different halves
And the limit can now reach the person who actually caused it
  • Settings → 50 vs 50 → Who the limit may move. The limit only ever touched somebody who picked their side in the last two minutes. That is gentle, and on a server that is always full it means the limit does nothing at all: nobody arrives on a full server, people switch instead, and by the time a side is over the line the switcher has been there longer than two minutes
  • Set it to 0 and there is no window: whoever picked the crowded side most recently moves, however long ago that was. Still newest-first, still never somebody who has held their place longest — just no longer letting a side sit eight players over because the clock ran out
  • Left at two minutes, nothing changes. If your server runs full, 0 is what you want
  • This one is a community's own design. They said the last person to join should be the one who gets balanced, and they were right — it is a better rule than the one we shipped, and it does not forbid switching sides the way locking teams does
v0.4329 September 2026A roster page, a findable Steam-ban setting, and a lookup that keeps identities to staff
Roster — name your roles, see your squad
  • Community → Roster. Name the Discord roles your community wears — a member rank and a recruit rank, say — and you get everyone holding them: who is on your servers right this minute, whether they have linked a Steam account, their SteamID, and their matches, K/D, kills, headshot share and network totals. Search it, sort by any column. Built for the competitive communities who pick squads out of their own members and were reading a leaderboard of strangers to do it
  • Members who have not linked come back too, marked — "who still has to link" is half of what a roster page gets asked, and linking is what makes whitelists, bounties and player files work for them at all
  • Career level shows only for people who signed in with Steam on our site themselves. The game hands out nobody's profile but their own; there is no way for us to fetch it for somebody else. The page counts how many of your roster that is rather than showing quiet blanks. Everything else on it we work out from your own servers and it needs nothing from your members
  • Staff only, since it pairs Discord accounts with SteamIDs
  • Asked for by a community, in enough detail to build from — including a screenshot of the one they had built themselves
Two smaller things a user was right about
  • Settings → Players with Steam bans is now its own section. Keeping people with VAC or game bans off your servers was filed under "Moderation alerts", where nobody could find it — a community owner asked us where it was and was not the first
  • `/lookup` no longer tells everybody who a SteamID belongs to on Discord. The stats stay open to all; the line naming the person is for staff, and for anyone who started from that Discord user anyway. Where it is hidden the card now says nothing at all rather than claiming the player is not linked
v0.4229 September 2026Taking someone's staff role away now takes their dashboard away
Why a removed admin could still log in
  • A community took the staff role off some former admins and found they could still open the dashboard and change anything. They had done nothing wrong — the gap was ours
  • Alongside the roles you set, anyone holding Discord's Manage Server permission got everything here automatically, and Administrator includes Manage Server. So a Founder or Co-Founder role kept full access however you tidied up the roles below it
  • Settings → Roles & permissions → Admins follow these roles too already existed for this, but it did not go far enough: it still left every Manage Server holder the dashboard, the settings and the connection — enough to see everything and to switch the setting back off. Now it leaves those to the server owner alone. Everyone else gets what their roles grant, down to no access at all
  • You still cannot lock yourself out. The owner of the Discord always keeps the way back in, and that is one person who cannot have the role taken from them
  • Off by default, so nothing changes until you turn it on. If you have ever wondered who can actually open your dashboard, this is the switch
  • Reported by a community
v0.4129 September 2026Lifting a ban now really lifts it
Where your bans were actually going
  • A community reported that players it had unbanned were banned again later, with nothing in any log to say who did it. Chasing that turned up a fault of ours worth explaining, and an open question we would rather state than paper over
  • The fault: lifting a ban was not reaching your servers. The community ban list is written into the server config, but the config does not keep it — the key is gone by the time we read it back. Taking an id out of an array that is already empty removes nothing, so a player you had forgiven stayed banned with nothing anywhere saying why. The bot now reads each server's own ban list and unbans for real. Six players across two communities were banned after their ban had been lifted; they are not any more
  • The open question: whether community bans are arriving in the first place. On the servers we checked, most standing entries were not in the server's own ban list either. We are not going to guess in public about why. If you rely on the community ban list, treat it as unproven for now and keep banning through the bot as well, which goes straight to the server and is unaffected
  • The whitelist is not affected — it survives in the config exactly as written, which is how we could tell the two apart
  • Reported by a community, who were right that something was putting bans back and right that it was not them. An earlier version of this note claimed we had the mechanism worked out; we did not, and it has been rewritten
v0.4029 September 2026A leaderboard of your community, and a second one for everybody else
Two boards, two audiences
  • Settings → Leaderboard panel → Only members with this role. The board then counts only players who linked their Steam account and hold that role — your community, rather than everybody who happened to walk onto the server
  • Also post an open copy here puts the same standings, unfiltered, into a second channel. So the members' board can live behind a role while something still faces outwards
  • Worth knowing before you switch the filter on: a player the bot cannot recognise is a player it cannot count. Only linked accounts carry a role, so the members' board will be shorter than the open one — /linkpanel, shipped a few versions ago, is the fastest way to fix that
  • Asked for by a competitive community
v0.3929 September 2026Write your own anti-cheat rule: several numbers that must all be true
“A K/D over 20 and half headshots and six kills a minute”
  • Each anti-cheat check stands on its own today, which is right for one sign that is damning by itself. What a community asked for is the other shape: numbers that mean nothing apart and something together. Settings → Anti-cheat → A rule of your own: fill in a K/D, a headshot share and a kills-a-minute figure, leave what you do not care about at 0, and an alert is raised only when every one of them is true in the same match
  • Kills a minute is measured over the busiest stretch, not the whole match, and that distinction turned out to matter more than the rule itself. A WARDOGS match runs for hours: measured across all of it, the best player on a busy server manages 0.6 a minute. Any rule written against the match average would never have spoken
  • A word of warning that cost nothing to learn: the example the request came with — K/D 20, 50% headshots, 6 a minute — would have flagged nobody at all in 30 days on a busy community, 7,642 player-matches. K/D 4 · 30% · 2 a minute from 15 kills flagged three. A rule that never speaks looks exactly like one that works
  • So: ask us before you settle on your numbers and we will replay your rule against your own last 30 days and tell you what it would have caught. Off by default
  • Asked for by a community, who suggested a scripting language and were right that it was worth thinking about how it would work first
v0.3829 September 2026The kill feed can be searched, filtered and read backwards
A hundred lines and no way to look for anything
  • The dashboard kill feed showed the last hundred kills and nothing else — no search, no filters, thirty days at most. Checking a report meant scrolling, or going back to Discord
  • There is now a search box (a name or a SteamID, killer or victim), a filter for headshots, kills at 200 m and further, vehicles, teamkills and own deaths, a weapon picker built from what your servers actually used, and Show older kills to walk back through the history a page at a time. The range goes to a year
  • Nothing was ever deleted, so a year is not a limit of the storage — it is where the picker stops. A community running since the start can still reach its first kill
  • While a search is open the list holds still instead of refreshing every fifteen seconds, so the line you are reading does not move under the cursor. Measured on the busiest community: a name search over a hundred thousand kills answers in 92 ms
  • Asked for by a community
v0.3729 September 2026An anti-cheat alert now shows the kills it is about
“70% headshots over 20 kills” is a number, not an answer
  • A percentage cannot be told apart from luck, a good player or a cheat. The kills behind it can, and the bot has had them all along — it just never showed them
  • Every alert now carries what they used as chips (SPH-2 · 9, Desert Eagle · 2) and a Show the kills button: time, weapon, who it was, how far, headshot and vehicle markers. The first alert I opened after building it turned out to be an artillery crew firing at 1,400 metres, which no percentage was ever going to tell anybody
  • It reads from the kill feed, so it appears on alerts from servers that have one. Older alerts stay as they were
  • Asked for by a community, who put it exactly right: it was very hard to tell whether it was luck, a very good player, or cheating
“One bounty per match” can mean one a day
  • A WARDOGS match is not a round: they run for hours, and on a quiet server past a day. A community wondering why their bounty fired once and never again had the setting on, and their match had been the same one since the previous evening
  • Nothing changed in how it works — the setting now says so before you switch it on
v0.3629 September 2026A button in your Discord that links a Steam account
Nobody has to be taught a command
  • Linking worked, but it started with somebody being told to run a command. `/linkpanel` posts a panel that stays in the channel: press the button, sign in with Steam, done. The shape everyone already knows from every other Discord
  • The sign-in link belongs to one person and expires after half an hour, so it cannot sit on a shared panel. The button hands each person their own link privately instead — nothing appears in the channel and nobody learns anybody's SteamID from it
  • Pin it where new members land. Every linked account is one more player whose playtime, kills and seeding minutes count towards your leaderboards and whitelist rewards
  • Asked for by a competitive community
v0.3529 September 2026Auto messages take turns instead of arriving together
Five messages, five announcements at once
  • Every auto message runs on its own interval, so five of them on thirty minutes meant five announcements over the middle of everybody's screen, half an hour later five more. The messages were right; the timing made players tune them out
  • Settings → Announcements → Gap between auto messages. Set a gap and only one goes out at a time: each message still waits for its own interval, but never lands on top of another. The one that has waited longest goes first, which rotates through them by itself — or set it to pick at random, so players cannot tell what is coming
  • 0 is the default, which is exactly today's behaviour. Per server, like the messages themselves
  • Asked for by a community
v0.3429 September 2026Take a warning back, and let your warning rule act by itself
A warning given in error stood there for good
  • Warnings could be withdrawn — the bot has been able to do it all along — but nothing in the dashboard ever offered it. A warning with the wrong name on it was permanent in practice
  • Every warning still standing now has Withdraw next to it in the player file. It stops counting towards anything, including the escalation line, and is struck through. Nothing is deleted: the record keeps who gave it, who took it back and when
Your line can now be a rule, not a hint
  • The file has always said “three warnings in seven days — consider a ban” and left the rest to a human. Settings → Player files → When the line is crossed can now make it act: suggest (as before), kick, or ban with a length you set
  • It runs on the warning that crosses the line, appears in the log as Warning rule, and tells the player the count as the reason. The kicks line stays a suggestion whatever you pick — a rule that kicks would otherwise feed its own kick counter and go round again
  • Suggest stays the default, so nothing changes for anyone who does not go looking for this
  • Both asked for by one community in a single message
The idle kick counts money coming in, not money going out
  • Spending counted as taking part, which meant somebody could park at base, buy and sell every few minutes and never be touched. Earning is now what resets the clock — along with a kill or a death
  • Spotted by a community
v0.3329 September 2026Bounties say their line in game, and your staff can stay unnamed
The in-game bounty announcements said nothing at all
  • The three lines a bounty says in game — the announcement, the claim and the whisper to whoever claimed it — were declared in the wrong place. They never reached the In-game messages page, and the code that fills them in had no default to fall back on, so the announcement failed while the Discord card went out fine
  • They now sit with every other line the bot says in game, under Settings → In-game messages (ST-21), with your wording kept as it was
  • Fixed with it: a bounty picked at random threw an error on every check, because a piece of it was never declared. That is why the random mode never set anything either
“Warned by tiny_panda_1997” means nothing to a player
  • An admin's Discord name is rarely their name in game, so naming them in an in-game line tells the player nothing — and some communities would rather not name their people in front of a hundred players at all
  • Settings → Announcements → Name your staff in game. Switch it off and every {staff} in an in-game line becomes simply “staff”: warnings, kicks, bans, the lot. Your own wording is untouched, and Discord keeps naming who did what, because that is where it belongs
  • Asked for by a community, who wondered whether warnings were the only line with a name in them. They were not
v0.3229 September 2026Clearing eighty alerts without eighty clicks
Select all, and mark them legit in one go
  • A community that has had the anticheat running for a week opens Alerts to a wall of flags, and until now the only way through was one click each. There is now a Select all button and a tick box on every open alert, and one press closes the lot
  • Only as legit — the harmless outcome. Trusting a player for good changes your settings, and a kick or a ban is not something to do to a list nobody has read, so those stay one at a time. That is on purpose, not an oversight
  • An alert somebody else decided while you were reading does not break the run: it is skipped and the rest go through, and the result says how many were done
  • Asked for by a community who had 82 of them waiting
v0.3128 September 2026“You are not a member of this Discord” — said to people who are
Reports that would not go through
  • Before somebody can file a report, the bot asks Discord whether they are in your community. When that question failed to get an answer — a rate limit, a hiccup, Discord having a bad minute — the bot read the silence as no and told the player they are not a member. They then went and joined a Discord they were already in, and it still did not work
  • A failed check now says so and asks them to try again, which is what it always should have said. Only an answer from Discord itself produces the members-only page
  • That page is also more useful when it is right: it names the account they are signed in with. Most of the people who hit it are signed in with a second account, and until now nothing on the page said which one
v0.3028 September 2026Bounties never fired, and the team limit went quiet exactly when the server was full
A bounty on a run was never set, on any server
  • The game's id for the current match only reaches the bot through the kill feed, on the kills themselves. The bounty asked the live status for one instead — there is no such field there — and then looked for kills filed under the bot's own row number. There are none, so nobody ever had a streak and not one bounty was ever placed in “on a run” mode
  • It now takes the match from the feed, where it lives. On the community that reported it, that is 6,744 kills in the current match the check can finally see
  • Nothing to change in your settings. If you have it on and it has been silent, that was this
The limit per team could not act on a full server
  • The limit moves people who have just turned up, and it worked out “just turned up” from when they joined the server. On a full server nobody joins, because it is full — people change sides instead, and those changes were invisible to it. So the limit went quiet at exactly the hour it was needed, and came back when the server emptied enough for someone to join
  • It now knows how long somebody has been standing on the side they are standing on, which is a different question from how long they have been on the server. Changing sides starts that clock; a restart of the bot or a new match still falls back to the join time, so nobody who has been playing for hours is moved by mistake
  • Reported by a community as “it stops working around 9:30 every night” — which is when their server fills up
v0.2928 September 2026An idle kick that goes by the money, not by standing still
Settings → Idle kick (ST-46)
  • A player parked in a corner for an evening costs a slot on a full server, and the game's own idle timer is slow and cannot be changed. This kicks them: a time limit you set, up to two whispered warnings first, a minimum player count, an exempt list for admins and casters, and your own wording for both the warning and the kick
  • What it watches, and why it is not movement. The game tells a server tool seven things about a player — name, SteamID, faction, kills, deaths, cash and ping. There is no position and no input in that list, for us or for anybody else working through the server API. So this watches the three numbers that move when somebody takes part, and cash is the one that carries it: it changes for building, repairing, resupplying, refuelling a gun, an assist and a kill. A builder and an artillery crew count as active; a body in a ditch does not
  • Kills alone would have been useless, and we checked rather than guessed: across three days of real sessions, two thirds contain a quarter of an hour with no kill and no death, and a fifth go half an hour. Holding a point is not idling. That is why the shortest setting is 5 minutes but the default is 25, and the help text says so
  • Off by default. A server where nothing moves at all for twelve minutes is treated as one whose numbers the bot cannot read, and nobody is kicked there — some hosts report cash as zero for everyone, and that must not empty a server in one sweep
  • The warning and the kick reason are yours to word, under Settings → In-game messages (ST-21), with {left} for the minutes somebody has left
  • Asked for by a community, who also worked out that the money metric covers the builders. It does
v0.2828 September 2026The setup guide goes away when there is nothing left to set up
14 of 14 done, and still sitting at the top of your dashboard
  • A guide with every step ticked off is furniture. Once everything is done it disappears on its own, and there is now an × to put it away before that — for the steps you have decided you are not going to do
  • It comes back by itself if something stops working: a channel that was deleted, a key that lost a right. A card that hid a broken feature would be worse than one that overstayed, so the × is not offered while something is flagged
  • Putting it away is remembered in your browser, per community — your colleagues keep theirs
v0.2728 September 2026Unban from the player file, where the ban is
The way back was on another page
  • You can ban somebody from their player file, and the ban is listed right there — but lifting it was only possible under Bans. Everybody who banned from the file went looking for the undo on the same page and did not find it
  • A player with a ban still standing now has Unban in their file, next to Warn and Ban. It lifts the ban on every linked server and closes the record, exactly as the bans page does — and staff without the unban right get “Ask to unban”, which sends it to a manager
  • Thanks to the admin who asked where it was hiding
v0.2627 September 2026An unban that the server accepts and does not act on is now said out loud
“Unbanned” when the player was still banned
  • An appeal was approved, the server answered “OK: unbanned”, the bot wrote it down as done — and the player was still banned hours later, until the same unban was run again by hand and that time it took. From the log there was nothing to see: the request went out and was acknowledged
  • The bot now reads the server's ban list back after every unban. A ban still standing is reported as exactly that, with what to do about it, instead of a clean confirmation. It does not invent a failure either: a server that cannot serve its ban list is not held to it
  • This does not fix the game's side of it — an unban it acknowledges and keeps can still need the server restarted. It does mean you find out at the moment it happens, rather than from a player who cannot get back in
  • Thanks to the community who reported it.ES for reporting it with both cases
v0.2527 September 2026The team limit moved the wrong people, and the log now says which rule moved them
The limit per team could move somebody who had been playing for hours
  • The limit moves whoever joined that team last. The bot kept that per match in memory — cleared whenever a new match starts and whenever the bot restarts — so for the first minutes after either, everybody carried the same timestamp and “last to join” was a coin toss. Players 40 and 90 minutes into a session were moved as if they had just walked in
  • Two fixes. The order now falls back to when a player actually joined the server, which survives restarts and new matches. And the limit only considers somebody who turned up in the last two minutes: if nobody qualifies, nothing happens and the team stays one over until the next person leaves. It is a rule about the door, not about the match
  • Thanks to the community who would not take “it works” for an answer and asked us to check the log
The log says which rule moved a player
  • Four different rules in 50 vs 50 can move somebody, and every one of them was logged as plain “50 vs 50” — so an owner watching players being moved could not tell the closed team doing its job from a balancer they had just switched off
  • Entries now read 50 vs 50 · team limit, · closed team, · balance or · teams locked. Same for the whisper the player gets, which was already specific
v0.2427 September 2026Even the teams at the start of a round, then leave them alone
50 vs 50: only at the start of a round
  • A second way to stop people being pulled out of a fight they are in the middle of. Settings → 50 vs 50 → Only at the start of a round: the balancer evens the teams while the round is young — five minutes by default, yours to set — and touches nobody after that
  • The clock comes from the game, so restarting the bot does not make it think a round has just begun. A server that reports no match clock is left alone rather than guessed at
  • Off by default, and it pairs with yesterday's limit per team: the limit keeps new arrivals on the right side all match, the round-start window sorts out whatever the first minutes left uneven. Asked for by a community an hour after the limit shipped
v0.2327 September 2026A limit per team, instead of pulling people across the map mid-fight
50 vs 50: at most this many per team
  • Evening out the teams during a match means moving somebody who is playing: they have earned money, they are in a fight, they may be seconds from being revived — and they end up on the other side of the map on the other team. On a server that is either full or empty, that is the problem rather than the fix
  • Settings → 50 vs 50 → Limit per team. Whoever joins once a side is full is moved to the other one straight away; nobody already playing is touched, and with both sides full nothing happens at all. Set 50 on a 100-slot server and you get 50 vs 50 at the door instead of in the middle of a firefight
  • Off by default (0), and independent of “Keep the two teams even” — use the limit, the balancer, both or neither. Per server, like the rest of 50 vs 50, and the whisper the player gets is yours to word
  • Thanks to the community whose idea it was, and who described exactly what was wrong with the old answer
v0.2227 September 2026Buttons that did nothing, and why the bot was slow to answer
The bot had no time left to answer you
  • Discord gives a bot three seconds to react to a button or a command before it gives up and the click simply does nothing. That happened about 105 times a day, scattered across every hour and every community, so it never looked like a pattern — it looked like the bot being flaky
  • The cause: a player's profile page shows where they stand on the network board, and to find that one number the bot rebuilt the entire board — every player on every server, sorted — and then threw it away. Once per profile opened, and those pages are opened by anyone, crawlers included. The bot was spending a whole processor core on it, all day, and had nothing left for a button press
  • The standings are the same for everyone, so they are now worked out once and kept for a few minutes. The bot went from a permanently full core to a quarter of one; public pages answer in a fifth of a second instead of five seconds, and no click has been dropped since
“Server config changed outside the dashboard” when nobody had
  • When the bot writes your ban list and whitelist into the server config, it keeps that as a version of its own so the config watch does not report it as a change made behind your back. It was keeping what it had sent — and some servers take the change and go on reporting the config they had, so every later check found a difference and said so, every ten minutes
  • It now keeps what the server actually reports back after the write. A version the bot records is something it has seen, not something it hoped for, and a real edit on the server is still reported
v0.2126 September 2026Players are named by the name they are using right now
The name on a record is not the name to look for
  • A name is stored as it was at the time: the kill feed keeps the name on the kill, a match keeps the name on its scoreboard. That is right for the record and useless for finding somebody — and with streamer mode, where the game hands a player a new name every so often, hopeless. You read a kill feed, go looking for that name in the player list, and find nobody
  • The kill feed, the leaderboards, the player search and the player file now name everyone as your server names them right now. Where the old name is the point — a kill that happened an hour ago, a search that matched a name somebody used to have — it is kept beside it, so both are in front of you
  • The leaderboard was quietly worse than that: it picked whichever of a player's names sorted highest, so somebody who had changed clan tag showed up under a third tag entirely — one they had worn for eleven minutes in September
SteamIDs are links now
  • Every SteamID in the dashboard — the player list, match scoreboards, the history, the files, the search — opens that player's Steam profile. Selecting the number to copy it still works exactly as before
  • Thanks to the community who asked. It was a copy-and-paste detour everybody was taking several times a day
Bounties could never be claimed
  • The bounty that marks whoever is on a run asked the kill table for a column it does not have, so it failed on every check and no bounty was ever set that way. Fixed — and nobody had to notice, because it failed silently into the log
v0.2026 September 2026A server moved to another node no longer looks like a server the bot has never seen
Every player joining was reported as changing their name
  • The game shows a player's Steam name for a second when they connect and only then puts your clan tag on it. The bot saw a bare Steam name on one check and the same name with a clan tag on the next, and posted a name-change alert — for every single player joining a server that hands out a tag. Nobody had renamed anything
  • A tag arriving in the first minute after somebody connects is now taken for what it is. A different name is still reported, and so is a tag put on or swapped later in the match — which is the case the alert is actually for
  • Thanks to the community who reported it the same day they switched the alert on
The kill feed of a server that changed hosts
  • When a host moves your server to another node it comes back on a new address, so it has to be added again — and the bot has no way of knowing it is the same machine. But the kill feed token lives in your server config and moves with it, so the kills kept arriving under the old server, while the dashboard showed “no kills reported yet” next to a server that was plainly being played on
  • The bot now notices that the feed belongs to a server that was replaced and counts it for the one you have connected, as long as there is no doubt about which. Nothing to change in your config and no restart
  • For the history left behind — kills, matches, playtime, graphs — write to us: we can merge the old server into the new one, and the day and hour figures are added together rather than one replacing the other. One community had 72,000 rows and 49,000 kills put back that way
The map vote gave up on a mode it had not seen before
  • King of the Hill reports no score limit, so the bot learns it from finished matches — but the automatic map vote only ever looked at matches of that mode on your own server. Start a mode you have not run before and the percentage had nothing to work from, so the vote never opened and the log said to wait for a match to finish, once an hour
  • It now asks the same place the panel does, which falls back to what the mode ends at across every community when your server has no history of its own. A mode that is new to you works from the first round
“Server config changed outside the dashboard” when it was the bot
  • Yesterday's whitelist repair wrote entries back into server configs, and the config watch reported it to owners as a change made behind their back. It was the bot writing out the community's own list
  • Writes from the list sync are now kept as versions of ours, the same way a change from the dashboard is. A real edit on the server is still reported
v0.1926 September 2026Whitelists the bot had granted were missing from servers that were connected again
Boosters who were whitelisted and were not on any list
  • The whitelist the bot hands out and the list it writes into your server config are two different things, and they came apart whenever a community changed how it connects — moving from Warcon to direct RCON, or a host moving a server to another node so it had to be added again as a new one. The grants stayed on file, the list started empty, and the bot went on believing those players were whitelisted: it answered “already whitelisted” to every attempt and never wrote them to a server again
  • 17 communities were affected, 179 whitelist entries in total — boosters, whitelist roles, seeding rewards and bought slots alike. Nothing in any log said so, which is why it went unnoticed: the dashboard listed them as whitelisted, the server had never heard of them, and the player was told to take it up with an admin
  • The bot now checks its own grants against the list on every sweep and puts back anything missing, with the date it was originally earned. It ran once on release, so every one of those players is on their server again — nobody has to re-add anyone by hand
  • A server that is connected now gets the community's ban list and whitelist written to it straight away instead of at the next sweep. Entries somebody put on the list by hand before the bot arrived are still left alone
  • Thanks to the community who reported it — “boosting doesn't work any more” after a host move was exactly this
v0.1826 September 2026A community can move to another Discord and take its history with it
Moving servers between two Discords of your own
  • Communities end up with servers split across two Discords — a second one was opened because the first had run out of server slots, or what started as a dev server became the real thing. Re-adding the servers in the other Discord took two minutes and left every kill, visit, name and seeding minute behind in the old one, which nobody noticed until someone looked a player up and found them blank
  • We can now move the lot across for you: servers, kill feed, playtime, seeding, name history, staff log. A player who played on both sides keeps both — their hours are added together rather than one side replacing the other
  • The new Discord keeps its own channels, roles and settings. Nothing is overwritten, and nobody has to be off the servers while it happens — ask us in the support Discord if you need it done
v0.1725 September 2026King of the Hill no longer shows a score target that is already beaten
The score target on King of the Hill
  • King of the Hill is the one mode the game reports no score limit for, so the bot works it out from matches that finished on your server. On a server in its first hours there is only one of those — and if that match ended early on a map change, its score became the target. That is how a panel came to read “34 / 25” while the match was still being played
  • A target a team has already scored past is now dropped instead of shown: the score stands on its own until the bot knows better. Reaching it exactly is how a match ends, so a finish still reads “100 / 100”
  • And a server with barely any history of its own now takes the score this mode ends at everywhere else, instead of guessing from a single match. New servers get the right number from their first match on. A server with matches of its own keeps its own — communities running a shorter round are not overruled
  • Thanks to the community who reported it on their first day with the bot
New versions can land in a channel of yours by themselves
  • Until now an update only reached whoever thought to run /wardogs update — which means it reached almost nobody, and features sat unused because nobody knew they existed
  • Settings → Bot updates (ST-41): name a channel and every new version is posted there once, as one short card with a line per thing. The full write-up stays on the website for whoever wants the detail
  • Empty by default, so nothing changes unless you ask for it. Switching it on does not replay old versions — you get the next one, not the last twenty
Bounties: the server picks a target, and somebody gets paid for it
  • The bot marks one player, announces it in game, and whoever kills them gets a reward. Settings → Bounties (ST-40). Off by default; it needs the kill feed, because that is how the bot sees the kill happen
  • Two ways to pick. On a run marks whoever is pulling away in the current match — five kills without dying by default, so the server decides who is worth hunting rather than a dice roll. At random picks somebody every so often, which suits a quiet evening
  • A suicide or a teamkill never ends a bounty. Neither does the marked player killing themselves, or a friend doing it for them. The mark stays until somebody on the other side earns it — otherwise the whole thing is a formality
  • The reward is whitelist time or a Discord role, and you choose whether the claim is announced to the whole server, whispered to the claimer, both, or kept quiet. A role reward only marks players who linked their Discord, because a role cannot reach anybody else — no hunt that ends in a shrug
  • A bounty ends on its own when the round does or the marked player leaves, and by default a match carries one at a time. All of it can differ per server. Thanks to the community whose idea it was, and who thought it through out loud
Automatic roles can now be a range — and take themselves back
  • A rule was one number: reach it, keep the role for good. Now every rule has a second field, “up to”. Leave it empty and nothing changes — the role is a milestone and stays earned
  • Fill it in and the rule becomes a band: the role is given while the number sits between the two, and taken away again when it leaves. That is the role removal people have been asking for, without a switch for it — a range simply implies both directions
  • Good for anything that should describe where someone is rather than what they once did: a newcomer role for under 10 hours that disappears by itself, tiers that hand over cleanly as players climb, a low-activity role that lifts when someone comes back
  • Weekly top rules are unchanged — a rank is already a range, so they take no upper end. Thanks to the community who reported it
The setup guide asked for a right you already had
  • “Tick Org lists on the key in Warcon” — except it was ticked. Warcon split that one right into two and renamed it: what used to be lists.edit is now lists.ban and lists.reserve. The bot only ever looked for the old name, found nothing, and reported it missing
  • It hit 37 of 40 communities connected through Warcon, in the setup guide, the dashboard overview and the weekly owner report — for months, and nothing was actually wrong. Bans against players who never joined your server worked the whole time
  • Both spellings now count, everywhere the bot asks. The warning is gone for everyone it was wrong about, and still appears for anyone genuinely missing the right
  • Thanks to everyone who asked about this instead of assuming they had done something wrong
There is a support Discord now
  • Questions, bugs and ideas had to find their way to us through whoever happened to be around. There is now a place for them: discord.gg/jFzsvjBxwM, linked in the header and the footer of every page
  • Channels for asking, for reporting something broken, and for what the bot should do next — plus an FAQ with the questions that actually came up in the last weeks, from map votes being ignored to what a score tick is worth
  • Ask in the help channel and get the Server Owner role by yourself: the bot checks every quarter of an hour who runs a community with it. Nothing to claim, nothing to prove
The server list is back
  • Since the 25 September patch the game only hands its server list to the game client, over a websocket. Our own requests kept being answered — correctly formed, right client version, right regions — with an empty list every time. That is why /servers showed almost nothing for a day
  • The full list is back: around 2,700 servers and 150,000 players across all thirteen regions, a few minutes old. It is kindly provided by wardogserverlist.com, who solved reading it, and the page says so where the list is shown
  • Your own servers are unaffected and never were — those come from our own connection to them, live as always
Communities running more than ten servers can have the ceiling raised
  • Ten linked servers per Discord was a hard stop, the same number for everyone. The limit is there for the polling load — every linked server is asked for its state every few seconds — not to sell anything, so a community that genuinely runs more was being turned away for no good reason
  • The ceiling can now be raised per community. Ask on the support Discord and it is lifted for yours; everything else stays exactly as it was
  • It is deliberately not a setting in the dashboard, because a limit anyone can lift for themselves is not a limit
The clan tag message waits until the player is actually in the game
  • It used to go out the moment the bot first saw the name — which is while the player is still on the loading screen, under the returning-player line, gone before they look at anything. People were being kicked over a tag they were never told about
  • It now waits until they have picked a side and been in the round for a few seconds, so it arrives after the welcome message rather than buried under it. Someone who never joins a side is still dealt with after a minute — the name is on the scoreboard for everyone either way
  • Only tags wait. A blocked word still goes the moment it is seen, because that is not a misunderstanding to be explained gently
  • How long the player has been here is read off their visit, not kept in memory, so a bot restart does not hand everyone already playing another minute of grace. Thanks to the community who passed on what their players told them
Topping up advertising credit was switched off by mistake
  • Stripe asks the bot owner to finish a questionnaire before communities can be paid on their own accounts for shop sales. Until that is done the bot stops offering the shop — correctly. But the same switch also turned off advertising credit and donations, and those are paid straight to the platform and need none of it
  • So the advertise page could say “Payments are not switched on yet” while the account was taking money perfectly well, and anyone wanting to buy a Sponsored spot was turned away for six hours at a time
  • The two are now separate: the shop waits for Connect, advertising credit and Support the bot do not
A bid without credit no longer looks like a won spot
  • The Sponsored spots have always been paid for: only bids with credit are served, and every impression comes off that credit. A bid with an empty balance was never shown — but the auction still called it “Rank #1 · winning”, which read like a spot nobody had paid for
  • Bids for next week are now checked exactly the way the spots are handed out on Monday. Your own panel says “will not run: no credit” instead of “winning”, the public list marks such a bid “not funded” and gives it no trophy, and saving a bid with an empty balance says so straight away
  • Bidding ahead of a top-up stays allowed — that is what the week before the auction closes is for
A map vote now says when your rotation will ignore it
  • A rotation left on Random plays whatever it likes. The winning map is still written into the right slot, the server then picks another one, and the vote looks broken although everything worked — the warning about it only ever reached the action log, where nobody goes looking
  • The vote card now carries it: on a random rotation it says so when the vote opens, so nobody votes for nothing, and again when it closes. Switch the rotation to Ordered under Settings → Map rotation and the winner holds
  • Thanks to the community whose first vote won with five votes for Ozeti · Church — and the server loaded Bakurani
What a score tick is worth over a minute
  • The live panel already showed what one tick pays a team holding a zone. It now also shows what a full minute of holding pays, because that is the number you actually compare when picking Seconds per score tick
  • The game pays less per tick the faster it ticks, and those two only cancel out exactly at 30, 27, 24, 21 and 18 seconds — all of them $400 a minute on a control zone. Anywhere in between is worth up to a tenth less for the same minute held; 20 seconds is the weakest at $360. Where a better setting is close by, the panel now names it
v0.1624 September 2026Run a giveaway on seeding time over the days you pick, blocked words and protected tags can now answer differently, and buying a monthly membership in the shop works again
A giveaway on seeding time
  • Settings → Top seeders board → Range → “A giveaway — days I pick”, then a first and a last day: the board counts only those days. Nobody's seeding time has to be wiped for a contest, and everything people earned before it still stands
  • The board shows the stretch and counts down to the last day, then switches to “Final result” — so the winners stay readable after it ends instead of being overtaken by the next weeks
  • New: /seeders from: to: — the same board for any stretch of days, on the spot, whether a giveaway is set up or not. Leave the dates out and it shows the giveaway, or the usual board. Thanks to the community who asked
  • Every day of seeding has been kept per player all along, so a giveaway can also count days that are already past
Name filter: two rules, two answers
  • Settings → Name filter → On a protected tag: tags can now do something other than blocked words. A slur is a reason to kick; someone wearing your tag is usually a person to talk to, so you can kick on words and only tell your admins on tags — or the other way round
  • Left on “Same as On a match”, nothing changes for anyone who was happy with one setting for both. Thanks to the community who asked for it
  • Players now hear the tag message even when nothing else follows. It used to go out only when the setting was Kick, so a community that only wanted to be told about it had no way to reach the player at all — and most people wearing a tag picked it up somewhere without knowing whose it is. With a kick behind it the message keeps its countdown; without one it is a plain invitation to your Discord
  • Turning tags down to alerts while somebody is already in their take-it-off time now calls the kick off instead of going through with it
Switch the shop off if you do not sell anything
  • Shop tab → “Use the shop”: off, the shop leaves your Discord. /shop answers that you do not use it instead of inviting you to set one up, and a posted shop panel is taken down
  • The top seeders board drops the seed points and the line that points at /shop. Without a shop those points buy nothing, so the board was advertising a feature the community does not run. Seeding time, streaks, whitelist rewards and the board itself are untouched — and the same goes for the points line in /stats
  • On by default, so nothing changes for anyone selling. Thanks to the community who asked for it
Admins can hand back rights they never wanted
  • Settings → Roles & permissions → “Admins follow these roles too”: Discord admins and the owner of the Discord normally have every right there is, including the silent actions — a kick or ban nobody in game sees. If you run your own community, that means holding rights you never chose and cannot tick away
  • Switched on, an admin gets exactly what their roles grant, the same as everyone else. The dashboard, the settings and the Warcon connection always stay with them, so this cannot lock anybody out of their own Discord — that was the reason admins had everything in the first place
  • Off by default, so nothing changes unless you want it to. Thanks to the community who pointed out that owning the Discord should not force the silent rights on you
Fixes
  • The Buy button in the shop failed with an error whenever the product was a monthly one: Stripe's payment address had grown longer than a Discord button may hold, so the bot could not hand it over. The button now carries a short address of ours that forwards to the same Stripe page — and it works the same for one-off purchases and donations. Thanks to the community who reported it
  • A payment link that has been paid, or is more than a day old, now lands on the community's shop page instead of a Stripe error page
  • Pressing More on a leaderboard failed with an error: on the second page the Back button ended up with the same name as the button for the ranking you were looking at, and Discord will not take a message with the same button twice. It had been quietly breaking for anyone who paged past the top ten
  • Map votes announced one map and the server loaded another. The winner is placed in the rotation right after the round that is running, but many servers leave that position out of their rotation reply — the bot then fell back to slot 1 of, in one case, 74, where it would not come up for hours. The position is now taken from the live status instead, which does report it. If a server reports it nowhere, the bot says so plainly instead of claiming the map was set. Thanks to the community who reported it
  • The check that is supposed to catch exactly that compared the theatre, not the map — and “Europe” matches whether the server plays Ozeti or Zestafona. It compares the real map now
  • While the game's browser stays empty, wardogsbot.com/servers/all now falls back to the servers we are connected to ourselves — around 80 of them with over 1,400 players, live from our own minute-by-minute reading. It says plainly that it is not the full world and has no regions, and it steps aside the moment the game answers again
  • The server list stopped filling at 13:14 today. This morning's game update (platform 2026.2.2) retired the call every site uses to read the browser — it answers “Invalid rpc name” now — so wardogsbot.com/servers/all was stuck on its last good sweep. It asks the way the new backend wants it again, and it waits longer between regions: the browser started rate-limiting at the pace we used before
  • /players only let you pick from the first team. A Discord menu holds 25 entries, the list is sorted by team, so the 25 were all Lonestar and the other two teams could not be selected at all. Each team has its own menu now — on a 66-player server everybody is reachable. If a single team is too full even for its own menu, the card says how many are missing and that /lookup, /warn, /kick and /ban find them by name. Thanks to the community who reported it
v0.1523 September 2026Months and years of your server instead of one month — whether players come back, how hard it is to get going, what a restart costs — plus far fewer false alarms on suspicious players, and a live server card for your own website
Find a player who left days ago
  • Players tab → Find anyone who has played here: searches every name a player has ever used on your servers, not just the one they have now. The live list only knows who is on right now, which is no help the day after somebody griefed and renamed
  • Each hit shows the name that matched, the SteamID ready to copy into a ban, when they were last seen, and their other names on request. Thanks to the community who ran into the gap
Seeding rewards only for people who came to seed
  • The evening runs out, the server drops to a handful of players, and the ones still sitting there were being paid in seeding time and whitelist days for doing nothing. Now only players who joined after the server went quiet earn anything — the people who actually turned up to fix it
  • And Settings → Seeding → Quiet for at least: how long the server has to have been quiet before a seed call goes out at all. A server that was full all evening cannot be seeded back up at midnight — the people who would answer just went to bed. Set 120 minutes and the call holds until the next day instead of firing into an empty night. 0 keeps calling straight away
  • Settings → Seeding → Only those who turn up, on by default. Five minutes of grace so the first player of a climb is not punished by a few seconds. Thanks to the community who would not let this one go
Give the bot a character
  • Settings → Bot character: give the bot a name and a few lines about how it talks, and it answers when somebody @mentions it in your Discord. Banter, not support — the documentation assistant is separate
  • You bring your own OpenAI key, so the answers are billed to you and nobody else pays for your fun. It is stored encrypted, never shown again and used for nothing else
  • Roasting has three settings, from friendly to roast them. At every setting it may only go after how somebody plays — appearance, background, family and everything else about a person are off limits, and it says it is a bot when asked
  • Limits on your own bill: a wait between answers per person and a ceiling per day. Anybody can run /leavemealone and it will not answer them again
The long view: months and years, not just a month
  • History → The long view: 30 days, 90 days, a year, or any two dates you pick. Average and peak players, unique players, player hours, sessions and the average session, each next to the same stretch before it so you see up or down
  • Players who came back, right next to unique players: how many joined three separate times or more in the stretch you are looking at. A map change is not a visit, so that is three evenings, not three rounds. Thanks to the community whose idea it was
  • How full the server actually gets: fill rate, how much of the time it was empty, and how much of the time it was at least a quarter, half, three quarters or completely full
  • A bar per day with the peak on top, the week as a heatmap of your busy hours, and a table with a row per day
  • Do they come back? Of everyone who turned up for the first time, how many were still playing a day, a week, a month or three months later — plus new faces, regulars, players won back after a month away, and the ones who drifted off. A table per week of arrivals shows whether it is getting better or worse
  • How hard your server is to get going: how often it ran empty, how long it lay quiet, how many starts actually filled it and how many died out, and how long the climb to 5, 10 and a full server usually takes — plus the hour of day most starts work, and the hour most of them die
  • What a restart costs: how many players were on, how far it dropped, and whether the server got them back within 90 minutes — per restart and as a typical figure
  • What stands out: a few plain sentences about what changed against the stretch before — busier or quieter, more or fewer new faces, people staying longer or leaving sooner, sitting empty, being full, hard to seed, or newcomers who never come back. Each one names the numbers it comes from
  • The last 30 days stay free for everyone, with the tiles, the fill rate, the day bars and the heatmap. Longer stretches, free date ranges, retention, seeding effort, restart costs and the findings are part of the 5 € branding subscription — which now buys a good deal more than a name and a picture. The numbers are recorded for every community either way, so a subscription later shows the whole history, not just what follows it
  • The minute-by-minute readings are still only kept for a month; every hour and day is now summarised and kept, so the history stops disappearing. Whatever the bot has watched so far is already in there
Fewer false alarms on suspicious players
  • Settings → Reports & suspicion → Only with a Steam signal: a great round is only reported when Steam adds something to it — a VAC or game ban in the last year, or an account under 30 days old. A genuinely good player on a clean old account stops being reported, which is what most false alarms were. Off by default
  • The Steam lines now show on the performance card itself, so you can see at a glance whether a 30-0 comes from an account with a ban, one made last week, or neither
  • New signal: fewer than 10 Steam friends, listed beside a ban or a fresh account. Never a reason on its own — a private profile hides the count, and not knowing is not the same as nothing. Thanks to the community whose idea it was
A live server card for your own website
  • Every server page on wardogsbot.com now hands out an iframe you can paste into your community site: online or not, players against slots, map, mode, region and where the server ranks in its region this week
  • It refreshes by itself once a minute, brings its own dark styling so it sits on any background, and the whole card links back to the full server page
  • No key, no login, no account — the same public data the page shows. There is a preview and a copy button on the server page. Thanks to the community who reported it.tech] for the idea
Smaller things
  • A guide for the shop: wardogsbot.com/guides/shop walks through connecting Stripe, what Stripe asks for, fees and payouts, refunds, and selling for seed points without Stripe at all
  • When selling is not switched on for the bot yet, the dashboard says so in plain words instead of passing on Stripe's own message, which told community owners to visit their own Stripe dashboard and answer a questionnaire that is not theirs. Thanks to the community who ran into it
v0.1422 September 2026The bot and the website now speak Turkish and Spanish, players can no longer hide behind a new name, your clan tag stays yours, and 50 vs 50 leaves a seeding server alone
Now in Spanish
  • The bot speaks Spanish: Settings → Channels → Bot language. Status panel, recaps, leaderboards, kill feed, seed calls, map votes, alerts, reports, shop and every reply switch at once
  • Members whose Discord is set to Spanish (Spain or Latin America) see the slash command descriptions in Spanish, on every Discord
  • wardogsbot.com, the dashboard, the docs, the war room and the mortar calculator in Spanish: pick the flag at the top, or open wardogsbot.com/es. Thanks to the community who asked
Now in Turkish
  • The bot speaks Turkish: Settings → Channels → Bot language. Status panel, recaps, leaderboards, kill feed, seed calls, map votes, alerts, reports, shop and every reply switch at once
  • Members whose Discord is set to Turkish see the slash command descriptions in Turkish, on every Discord
  • wardogsbot.com, the dashboard, the docs, the war room and the mortar calculator in Turkish: pick the flag at the top, or open wardogsbot.com/tr. Turkish browsers get Turkish on their own
Find players by any name they used
  • Every name a player has on your server is kept with their SteamID — including a rename in the middle of a match, which slipped through before
  • The player pickers in /warn, /kick, /ban and /lookup search every one of those names: typing an old name finds the player under the new one, shown as “new name · was old name”
  • The live player list in the dashboard shows “joined as …” under anyone who renamed since joining, and a player's file lists every name they used
  • Optional: Settings → Name filter → Name changes posts a line to your moderation alerts whenever someone renames while playing
Your clan tag stays yours
  • Someone wearing your protected tag without being on the allow list is now told in game what is wrong and gets time to take it off or come to your Discord — 5 minutes by default, and you write the message
  • The alert card shows the countdown and keeps its buttons. When the time is up: tag off, nothing happens; still wearing it, kicked
  • “Ignore” on a tag alert now puts the SteamID on the allow list for good, so the same player is not reported again tomorrow
  • Too many members to list every SteamID? Settings → Name filter → Allowed by Discord role: anyone holding one of those roles on your Discord, with Steam linked via /link, may wear the tag. Getting the role during the warning time stops the kick. Thanks to the community whose idea it was
Talk to whoever filed a report or appeal
  • Reports and appeals in the dashboard now have comments: ask for the clip, say you are on it, explain the decision
  • Tick “Also send it as a DM” and the bot delivers the comment to the player who filed it. If their DMs are closed, the dashboard says so instead of pretending it arrived. Thanks to the community whose idea it was
50 vs 50 on a seeding server
  • Settings → 50 vs 50 → Only from this many players: below it the team balancer stays out of it, instead of pushing the same handful of people back and forth. 20 by default
Smaller things
  • The rotation builder reads the current game build again: every entry showed as invalid with an “Unknown” game mode and an empty lighting, and Infantry Only or Hardcore could not be added. Thanks to the community who reported it
  • The leaderboard panel is one message again: the other rankings sit as buttons under it, and pressing one shows that board to that person alone, ten places at a time. Thanks to the communities who worked it out with us in the support Discord
  • Kill feed through a relay: Settings → Kill feed → URL & token shows the address and token for a server, to paste into a relay such as BattleMetrics or into the config yourself — the bot then needs no Config & settings right. Thanks to the community whose idea it was
  • The public statistics page works again — faction win rates, busy hours and all
  • The pages players open from Discord now follow your language too: reporting a player, appealing a ban, linking Steam, the community leaderboard, match pages, the live scoreboard, the shop, the WARDOGS account page and the setup guides were still in English in German, Turkish and Spanish
  • The map vote reminder about a missing score limit is posted once an hour, not again after every restart
  • Seeding only counts when the server is really being built up. A full match running out drops below the seeding threshold too, and that was counted as seeding: seed calls went out and players earned whitelist days for sitting out the end of prime time. Now nothing counts until the server has been down to Settings → Seeding → Seeding starts from (half the threshold by default), and from there until it is full again. Thanks to the community who caught it
  • A player who is already on the whitelist for good is no longer told in game that they now have it for a few days — their whitelist was never shortened, but the message said otherwise
  • Settings → Kill feed → Alert from: only report a player once they have this many teamkills in the same match, so the alert channel is about the repeat offenders instead of every stray shot. Every server can have its own number, and a kick is always reported. Thanks to the community whose idea it was
  • No more “Server restarted” alerts for a server that did not restart. On a direct connection the start time is worked out from the uptime, so it read a few seconds apart on every poll — enough to look like a restart at the end of a round. Only a jump of minutes on a server that reports itself as freshly started counts now, which also repairs the restart count on the History tab. Thanks to the community who reported it
v0.1321 September 2026Your own name and picture on the bot, a board for the people who seed, "the server is live" when it worked, readable weapon names in the kill feed, and server names that follow the game
Your own name and picture
  • Dashboard → Branding: everything the bot posts by itself — status panel, kill feed, match recaps, seed calls, alerts — goes out under your community's name and picture instead of the bot's. 5 € a month, cancel any time
  • Discord ties a bot's picture to the bot itself, not to a single server, so replies to slash commands keep the bot's picture. Its nickname in your Discord changes with your name
  • The bot needs the "Manage Webhooks" right for it. If it is missing, the dashboard offers a one-click link that adds it; until then everything is posted under the bot's own name as before
  • Every card keeps a small "Made with wardogsbot.com" line
Kill feed reads like a kill feed
  • Weapons and vehicles now show their real names: AT mine instead of ID.Item.ATMine, Vanguard CIWS instead of a config path, M67 Grenade, Combat Bow, MH-6 and SPH-2 instead of internal codes
  • Where the game only knows a code, the real name is filled in: GGX 18, PP-19 Vityaz, AMR 50, PKM, 9K333 Verba, BMR-308, SVD, Z20 Lakota, Stingray and more
  • All the kills already recorded were renamed too, so player profiles, /stats and the leaderboards read the same way
Seeding
  • Settings → “The server is live” (ST-43): when the seeding worked and the server reaches your threshold, the bot says so and pings a role of its own — the people who want to play are not the same ones who answer seed calls
  • Settings → Top seeders board (ST-44): a message the bot keeps up to date with the people who seed the most — hours, days in a row and the points they can spend in your shop. Last 30 days or all time, 3 to 25 places
  • Old seed calls take themselves down: as soon as a newer call follows, or the server fills up, the previous one goes, so the channel shows the current state instead of a wall of calls. Can be switched off in ST-03
  • Seed calls now carry the join code, so people can actually get on the server (only if your status panel shows it)
Smaller things
  • A server renamed in game now shows its new name everywhere — panels, map votes and recaps — also on direct connections
  • The ban list panel no longer leaves an old message behind when you move it to another channel
  • A player whose teamkills cross the limit in one batch is kicked once, not three times
  • Leaderboard panel: the number of places can now really be set from 3 to 50 — anything above 20 was quietly cut back to 20 before
  • Channels the bot posts in have to belong to your own Discord now, so nothing can be pointed at another community’s channel by mistake
  • The whitelist keeps working even if the game drops the reserved-slot route it no longer lists: the bot then writes the whitelist into the server config instead
v0.1219 September 2026The bot and website now speak German, anti-cheat on the kill feed, a real kill feed with headshot rate and teamkill detection, community shops with Stripe, seeding that pays off, a one-step switch to a direct connection, and locked teams for 50 vs 50
Best time to seed
  • Dashboard → Seeding → Best time to seed: the week at a glance, how busy every hour usually is, and — the useful part — how many seeders it took at that hour for the server to fill up
  • So you can see that six players are enough at 19:00 while fifteen change nothing at 03:00. Built from your own server's history, so it needs a week or two before it says much
The ban list in a channel
  • Settings → Ban list panel: the bot keeps a message with every open ban in the channel you pick — name, SteamID, reason and how long it runs — for looking one up while an appeal is running. Thanks to the community whose idea it was
  • It rewrites itself only when a ban is added, lifted or changed, and SteamIDs can be switched off for a channel everyone can read
Now in German
  • The bot speaks German: Settings → Channels → Bot language. Status panel, recaps, leaderboards, kill feed, seed calls, map votes, alerts, reports, shop and every reply switch at once
  • The bot's own in-game messages switch too, and words it fills into your templates (like "banned" or "3 days") come out in German. Templates you wrote yourself stay as they are
  • Members whose Discord is set to German see the slash command descriptions in German, on every Discord
  • wardogsbot.com, the dashboard, the docs, the war room and the mortar calculator in German: pick the flag at the top, or open wardogsbot.com/de. German browsers get German on their own
Anti-cheat on the kill feed
  • New checks on every gun kill: a headshot rate far above what those weapons give everyone else (snipers are compared with snipers), kills beyond a gun's range, and many long-range kills within seconds
  • Artillery, AA, vehicles, mines and grenades are left out, and a full helicopter going down at once is not flagged
  • A brand-new Steam account or a recent VAC or game ban is listed on the alert and gets flagged sooner
  • One alert per player and match with every sign in it, and the usual Kick, Ban, Open report and Legit buttons. Settings → Suspicious performance to tune or switch off each check
A real kill feed
  • Your server now reports every kill to the bot as it happens: who killed whom, with which weapon, from how far and whether it was a headshot
  • Headshot rate, longest kill and favourite weapon in /stats and on player profiles, exact instead of estimated
  • Teamkills are caught the moment they happen: alert your staff, warn the player in game or kick after a number you set
  • Settings → Kill feed: post every kill (or only the notable ones) to a channel. The bot sets the feed up on your server by itself; if it goes to another tool, one click switches it
  • Several servers? Give each its own kill feed channel, its own kill filter and its own teamkill rules under Settings → Per server
  • New Kill feed tab in the dashboard: the latest kills live, headshot rate, longest kill, top players and the most used weapons, for 24 hours, 7 or 30 days
  • Weapons show by their real name (Galil, FN FAL, Scout Rifle and more), not the game's internal codes
Switch to a direct connection
  • Everything gets more accurate with a direct connection and our kill feed: stats from every single kill instead of samples, faster updates and no second service in between
  • Settings → Connection: move from Warcon to a direct connection in one step. The RCON port is read from your config, you add the IP and password once, and every server is checked before anything changes
  • Your matches, stats, history and settings all stay, and the dashboard warns you when an RCON password is easy to guess
Your own shop
  • Dashboard → Shop: connect your own Stripe account and the money goes straight to you. Card, Apple Pay, Google Pay and more
  • Sell a whitelist slot for a number of days, a Discord role, a monthly membership that renews until cancelled, or take donations with a smallest amount
  • Every community gets a shop page to share, and /shop shows what you sell right in Discord
  • Post your own shop panel in Discord: your title, text, colour and banner, with a Buy button on every product. A click gives that player a personal payment link only they can see, and the panel updates itself when you change your products
Seed points
  • Every minute of seeding earns a seed point. Give any slot or role in your shop a points price and players redeem it with one click, in Discord or on your shop page
  • Works without Stripe: a community can run a points-only shop. Players see their points in /stats and on the shop page
  • Set it up under Dashboard → Settings → Seeding extras; every part can be switched on by itself
50 vs 50: locked teams and fairer balancing
  • Lock teams for the match: players keep the team they started on. Whoever changes sides is told to go back and, after the grace period, is moved back
  • Balancing now moves those who earned no cash yet and whoever joined last first. Players who have been on the team a while and earned cash, supply runners included, are never moved. Thanks to the community whose idea it was
  • While 50 vs 50 is on, the bot switches off the game's own Lock overfilled teams (it can lock players out with one team closed) and puts it back afterwards. It applies from the next match. Thanks to the community who reported it
Remove players with a recent Steam ban
  • Settings → Moderation alerts: kick or ban anyone whose most recent VAC or game ban is younger than the limit you set (1 year by default), the moment they join. VAC, game bans or both; trusted players can be exempted, and the kick message tells them why
More reasons to seed
  • Early seeder bonus: while only a few are on, seeding counts double towards the reward and the points
  • Seed call bonus: join within 10 minutes of a seed call and get extra minutes towards the reward
  • Streaks: seed on several days in a row for extra whitelist days
  • Seeder of the month: the top three are announced on the 1st and the winner wears a role for a month
Seeding across the network
  • A seeder rank over every community: Bronze, Silver, Gold and Elite, shown in /stats, on player profiles and on the new Top seeders page
  • Help another community on the network seed call and they whitelist you for a day as thanks, while the seed points count at home
  • New /seedernetwork: how the network works, how many hours your community gave and got, and the most helpful communities
  • Fair for everyone: a community whose network channel is private (its players never see the others' calls) no longer sends its own calls out
Advertise your community
  • New: wardogsbot.com/advertise. Two Sponsored spots at the top of the server list, with your banner and a button into your Discord, auctioned every week
  • Top up credit, bid per 100 impressions and only pay for players who really saw your ad. When one sponsor's credit runs out, the next bid moves up
  • Set a spending limit per week, e.g. $1 per 100 impressions and stop at $50. The limit can be as high as your credit and changed at any time, also while your ad runs
Leaderboards and score bars
  • Several leaderboards in one channel: next to the main board, post up to five more (Kills, Profit, K/D, ...) that each keep themselves up to date. Settings → Recaps & leaderboard → Also post
  • Score bars now fill towards the score that wins the match, so a team at 50 of 100 shows half full. KOTH learns that target from your finished matches. Thanks to the community who asked for it
Team switch cooldown
  • Settings → Team switch cooldown: players can pick a team and switch once, but switching again before the cooldown runs out moves them back, with a whisper saying how long to wait. Staff moves never count. Thanks to the community whose idea it was
Good players stay unflagged
  • Automatic K/D and kill-rate alerts: press "Legit, never flag again" on an alert, or list SteamIDs under Settings → Moderation alerts, and that player is never flagged automatically again. Everyone else still is. Thanks to the community who reported it
Bans that wait
  • Banning someone who never joined your server no longer fails: the ban waits and hits the moment they join, a timed one only while it still runs
Status bot profile text
  • Settings → Status bots: give your status bot a bio people see when they click it, with your website, a clickable #channel and your join code
  • {joincode} fills in the code players search in game and updates by itself after a server restart
A cleaner server browser
  • wardogsbot.com/servers got a new look: live numbers at the top, calmer cards with the player count up front, tidy server names and one row of buttons
Handed out by itself
  • The slot and role arrive the moment Stripe confirms the payment, move on with every monthly payment and go when the time runs out
  • A refund or chargeback takes them back at once; refund one-off purchases right in the Shop tab
  • A bought slot is its own whitelist entry: seeding rewards never stretch it and a refund never touches seeding time. Buying again adds the days on top
Fair and clear
  • The bot keeps 5 % of each payment as the standard rate, Stripe its usual fee. Everything else is yours. Running a big community? Ask us about a lower rate
  • Your sales in one list: buyer, SteamID, amount, status and until when it runs
Support the bot
  • WarDogs Server Commands stays free. If it helps your community, you can now support it at the website under Support the bot
Fixes
  • Fixed: a new KOTH round on the same map was often not noticed, so rounds ran together for hours and the leaderboard, match count and recaps did not move. Rounds are now also recognised by a new zone layout or mode and by scores falling back, and a single odd reading never splits a match
v0.11.119 September 2026Help for everyone: a docs site that explains every feature step by step, and /help in Discord with the same answers
Help & docs
  • New docs site: how to connect your server, set up channels and staff, schedules, map votes, seeding, whitelist, stats and more, step by step, with search
  • Every command in one list, and a Start here section for new owners
/help in Discord
  • /help shows the same help inside Discord: pick an area and a topic from the menu, or type what you need, e.g. /help topic: schedule announcement
  • Only you see it; share: posts it in the channel for someone who asked. Works in DMs and as a user app too
v0.1118 September 2026A weekly ranking of every WARDOGS community server and a page for each, seed calls that travel across the network, your progress week by week, and how your servers compare in the weekly report
Server ranking
  • Servers → Ranking: every WARDOGS community server ranked by how many players it had on average, today, this week or this month, per region. Offline hours count as empty, so busy all day beats full now and then
  • Communities on the bot show their name in it; the game itself sends none, so add the bot and set a banner of your own to be named
A page for every server
  • Every community server has its own page: players per hour over the week, its busiest hour, which maps ran and for how long, the latest map changes and its place in the region
  • Click any server in the ranking or in Servers → Every server
Seed calls across the network
  • Settings → Seed calls from the network: when another community calls for seeders, the call shows up in your channel too, with how many are missing, their seeding reward and a button to their Discord
  • Give and take: only communities that switch it on send their own seed calls to the others. Pick a region and a role to ping; each server comes at most once every 45 minutes
Your progress, week by week
  • My WARDOGS now shows what moved in the last seven days: levels and XP per role, cash earned and new unlocks
  • Your public profile says it in one line, e.g. "This week: +3 pilot levels"
Weekly report: how you compare
  • The owners' weekly report now says where each server stands among the community servers of its region, e.g. #12 of 140, next to the middle server
  • And which maps emptied the server that week: the players lost between the start and the end of a round
Hall of Shame
  • The Hall of Shame opens with the message it stands for: We hate cheaters
Fixes
  • Fixed: the leaderboard panel only redrew when the top ten changed, so a quiet top ten said "Updated 21 hours ago" although the numbers were current. It now refreshes on its schedule either way
  • Fixed: pale white blocks next to the top three on the leaderboard panel; the medals mark the podium on their own now
v0.1018 September 2026Your WARDOGS account on the bot: roles from your role levels and cash, your progression on your profile — plus every WARDOGS server in all 13 regions, live network numbers, and servers without RCON
Your WARDOGS account
  • Connect your own WARDOGS account under My WARDOGS on the website, with Sign in with Steam. The bot reads your cash, gold bars, the level of every role and what you have unlocked, straight from the game, and again every hour
  • Automatic roles can now use them: @Pilot from pilot level 20, @Rich from $100,000, a role for the highest role level. Settings → Automatic roles
  • Your public profile gets an "In WARDOGS" section with your role levels, cash and unlocks, if you choose to show it
  • The game only ever gives out the profile of whoever signed in, so nobody can be read without their own sign-in. Hide it from your profile or disconnect at any time; disconnect deletes everything read
Every WARDOGS server
  • Every server in all 13 regions, live from the game's own server browser: players, map, mode, modifiers, time of day and banner, filtered by region or community. Servers → Every server
  • Servers of communities on the bot show their name, which the game itself does not send. They are recognised by their banner, so set one in your config (ServerImageURL) to be named
A new menu bar on the website
  • Servers now opens to Communities and Every server, and My WARDOGS is right in the bar, so connecting your account is one click from every page
  • The bar uses the full width of big screens, is a little taller, and the Hall of Shame stands out in red
Live network statistics
  • The statistics page opens with all of WARDOGS right now: players online, servers, how many play on community servers, a week of players and the busiest regions, maps and modes
Setup without RCON
  • No RCON at your host? Add your server by the banner in its config (ServerImageURL): status panel, voice channel name and seed calls work from the game's server browser. Scores, recaps and actions still need RCON or the agent
Fixes
  • Fixed: after signing in with Discord from a page on the site, you now land back on that page instead of the dashboard
  • The game update alarm also learns a new game build from the game's server browser the moment it is live
v0.9.118 September 2026Map votes rebuilt so the map you voted for is the map you play, a new look for the war room, a fairer ping guard with the exact ping in the log, and no more false alarms when a round ends
Map vote: the winner is what gets played
  • The winning map now goes into the exact slot the server itself plays next. Before, it could land one slot off, so the server kept its own next map and the vote looked thrown away
  • A map already in the rotation is moved, never added again: votes no longer make the rotation grow (one had gone from 66 to 73 entries)
  • After every vote the bot reads the rotation back and checks that the server really names the winner as next, instead of just claiming it
  • The time of day players voted for is now written onto the map entry too; before, the entry quietly kept its own sky
  • The map that is being played is no longer one of the options
  • One vote per round, tied to the round itself: a bot restart no longer opens a second vote, and King of the Hill on the same map again gets its own vote
  • A vote still open when the round ends is closed at the map change, and the card says the winner counts for the round after instead of looking ignored
  • Every vote stays open at least 30 seconds, and the dashboard warns when "Close the vote at" sits so close to the end (96 % and up) that the round can finish first. 85–95 % is safe
  • The bot says so when a rotation is set to Random, because the server then picks freely whatever the order
War room: a new look
  • The map now runs edge to edge. Tools sit in one dock at the bottom, markers open above it, and the squad and requests float in one panel on the right that folds away
  • Lead buttons (clear the board, room settings, watch a game server, saved plans, briefing) sit together at the top right; room settings open as a card instead of a bar
  • The control zone is a dashed ring with its name underneath, towers are numbered diamonds, and requests say who is bringing what
  • The same look inside the Discord Activity
Ping guard: fairer, and clear in the log
  • Nobody is judged in their first 90 seconds on the server, while their ping is still up from loading in
  • One spike is not enough: the ping has to stay above the limit for 30 seconds before the warning, and the grace period starts with the warning
  • The warning stays a whisper to that one player (the game shows it in the middle of their screen)
  • A ping kick in the action log shows the exact ping at the kick, the highest ping and how long it stayed above the limit. Every kick in the log now carries its reason too
Fixes
  • Fixed: the Players leaving alert went off at the end of a round, because the server empties while it still reports the old map. A drop now has to last four minutes with no new map or round in between
  • Fixed: the list of skies under Settings → Map vote always said the server had not sent one
  • Fixed: a vote could be closed twice at once and set the next map twice, and one that failed while closing blocked every later vote on that server
  • Fixed: map votes in a forum post stopped updating once Discord archived the post
  • Fixed: the dashboard now shows the time-of-day question of a vote and what became of its winner
v0.918 September 2026Connect without Warcon (RCON or the WarDogs agent), an API with webhooks, forum channels instead of twenty channels, a server config editor, status bots, a live scoreboard in Discord, /wardogs anywhere, server analytics, Warcon key checks, ban lists, player files and profiles, events, and many fixes
Without Warcon: connect directly
  • Communities without Warcon can connect their servers straight to the bot: address with the RCON port and the RCON password, checked with the server before it is saved. Setup → Directly with RCON
  • Everything works the same way: status panel, moderation, bans, whitelist, map control, rotation, recaps and stats
  • Community ban list and whitelist without Warcon: the bot writes them into every server's config, so bans also work for players who never joined, and entries you added by hand stay
  • Player marks (watchlist, first visit, Steam risk) come from the bot itself on direct servers
  • The password is stored encrypted and only sent to that server. RCON has to listen on 0.0.0.0 and be reachable from the internet
WarDogs agent: no open port, no shared password
  • For servers you run yourself: a small program next to the game server connects out to us and carries out what the bot asks. RCON can stay on 127.0.0.1 and the RCON password never leaves your machine
  • Start it with one Docker or Node.js command from the dashboard; its servers link themselves. One agent serves up to ten game servers. Guide at wardogsbot.com/guides/agent
API and webhooks
  • Setup → API & webhooks: keys with scopes (read, moderate, control, config) for your website, your own bot or scripts. Servers, live players, matches, leaderboards, player stats, bans, history, every action and the server config
  • Signed webhooks for staff actions, finished matches and servers going down or up
  • Docs and examples at wardogsbot.com/developers, OpenAPI description included
Forum channels, and colour where it was grey
  • Every channel picker now takes a forum channel too. The bot keeps one post per purpose inside it — recaps, status, log, alerts, votes — so a community that splits everything per server no longer needs twenty channels
  • Match recaps, the live scoreboard, /server and the leaderboard now draw their bars in each team's colour with its crest, and the top three are gold, silver and bronze instead of grey blocks
  • A match recap now opens with the picture of the map it was played on, under the sky it was played in, and the grey boxes and divider lines are gone
Milestone messages
  • Settings → Milestone messages: congratulate players in game when they reach a mark you set — ten kills in the running match, an hour on your servers, their 1000th kill in your community
  • Whispered to that player or announced to everyone, with your own wording and placeholders for name, number, playtime and server. Each mark is sent once, and veterans who were long past it are not congratulated after the fact
Map vote and high ping
  • A map vote nobody voted on now draws one of the options at random instead of leaving it to the rotation, which on a fixed rotation kept repeating the same map. Never the map running right now, and the server is told
  • The high-ping warning and kick reason are editable under In-game messages, and the ping limit, grace period and exemptions can now differ per server
Old Steam bans
  • Settings → Alerts: ignore Steam bans older than 1, 2, 3, 5 or 10 years. A VAC ban from a decade ago then raises no risk and triggers no alert, while a fresh one still does
Lag warning, config history and rotation analysis
  • Your staff hear it when the game server cannot keep up, before players start complaining about lag. The History tab shows the server's current queue (direct and agent connections)
  • Every version of the server config is kept, whoever changed it: see the changed lines, and put an older version back with one click. A change made at your host is posted to your health channel
  • History → Which maps hold players: how many players each map and mode has at the start of a match and at the end, so a rotation entry that empties the server is easy to spot
Cash and zone payouts
  • Overview shows how the cash on the server grew during the running match, in total and per team
  • Next to it: what one score tick pays the team holding the control zone and the hot zone, at the tick your server runs right now
Server config editor
  • New tab Setup → Server config: every setting the game allows as a form (server name, password, slots, score period and more), with a note on when each change takes effect
  • Owners who know the file can edit the whole document, check it with the server first and then apply it
  • Passwords never reach the browser, and the RCON section is locked so nobody cuts the bot off by accident. Works through Warcon and on direct connections
  • After saving you are told what took effect now, what waits for the next match or a restart, and which values your host overrides elsewhere. Servers without an editable config file say so instead of showing an error
Game update alarm
  • When WARDOGS gets a new build and your server still runs the old one, your staff are told right away, and again once the server has caught up
  • The History tab shows each server's game build and whether it is up to date. Settings → Server health turns the messages off
Status bots
  • Your own bot can now show your servers in its Discord status, e.g. "WDN 1 12/100 · Ozeti · WDN 2 offline". Settings → Status bots
  • Paste the bot token, press Add to server, done: the dashboard builds the invite link for your server, with no permissions
  • One bot for all servers or one per server (up to three), short names per server, your own online and offline text; the dot turns green, yellow or red
  • This bot keeps doing everything else. The token is stored encrypted and only used to set the status
Live scoreboard in Discord
  • A new panel shows every team and every player with kills and deaths, edited while the match runs. Settings → Live scoreboard
  • One message per server; with several servers each can post into its own channel. A full 100-player server fits
  • The all-time leaderboard panel (Settings → Leaderboard panel) keeps working next to it
/wardogs, anywhere
  • Add the bot to your own Discord account (Add to Discord → Add to my account) and use /wardogs in any server or DM
  • /wardogs network shows players registered, communities, servers, players online and the busiest servers with their Server IDs
  • /wardogs community posts a card for one community from the public server list: its servers, Server IDs to search in game, invite and leaderboard
Server analytics
  • The History tab now shows 24 hours, 7 days or 30 days: players online now, unique players, peak, average, uptime and finished matches
  • Players online as an average per 5 minutes (per 30 minutes or 2 hours for longer windows), with outages marked in red, and as a table
  • Time per map and average players by hour of the day
Key check and ban lists
  • The setup guide now checks your Warcon API key: whether it still works, still sees every linked server, has the rights the bot uses (including Org lists) and can open your organisation's ban list
  • Players → Ban lists shows every ban Warcon and the game hold, not only the bot's: the organisation ban list with where it has been applied, and each server's own list, including bans made in game
  • Filter by name, SteamID or reason, and unban a player everywhere with one button
Bans for players who never joined
  • A player your server has never seen can be banned too, from reports, network alerts and the dashboard: the ban goes on your Warcon organisation's ban list and keeps them out of every server in it. Needs the Org lists right on the key
  • Unbanning takes them off that list again
Server health
  • The History tab shows uptime for 24 hours and 7 days, outages, restarts and the average ping per hour
  • Staff are told when a server stays unreachable (after 10 minutes by default) and again when it is back, and when it restarts with players on
  • Optional alerts for high ping and for players leaving in a rush without a map change. Settings → Server health
Weekly owner report
  • Monday morning: players, new and returning faces, hours played, average and peak players, matches and seeding, each next to the week before
  • Plus the busiest day and hour, the most played map, outages per server and anything in the setup that stopped working. Settings → Weekly owner report
Setup check
  • The setup guide now also finds channels that were deleted or that the bot cannot post in, for every feature, and puts them at the top
  • New steps for the network alert and moderation alert channels
Early warning
  • A role can be pinged when a network-banned player joins
  • Optional: an alert when a risky Steam account joins (recent VAC or game ban, brand-new account), with a threshold. Settings → Moderation alerts
Squad finder, match cards and roles
  • /lfs posts a squad call with role, server and voice channel; others join with a button until the squad is full, and it closes itself. Settings → Squad finder
  • /lastmatch shares a picture of your last match: result, kills, deaths, K/D, cash and your place
  • Automatic roles can now be earned for hours played, matches won and events attended, can be announced in a channel, and /stats shows how far you are
Network statistics
  • wardogsbot.com/stats: players per day, the most played maps and modes, faction win rates, and when people play by region and weekday. Totals only
Mortar calculator with map and terrain
  • Click the mortar and the target on the Ozeti, Bakurani or Zestafona map, or type the grid coordinates; the rings show the weapon's reach
  • Height difference between mortar and target and a terrain profile of the ground in between, with offsets for rooftops and towers
  • Terrain and firing tables from Apollyon's open-source WARDOGS Artillery Calculator (MIT)
Steam checks
  • Player files show the Steam side: name and picture, account age, WARDOGS hours, VAC and game bans, and whether the profile is private
  • Warning signs such as a two-day-old account or a recent VAC ban appear next to the player in the live player list and in the alert when a player crosses the line
  • Public profiles show the Steam picture and hours in WARDOGS; bans are never shown there
War room: live server
  • A commander connects the war room to a game server (Server button): its map, control zone, mode, score and player count show in a bar above the board
  • With Follow on, the board switches to the server's map and zone by itself when a new match starts
  • Teams lists who plays on which side with kills and deaths, where the community shares player names
  • Any server listed in the public server browser can be watched; a war room opened in a voice channel also sees its own Discord's servers
War room plans and briefings
  • Commanders save the board as a plan (Plans) and load it again next match: map, zone and every mark come back in one go
  • In a Discord voice channel, plans can be shared with the whole Discord, so every squad channel can load them
  • Briefing turns what you see on the map into a picture with your orders, to download or post in Discord
  • From a voice channel it posts into that channel's chat; on the website, staff who may plan events pick any channel of their community
Events and scrims
  • Plan scrims and event nights in the new Events tab or with /event create (“fri 20:00”, “tomorrow 19:30”, a date, or “in 2h”)
  • The event is posted with Join, Maybe and Leave buttons, and a slot limit if you want one
  • Before it starts, everyone who joined is pinged and their linked Steam account is whitelisted until an hour after the end
  • Split teams deals the players into two teams of even K/D with one click
  • After the event, a recap shows who played, the matches and the scores. New right: Events. Settings → Events
Player profiles
  • Every player gets a public profile at wardogsbot.com/player: kills, K/D, matches, win rate and seeding across the whole network, network rank, favourite maps and factions, and the last ten matches
  • Badges from the record: Verified, Regular, Veteran, Seeder, Sharpshooter, Winner, Top 100 and Traveler
  • Sign in with Steam on the site (or be linked in any Discord) to own your profile: hide it, show your Discord name, or add a line about yourself
  • Names on the leaderboards open the profile, and /lookup and Player stats in Discord have a Public profile button
Player files
  • Player files in the dashboard: one page per player with warnings, kicks, bans, reports and every name they played under, as a single timeline
  • Staff notes on a player that only staff see, with their own Player notes right. Roles that could warn, kick or ban already have it
  • When the record crosses a line, for example 3 warnings in 7 days, the file suggests a ban and the moderation alert channel hears about it once
  • Search by any name the player ever used or by SteamID. The player popup, /warn and the Player case file app in Discord show the same hint
  • Watchlist: staff put a player on it with a reason, the live player list marks them, and the moderation alert channel is told when they come online
  • The file also shows time and kills per server, the latest visits with length, kills and cash, and the player's whitelist, with Whitelist and Watch buttons right on the page
  • Settings → Player files
Site
  • Player names in match pages, leaderboards, seeding, whitelist, bans, reports and alerts are links now: to the player file in the dashboard, to the public profile everywhere else
  • The Hall of Shame now has a “Why did it happen” part under every entry
  • The menu is sorted into Community, Tools and Bot, with the Hall of Shame and player profiles in it and a menu for phones
Fixes
  • Fixed: a Warcon key that was deleted sent you into a Discord login loop; the dashboard now says the key needs replacing
  • Fixed: in King of the Hill, a round on the same map as the one before was not seen as a new match, so no recap was posted and several rounds were counted as one. A new round is now recognised by the scores starting over
  • Fixed: banning a SteamID your server had never seen failed with "no player matching" (Ban here too, bans from reports, the dashboard). Such bans now go on your Warcon organisation's ban list and keep the player out of every server in it
  • Fixed: after a bot restart in the middle of a match, the kills of players who had reconnected could be counted twice
  • Fixed: Post or refresh the panel (leaderboard and live scoreboard) used the saved settings, so it failed when pressed before saving. It now posts what the form shows and saves it
  • Fixed: a live voice channel that was deleted kept causing warnings; the bot now stops renaming it and says so once in the log
  • Fixed: sort padding like a lone 0 in front of a server name is removed, and /wardogs cards leave out invite links and web addresses, which many servers block
  • Fixed: no match recap was posted for rounds longer than four hours. A KOTH round to 100 points can genuinely take that long on a busy server, so length alone no longer decides: a decided round gets its recap, only a server idling overnight is skipped
  • Fixed: a placeholder id of seventeen zeros, which many configs carry in the ban list, no longer shows up as a banned player
  • Fixed: weapons the game sends untranslated, e.g. vehicle guns, are now shown with a readable name
v0.816 September 2026War rooms, 50 vs 50 mode, a new Live tab, server history, one-off schedules and one leaderboard for the whole network
War rooms
  • A shared tactical map for your squad at /war-room: open a room, share the six-letter code, and everyone sees the same board live. No account needed; signed in with Discord, your name is filled in
  • Draw lines and arrows, mark zones, and place FOBs, troops, landing zones, danger, victory points, objectives, rally points and text, in team colours. Keys 1–6 pick a marker, V/P/A/M/Z/E the tools
  • Supplies: ask for ammo, medical, fuel, repair or transport from the panel or by right-clicking the map; someone claims it and marks it delivered. The Logistics tab shows them all
  • Plan on the real maps: pick Ozeti, Bakurani or Zestafona when you open a room, and the in-game map of the whole theatre lies under the board, with a sharp close-up of the fighting area
  • Pick the control zone too (Church, Farmland, River, Lumberyard, Small Factory, Water Treatment and the rest). The room opens framed on it, with the zone ringed, every tower numbered and the three team bases in their team colours
  • Every grid square carries its name (A1 to J10), readable at any zoom
  • Zoom in far enough to plan a single compound; marks, text and lines stay the same size on screen. Buttons bottom-right jump to the zone, show the whole map, or hide the zone, bases and towers. Move the map with the hand tool (V), the middle mouse button or by holding space
  • Commanders approve marks when marking is by request, start a new round to clear the board, switch map or zone, promote or remove members, and can put their own picture under the board instead
Live tab
  • A new top section: the map as a picture with its lighting, the mode in words (King of the Hill · Infantry only), players, match length and a card per team with its score against the limit
  • The scoreboard sits right on the Live tab: filter by team, sort any column, pause it so the rows stop moving while you pick someone
  • Cash this match, in total and per team
  • Override map: pick map, mode, modifications, lighting and zone together, then load it now or set it as next. Maps carry the names players know
History
  • A new History tab per server: players over time, busy hours of the day, the peak, and how many are on right now
  • Regulars ranked by time played, and recent sessions: who was on, on which team, for how long. A map change is not counted as leaving
  • Who did what on that server through the bot, and the game server’s own RCON log from every tool, with addresses shortened
Schedules
  • One-off schedules next to repeating ones: pick a date and time, and it runs once and switches itself off
  • Every firing is recorded with what each server answered, so a failed 3 a.m. restart is visible in the morning; a one-off missed while the bot was down does not run late
  • Next run shown for every schedule, a preview before you save, a Run now button, and map changes that can bring their own lighting
Welcome on join
  • Players are greeted in game when they join, with their kills, deaths, K/D and matches in your community. First-timers get their own line, with your Discord invite if you set one
  • Chat whisper by default, or the big announcement if you want everyone to see it
  • It waits until the player has picked a team, so the message is not lost in the menu, and it does not greet again after a map change, a quick reconnect, or when everyone comes back after a server or bot restart
  • The bot now counts time played per player, available as {playtime} in the message
  • Off by default: turn it on under Settings → Welcome on join. It can also greet only first-time players
Team win rates
  • The status panel shows how often each team has won on that server, right next to its score, and says how many matches that is based on
  • Match recaps add the winner’s streak and win rate, like “3rd win in a row · 50% of 8 decided matches here”
  • The leaderboard pages show team win rates too: across every server on the network, or for one community, with a split by map
  • Only decided matches count: a team has to reach the score limit. A round an admin cut short or a server restart does not skew the numbers
  • Can be switched off in the dashboard under the status panel settings
Several servers, one Discord
  • Settings → Per server: a community with several game servers sets the common things once, and per server only what differs
  • Per server: its own status panel and recap channel, seed call channel and seed role, seeding thresholds and rewards, map votes (channel, ping role, timing, number of maps), status panel look, 50 vs 50, welcome, spectator kick, team balance and auto end
  • Everything a server does not set itself follows the community, also when the community's settings change later. A panel whose channel changes moves there on its own
Staff checks
  • An unban from someone without the Unban right, or a ban longer than their role allows, now goes to a manager as a request with Approve and Deny buttons instead of being refused
  • Only someone who may do it themselves can approve, nobody approves their own request, and the action runs in the approver’s name. Waiting requests are also listed in the Admins tab
  • Weekly staff report on Monday: each staff member’s week next to the week before, bans that were lifted again, denied requests, sudden jumps and who went quiet
  • Settings → Staff checks
Staff permissions
  • Staff only see what their role allows: dashboard sections they have no right for are gone, and the Warcon key and the full settings are only shown to those who manage them
  • Warn, Kick, Kill, Move, Ban and Unban are separate rights now. Unbans can be left to a manager, so a mistaken ban gets a second pair of eyes
  • Every one of those actions has its own silent right, the old Garry’s Mod way: a mod may kick discreetly while their bans are still announced
  • Each banning role can have a longest ban, from an hour to 90 days. A limited role cannot ban permanently and uses /timeban; with several roles the most generous counts
  • New right View log for the action log, staff activity and the RCON log. Existing roles were carried over so nobody lost anything: Kick came with Warn, Ban with Unban, Act silently with every silent right
  • Ban announcements always say how long, also where the message was written before {time} existed
Whitelist
  • A whitelist entry the server already had before the bot is kept for good: a seeding reward or a boost running out no longer takes it away
  • Every reason is kept on its own (existing entry, role, Nitro boost, admin or seeding time) and timed entries add up
War room in Discord
  • Open the war room right inside a voice channel: rocket button → WarDogs Server Commands. Everyone in the channel is signed in with Discord, no code to share
  • Every voice channel keeps its own room and plan, starting on Ozeti; the first one in commands it
  • In the browser, war rooms now update the moment something changes, through a direct live connection
Hall of Shame
  • A public page at /hall-of-shame with cheaters caught on video: name, SteamID, what they did and the clip, checked by our team before it goes up
  • Run a server? Ban this scum from my server bans the player on any of your communities in one click
Network alerts
  • Video and picture evidence now plays right in the Network and Reports tabs instead of hiding behind a link
  • An alert that cannot be posted because its channel was deleted now shows up in the action log
50 vs 50 mode
  • Play with two of the three teams: pick the team that sits out under Settings → 50 vs 50
  • Whoever joins the closed team is whispered to switch, again halfway through the grace period, and then killed, moved to the smaller team, or only reminded — your choice
  • The two open teams can be kept even: the bot moves the players with the fewest kills and deaths this match, and never the same one twice within ten minutes
  • The closed team is left off the status panel, recaps and win rates, and the normal balance alerts step aside. Every line is editable, and admins or casters can be exempt
Spectator team
  • The game lists spectators as a team of their own, White. It is now hidden next to the real teams on the status panel, match recaps, /status, the Live tab, the server browser and your public pages
  • Want to see it? Switch on Show the White team in the dashboard, under the status panel settings
  • White never counts in team win rates and no longer sets off balance alerts, whatever the setting
Server browser
  • Any WARDOGS community can list itself now, with or without the bot: log in, paste a permanent Discord invite, pick region, language and style. You need Manage Server in that Discord, which the page checks
  • Filters for activity (playing now, needs seeders, free slots), game mode, language and play style, plus sorting by players, Discord size or name. Filters are part of the link, so a filtered list can be shared
  • Server cards show the mode and modifications running, like KOTH or Hardcore, and the size of the community’s Discord
  • Communities running the bot keep their live player counts and can set language and style in the dashboard. A listing whose invite stops working disappears on its own
  • Fixed: on phones a long server name pushed the cards wider than the screen
Network leaderboard
  • A public page at wardogsbot.com/leaderboard: one ranking of everyone playing on a server that runs the bot, every community counted. Players are matched on their Steam ID, so the same person counts once no matter how many of these servers they played on
  • Rank by kills, K/D, matches, seeding or profit, over seven days, thirty days or all time. The page names the communities it is made of
  • Sorting by profit now shows the profit — the column was missing on the per-server board too
  • Publishing your own leaderboard is still your choice and stays a separate setting: it gives your community its own page under its own name
App commands
  • Right-click a member → Apps → Player stats: posts their record in the channel, with their Discord ID, their linked Steam ID, this community’s numbers, and their totals across every community on the network board
  • Right-click a member → Apps → Player case file: warnings, bans, reports and recent staff actions, shown only to you. Needs the View server permission
  • /lookup finds anyone by name or SteamID, including players who are offline or never linked Discord, and shows their record here and across the network. Only you see it unless you choose to share it
Whitelist
  • Whitelist roles: pick Discord roles in the dashboard, and members who hold one are whitelisted automatically and taken off when the role is removed. They need a linked account, like boosters
  • Boosts and roles are checked every five minutes instead of every thirty, and right away when you change the setting
  • A player can be whitelisted for several reasons at once. Losing the role or the boost only ends that reason: a seeding reward or a manual entry stays, and an expired reward no longer takes a booster off the list
  • A Discord hiccup never removes anybody; only a member who really left or lost the role is taken off
Bans
  • The Bans list shows every ban made through the bot, not just the ones with a timer, with a Lift now button on each
  • A permanent ban says whether the player may appeal: right away, after a waiting period, or never
Linking Steam
  • /link on its own now gives you a Sign in with Steam button. One click, no code, and you do not have to be in game — the same Steam login the dashboard uses, just reachable from Discord
  • The old way still works: run /link with your SteamID64 and the bot whispers you a code in game
  • Typing somebody else’s SteamID can no longer flood their game chat: one code per person asking, and one per player, every two minutes
Auto messages
  • A message can now have a maximum player count as well as a minimum, so a seeding call stops once the server fills up instead of nagging a full server
  • Set both to zero for no limits; the table shows each message’s window at a glance
Fixes
  • The bot’s once-a-minute jobs threw an error every minute because one of them was not written to be awaited. The loop now survives a job like that instead of stopping at it
  • Network ban alerts never reached any community. The check for who should receive them still looked where servers were stored before multi-server support, and found nobody
  • /ban with “permanent” as the appeal time let the player appeal straight away. It now means what it says: no appeal, and the appeal form tells them so
  • /unban left the bot’s record of the ban open, so an unbanned player stayed off the leaderboards and showed as banned in their case file
  • A plain permanent ban was never written down, so the case file and the Bans list missed the most common kind of ban. Every ban made through the bot is recorded now
  • The appeal-time hint suggested “6mo”, which the bot reads as six minutes. The hint now says 26w
  • On a community with several servers, a fresh ban was reported as “extended”
  • When a booster also had a timed whitelist, the timed entry was turned permanent and kept after the boost ended
v0.716 September 2026Warnings, timed bans, a dashboard you can find your way around, and the leaderboards
Moderation
  • /warn — a kick without the kick: the player is whispered in game, sent a Discord DM if linked, and the server is told if you announce moderation. The bot reports what actually reached them
  • Player history on every player card: warnings, kicks, bans and reports at a glance, so a repeat offender is obvious in three seconds. Warnings can be withdrawn and stay on file
  • /timeban — bans that lift themselves. The game has no timed bans, so the bot keeps the deadline and unbans on time; a ban it cannot lift is retried and reported
  • /ban can set a waiting period before an appeal is allowed, or none at all; /bans lists both kinds, and the Players tab has the same table with a Lift now button
  • Public moderation is decided per role: tick which actions are announced, and a role with Act silently moderates quietly while everyone else is announced
  • The bot's own kicks (spectators, high ping, name filter) stay silent unless you turn them on
  • Announcements can go to the chat instead of the middle of the screen — one whisper per player, capped so a kick cannot eat the server's rate limit
  • Whitelist entries, kicks and everything else in the log show the player's real in-game name, and whether they are on the server right now
Leaderboards
  • /leaderboard picks a scope: this Discord, one server, or global across every community running the bot
  • A leaderboard panel: one message in a channel that keeps itself up to date and can be pinned. Scope, ranking, range, size and refresh rate are yours to set
  • Ranked by profit earned, and by loyalty — who stayed through a map change instead of leaving with everyone else
  • Permanently banned players are taken off every board; somebody serving a timed ban keeps their place
  • Full boards: as many players as one message carries, with a count of what did not fit
  • Every finished match has a page with the full scoreboard and round time, linked from the recap; the live scoreboard of the running match is linked from the status panel
Dashboard
  • Search everything with Ctrl K: settings, sections, commands and permissions, jumping straight to the spot. Ask a question and the assistant answers from the bot's own documentation, which is generated from the code so it cannot drift
  • Navigation you can see: the fourteen sections are grouped into Live, Community, Moderation and Setup and all visible at once, instead of scrolling off the edge
  • The settings have a jump index, the five announcement switches finally say which action each one is, and the seeding page explains what seeding is in plain words with your own numbers
  • Rotation builder: Infantry only and Hardcore as toggles per entry, control zones per map, and the maps under the names players know — Bakurani, Ozeti, Zestafona — instead of the theatre names
  • The status panel wears the teams' colours and your own faction emblems, and the sort padding in server names (0A0A0A…) is gone everywhere
Fixes
  • A player who boosted after linking never got their whitelist: the bot trusted a stale copy of their Discord membership. The same stale copy could also lock a freshly promoted admin out of the dashboard
  • Reports filed to a community without a review channel vanished silently while the reporter was told they were sent. They are now flagged in the log, and the reporter is told the truth
  • Seeding time was credited during map changes; a permanent whitelist entry showed as expired; the Whitelist tile counted slots held back, not people
  • Map votes could not set the winner on the live game build — the bot now rewrites the rotation in the config document instead, and keeps the file's line endings intact
  • Right after a restart the dashboard claimed the bot was not in your server; it now waits for the bot to finish starting
v0.616 September 2026Map votes that actually fire, public moderation, live whitelist
Map votes
  • Fixed: modes that report no score limit (KOTH) could never start a vote — the bot now learns the limit from finished matches of the same mode, or you set a plain trigger score
  • Fixed: a long rotation holding only a few different maps produced too few options; the rest now come from the full map list
  • Vote on the lighting in the same message — map and time of day are applied together when it closes
  • A vote that cannot be posted says why, in the log and to whoever started it, instead of running where nobody can see it
Moderation
  • Public or silent per action: tick which of kick, ban, unban, kill and team change are announced in game, wording is yours
  • Every command takes a visibility option — show or hide — for a single call
  • Hiding an announcement is its own permission, so admins can act quietly while other roles cannot
Whitelist
  • See who is in game right now: green dot, the server they are on, and their in-game name
  • Active and History are a filter now, and an entry that ran out is told apart from one an admin removed
  • Fixed: /whitelist add offered days while the bot read a duration, so every entry became permanent
Fixes
  • Signing in on wardogsbot.com kept bouncing back to the old address and never logged you in — the login now stays on the domain you are using, Steam linking too
  • /config crashed outright instead of showing the configuration
v0.516 September 2026Rotation builder, Steam linking and the tools
Server control
  • Map rotation builder — reorder, add and remove entries in the dashboard and write them straight to the live server, with backups to roll back
  • Whitelist manager — paste a list of giveaway winners, give them any length from an hour to permanent, and extend or remove entries with one click; timed entries expire on their own
  • Map votes close before the match ends, so the winner really becomes the next map; the time limit is optional now
  • Optional in-game announcement when a vote opens
Players
  • Sign in with Steam to link your account — no more typing a code from in-game chat
  • The in-game code is repeated a few times while it is valid, for anyone who still uses it
  • Boosters get their whitelist the moment they link, even if they boosted earlier
Polish
  • New status panel: no colour bar, optional banner image, and one state button — green online, yellow restarting, red offline
  • Seed calls wait until the server has really been below the threshold — a map change no longer triggers them
  • Every line the bot says in game is editable, with placeholders
  • Mortar & artillery calculator at /tools/mortar
v0.416 September 2026Permissions per role, whitelist, automation
Permissions
  • 19 separate permissions per Discord role — pick a role, tick what it may do. No fixed tiers, no presets
  • Applies to the dashboard and the Discord commands alike; Manage Server always keeps full access
Automation
  • Auto end match on a score or a lead (mercy rule)
  • Spectator auto-kick frees slots parked on the White team, with a warning first
  • Team balance alerts, name filter, high-ping kick
  • Schedules and recurring in-game messages
Naming
  • Reserved slots are called whitelist now — the command is /whitelist
v0.316 September 2026Several servers, reports and moderation
Multi-server
  • Up to 10 servers per Discord with one Warcon key; every command takes a server
  • Bans and whitelist entries apply everywhere, map and match control to the server you pick
Moderation
  • Player reports with clip evidence, decided by your admins
  • Cross-community network bans — only confirmed bans are shared, reporters stay anonymous
  • Ban appeals through a web form
  • Suspicious-performance alerts from kill rate and K/D (never an automatic ban)
Community
  • Public server browser, clan leaderboard, weekly awards, admin activity
  • /notify for a DM when your server fills up or a friend comes online
v0.215 September 2026First public version
Everything to start with
  • Live status panel, player list with kick / kill / whisper / ban
  • Broadcast, map change, end and restart match
  • Seed calls and free whitelist time for seeding
  • Match recaps and leaderboards