In-game moderation
Deal with the players on a game server without opening a console.
The Moderation tab shows who is online, kicks and bans, and keeps a log of what your staff did.
License required
In-game moderation needs the In-Game Moderation license feature. Custom actions need the separate Custom Moderation Actions feature.
What you need
Three things must be true before the Moderation tab appears on a server:
- Your license includes In-Game Moderation.
- The server's egg declares an RCON connection. Most eggs do not.
- The module is on for that egg. The panel does this for you.
To see the license state, go to Admin > Settings > License. Every feature is in the available list or in the unavailable list.
If your license does not include the feature, the tab does not appear in the server sidebar. The moderation screens return "This feature requires a license upgrade".
The module runs on Linux nodes only. A server on a Windows node cannot use it. A server on a Kubernetes cluster cannot use it.
The games it works on
Every moderation action travels over RCON. An egg that declares no RCON connection cannot use the feature. Of the 264 eggs that BadgerPanel ships, 28 declare one.
| Group | Games |
|---|---|
| Minecraft | Minecraft Java Edition |
| Source engine | Black Mesa, Counter-Strike 2, Counter-Strike: Source, Custom HLDS Engine Game, Custom ReHLDS Engine Game, Custom Source Engine Game, Fistful of Frags, Garry's Mod, Holdfast NaW, Insurgency, Insurgency: Sandstorm, Left 4 Dead, Left 4 Dead 2, No Love Lost, No More Room in Hell, Open Fortress, SourceCoop, Sven Co-op, Team Fortress 2, Team Fortress 2 Classic |
| ARK and Rust | ARK: Survival Ascended, ARK: Survival Evolved, Rust, Rust Staging |
| BattlEye | Arma 3, Arma 3 Headless Client, Arma Reforger |
Every other shipped egg has no Moderation tab. This includes Terraria, Valheim, Palworld, Factorio, and all the bot and database eggs.
To add a game that is not in this list, an admin adds an RCON block to the egg.
- Go to Admin > Eggs and open the egg.
- Open the Gameplay Meta tab.
- Add an
rconblock to the JSON. Give the port, the password variable, and the dialect. - Click Save Changes.
The panel then offers the standard actions for that RCON dialect. Every server that uses the egg gets a Moderation tab.
The panel supports three RCON dialects: Minecraft, Source and BattlEye. An egg with a different dialect gets no actions until it also declares its own action list.
Turning it on
The panel turns the module on for every egg that declares RCON. This happens at the panel update, and again when you create or import an egg.
To turn the module off for one egg:
- Go to Admin > Eggs and open the egg.
- Open the Modifications tab.
- Set the Moderation switch to off. The change saves at once.
INFO
The Modifications tab needs the Server Modifications license feature.
The players tab
Open a server and click Moderation in the sidebar. The Players tab shows who is connected now. The panel asks the game for the list every 10 seconds. Click Refresh for an immediate update.
Each row shows four columns:
- Player - the name that the game reports.
- ID - the SteamID, UUID or GUID, when the game reports one.
- Address - the IP address, when the game reports one.
- Actions - one button for each available action.
The ID and the address depend on the game:
| Game type | ID | Address |
|---|---|---|
| Source | Yes, when RCON answers | No |
| Minecraft | No | No |
| BattlEye (Arma) | Yes | Yes |
If the server is stopped, or the panel cannot query it, the tab says so. The Bans tab and the logs still work.
If the game has no actions, the tab shows a yellow message that explains why.
Actions
| Action | What it does |
|---|---|
| Kick | Removes the player from the server. The player can rejoin. |
| Ban | Bans the player in the game, and adds a row to the ban list. |
| Unban | Sends the game's unban command. |
Each game gets the standard set for its RCON dialect. An egg can replace that set with its own. The Garry's Mod egg adds Gag, Ungag and Freeze from ULX. The ARK and Rust eggs use their own command names.
BattlEye games have no unban command, so Arma servers show Kick and Ban only.
To run an action:
- Open the Players tab.
- Find the player and click the action button.
- If the dialog asks for a reason or a duration, fill in the fields.
- Click the button at the bottom of the dialog.
A red button is a destructive action. The dialog warns you first. The command reaches the live server at once.
WARNING
Source kick and ban commands need the player's game ID. If the game did not report an ID, the action stops with an error. Use Add ban on the Bans tab instead.
Bans
The Bans tab holds the panel's own ban list for this server. This list is separate from the game's own ban file. The panel keeps both in step when it can.
Add a ban
- Open the Bans tab and click Add ban.
- Enter the player name, the game ID, or both.
- Enter a reason. This field is optional.
- Enter a duration in minutes. Leave the field empty for a permanent ban.
- To block the address as well, set Also block their IP address.
- To record the ban without touching the server, turn off Send the game's ban command now.
- Click Add ban.
A ban by game ID survives a name change. A ban by name does not.
Step 6 is useful when the server is off. The panel writes the ban row and sends no command.
If you block the IP and leave the IP field empty, the panel uses the last address that it saw. If the panel knows no address for that player, it tells you and adds no block.
WARNING
An IP block stops everybody behind that address. A shared address or a mobile address can block other players.
Lift a ban
- Open the Bans tab.
- Find the ban and click Lift.
The panel marks the ban inactive, removes the IP block, and sends the game's unban command. To see the bans that you lifted, set Show lifted bans.
A ban with a duration ends by itself. The panel then removes the IP block within one minute.
When part of a ban fails
The panel writes the ban row first. The game command and the IP block can still fail after that. The panel then shows a warning that names the part that failed. In the IP column, an address that has no firewall rule is marked "not enforced".
The logs
Two logs sit inside the Moderation tab.
Moderation log records what your staff did. Each row holds the action, the player, the reason, the person who did it, and the result. A failed action is recorded too. You can filter by player name and by action name.
Activity records what happened in the game. This covers joins, leaves, chat, and any other event that the egg knows how to read. The panel builds this log from the server console output.
Two controls sit at the top of the Activity tab.
The event list narrows the log to one kind of event:
| Item | Shows |
|---|---|
| All activity | Every event. |
| Chat | The lines that players typed in the game. |
| Joins | The players who connected. |
| Leaves | The players who disconnected. |
| VPN detections | The connections that matched a hosting or VPN network. |
| VPN kicks | The players that the daemon removed for a VPN address. |
Each item covers every game that reports that event, whatever words the game writes in its console.
Next to the list, the Filter by player box narrows the log to one name. You can use both controls together.
An egg with no console parsers produces an empty Activity tab. Of the shipped eggs, 33 read joins and leaves, and 21 also read chat. If Activity stays empty while players connect, the egg has no parser for that game.
Who can use it
The server owner and panel admins have full access. To let a staff member moderate, add them as a user on the server.
- Open the server and click Users.
- Add the user, or open a user that exists.
- Set the switches in the Moderation group.
| Permission | What it allows |
|---|---|
| View | Read the player list, the bans and the logs. |
| Kick and mute | Run kick and the other non-destructive actions. |
| Ban | Ban and unban players, and block IP addresses. |
| Manage actions | Change which actions this server offers. |
The panel applies the permission of each action separately. A staff member with Kick and mute and without Ban can kick and cannot ban.
The permission presets set these for you:
- Read Only grants View.
- Operator grants View and Kick and mute.
- Full Access grants all four.
A suspended server locks out everybody except panel admins.
Settings for one server
The Settings tab inside Moderation applies to one server only. It needs the Manage actions permission.
Available actions lists every action that the game offers. Turn off any action that your staff must not use on this server.
Custom actions lets you add your own action as a command template. This needs the Custom Moderation Actions license feature. Each action needs an ID, a button label and a command. In the command you can use {player}, {uid}, {reason}, {duration} and {message}. You also set the permission level, and whether the panel asks you to confirm.
A custom action cannot contain a semicolon or a newline. This stops one button from running two commands.
Click Save settings to apply your changes.
VPN and datacenter connections
The daemon matches the address of each new player against a list of hosting and datacenter networks. The Settings tab holds two switches for this:
- Enforce - act on a match. Detection is always recorded.
- Kick automatically - remove the player. Turn it off to record the match only.
Every match writes a vpn_detected row in the Activity log. A kick writes a vpn_kick row as well. Use the event list on that tab to read them.
This control catches addresses that belong to cloud and hosting companies, for example AWS, OVH, Hetzner and DigitalOcean. It also catches the large commercial VPN operators that run their own network. It does not catch a VPN on a home broadband line, and it does not catch a residential proxy. No name-based method can.
INFO
Detection needs the game to report the address of the player. The Address column on the Players tab shows which games do this.
Webhooks
Moderation raises webhook events. Subscribe to them in Admin > Webhooks:
| Event | When it fires |
|---|---|
moderation.kick | Somebody runs the kick action. |
moderation.ban | Somebody runs the ban action. |
moderation.unban | Somebody runs the unban action. |
moderation.vpn_detected | The daemon matches a hosting or VPN address. |
moderation.vpn_kick | The daemon kicks a player for a VPN address. |
A custom action raises an event named after its ID. See Webhooks.
Limits
Read this section before you sell the feature to a customer.
- RCON only. 28 of the 264 shipped eggs declare RCON. Every other game has no Moderation tab, and no setting turns it on.
- Linux nodes only. A server on a Windows node or on a Kubernetes cluster cannot use the feature.
- No mute. No shipped game has a mute command over RCON. Garry's Mod has Gag from ULX. For other games, add a custom action.
- No in-game overlay. Every action goes through the panel.
- The panel does not read the game's ban file. The Bans tab shows the bans that the panel made. A ban that somebody made in the game does not appear.
- IP blocks are IPv4 only. The panel also needs an address for that player. Only Arma servers report player addresses today.
- Retention. The panel keeps moderation actions and bans for 365 days. It keeps activity events for 30 days.
- Player identity depends on the game. Minecraft reports names only. A ban by name does not survive a rename.
Next steps
- Eggs - how an egg defines a game type.
- Server Management - day-to-day server work.
- Webhooks - how to send moderation events to Discord.
