GameGrid

Discord Bot Commands Reference

Every GameGrid Discord Bot command - 46 top-level commands, 96 invocable paths once subcommands are counted - with its options, the access level it needs, the API scope behind it, and who sees the reply.

How to read this reference

The bot has 46 top-level commands. Several have subcommands, so there are 96 things you can actually type. All 96 are listed below.

Each table has four columns that matter:

  • Level - the access level a member needs, granted with /config role. See Discord Bot Permissions & Security.
  • Scope - the API scope the linked key must carry. Missing scope means the command fails no matter what Discord level you hold.
  • Reply - Public means the whole channel sees the answer. Private means only you do.
  • Options - [optional], <required>.

Every command except /chat-unlink accepts an optional server-id. Leave it out and the bot uses the server bound to the channel, then the Discord server default. If neither is set it says so.

Two limits apply to everyone: 5 seconds between uses of the same command by the same person, and 5 commands running at once per Discord server. /help is exempt from both.

Servers and status

CommandOptionsLevelScopeReply
/servers-Read Onlyservers:readPublic
/server[server-id]Read Onlyservers:readPublic
/status[server-id]Read Onlyservers:readPublic
/check-update[server-id]Read Onlyservers:readPublic
/players[server-id]Read Onlyplayers:read + servers:readPublic
/files[path] [server-id]Read Onlyfiles:readPublic

/servers is where everyone starts - it lists your servers with their ids, and every other command needs one of those ids or a channel binding.

/players calls two endpoints and needs both players:read and servers:read. If the key holds only one of them the command still answers, but reports "contents not reported" instead of the list.

Lifecycle

CommandOptionsLevelScopeReply
/start[server-id]Full Accessservers:lifecyclePublic
/stop[server-id]Full Accessservers:lifecyclePublic
/restart[server-id]Full Accessservers:lifecyclePublic
/auto-restart[hours] [server-id]Split - see belowsee belowPublic

/auto-restart behaves as two commands. With no hours, it shows the current schedule and needs only Read Only and servers:read. With hours (6, 12 or 24), it sets the schedule and needs Full Access and servers:write.

Lifecycle replies are public on purpose - the channel should be able to see who restarted the server.

Console

CommandOptionsLevelScopeReply
/console[server-id] [lines]Console Accessconsole:readPrivate
/command<command> [server-id]Console Accessconsole:writePrivate

lines accepts 1 to 50 and defaults to a recent window.

Both are private, and both need Console Access rather than Read Only. Console output can contain RCON and admin passwords, and a command like a 7 Days to Die getgameprefs or a Valheim bridge dump prints configuration wholesale. Credentials and IP addresses are redacted before anything is posted, but the reply is still kept private to the person who ran it.

/config command-channel can restrict /command to a single channel. It does not restrict /console.

Backups

CommandOptionsLevelScopeReply
/backups list[server-id]Read Onlybackups:readPublic
/backups create[label] [server-id]Full Accessbackups:createPublic
/backups restore<backup-id> [server-id]Full Accessbackups:restorePrivate
/backups delete<backup-id> [server-id]Full Accessbackups:writePublic

Four separate scopes, and none implies another. A key with backups:read alone can list but not create; one with backups:write can delete but not restore. Grant only what you want the bot able to do - leaving backups:restore off is a reasonable way to make sure nobody overwrites live data from Discord.

/backups create waits for the backup to finish, which on a large world can take a couple of minutes.

Settings

CommandOptionsLevelScopeReply
/settings view[category] [server-id]Read Onlysettings:readPublic
/settings get<key> [server-id]Read Onlysettings:readPublic
/settings set<key> <value> [server-id]Full Accesssettings:read + settings:writePrivate

/settings set needs both scopes: it reads the schema to validate your value before writing it.

When a setting needs a restart to take effect, the reply carries a Restart Now button. Pressing it re-checks that you still hold Full Access, and needs servers:lifecycle on the key.

Mods

CommandOptionsLevelScopeReply
/mods list[server-id]Read Onlymods:readPublic
/mods search<query> [provider] [server-id]Read Onlymods:readPublic
/mods install<provider> <mod-id> [file-id] [server-id]Full Accessmods:writePublic
/mods uninstall<mod-id> [server-id]Full Accessmods:writePublic
/mods toggle<mod-id> <enabled> [server-id]Full Accessmods:writePublic

provider is one of nexusmods, curseforge or steamworkshop. Which are available depends on the game - /mods search without a provider tells you which ones your server supports.

Windrose Plus

CommandOptionsLevelScopeReply
/windrose status[server-id]Read Onlyservers:readPublic
/windrose config[section] [server-id]Read Onlyservers:readPublic
/windrose get<key> [server-id]Read Onlyservers:readPublic
/windrose set<key> <value> [server-id]Full Accessservers:read + windrose:adminPrivate
/windrose enable[server-id]Full Accesswindrose:adminPrivate
/windrose disable[server-id]Full Accesswindrose:adminPrivate

windrose:admin also permits reading the RCON password in clear text over the API. Treat any key holding it as a credential in its own right.

`/windrose` is a Windrose Plus admin command and stays one. The economy on Windrose runs on the same shared /balance, /shop, /buy, /link and admin commands every other game uses โ€” there are no /windrose economy verbs and none are planned. Enabling Windrose Plus is, however, what makes the economy available on a Windrose server, so /windrose enable is the first step to having one. See Windrose Economy and Shop.

Live map

CommandOptionsLevelScopeReply
/map link[server-id]Read Onlymap:readPrivate
/map players[server-id]Read Onlymap:readPrivate
/map status[server-id]Read Onlymap:readPrivate
/map region<region-id> [server-id]Read Onlymap:readPrivate
/map leaderboard[server-id]Read Onlymap:readPublic
/map share[server-id]Read Onlymap:readPrivate

Every reply is private except one, and both halves of that are deliberate. /map players says where each player is standing. In a public channel that is a map of everybody's base handed to whoever is in the room, including the person who built the raid party. /map leaderboard is the exception: it carries no positions and no platform identifiers, it is about a finished wipe rather than a live world, and posting it into a community's own channel is the point of having it.

`/map share` never prints the link. It says whether a public map link is active and roughly when it expires, and nothing else โ€” the URL is a credential for an unauthenticated view of your world, and a chat message is not a place to keep one. Creating and revoking a link are owner actions in the panel, on the page where the revoke button sits next to it.

`/map` is read-only and stays that way. The panel's map can teleport a player, spawn an entity, call a horde and reset a region. None of those is a chat command. Teleport and spawn move or surprise people who are playing right now, and an admin doing that from a panel is looking at the consequence while one typing into Discord is not. Resetting a region destroys everything built in a 512 x 512 block area โ€” it is gated on a backup that has to finish first and on an owner-only permission, and a Discord role is not a GameGrid permission, so the bot cannot check the gate that action depends on.

/map region is 7 Days to Die only. Other games answer with what their map does have โ€” read /map status first.

Account, billing and support - Owner only

CommandOptionsLevelScopeReply
/account-Owneraccount:readPrivate
/billing-Ownerbilling:readPrivate
/tickets-Ownertickets:readPrivate
/ticket<ticket-id>Ownertickets:readPrivate

These four look like reads and are gated at Owner, the highest level, because they expose account and billing information. Full Access is not enough. billing:read is also missing from the "Discord Bot" scope preset, so /billing is the command most likely to fail on a freshly made key.

Economy - player commands

CommandOptionsLevelScopeReply
/balance[server-id]Read Onlyeconomy:readPrivate
/daily[server-id]Read Onlyeconomy:writePrivate
/shop[category] [search] [server-id]Read Onlyeconomy:readPublic
/buy<item> [quantity] [server-id]Read Onlyeconomy:writePrivate
/link[character] [server-id]Read Onlyeconomy:writePrivate
/unlink[server-id]Read Onlyeconomy:writePrivate
/my-transactions[server-id]Read Onlyeconomy:readPrivate
/help-economy-None-Private

These are Read Only on purpose. They are player actions on the player's own wallet, so ordinary members can use them without being given any control over your servers. /help-economy needs no level and works before /setup has been run.

/shop and /buy suggest your own shop's categories and items as you type. quantity on /buy accepts 1 to 100.

`character` on `/link` is optional on most games and required on Windrose. Windrose has no in-game chat the platform can read, so instead of typing !link CODE in game the player names their character and joins the server โ€” the link completes when that character is seen online. On every other game the option is ignored; the name is read from the !link message itself. If a game needs it and it is missing, the bot says so and no code is sent.

Economy - admin commands

CommandOptionsLevelScopeReply
/economy-setup[server-id]Setup user or server ownereconomy:readPrivate
/economy-config[currency-name] [server-id]Setup user or server ownereconomy:adminPrivate
/economy-stats[server-id]Full Accesseconomy:adminPublic
/economy-links[server-id]Full Accesseconomy:readPublic
/economy-link-remove<user> [server-id]Full Accesseconomy:read + economy:adminPublic
/economy-earn[setting] [value] [server-id]Full Accesseconomy:admin + economy:readPrivate
/shop-admin<action> [item-id] [price] [category] [server-id]Full Accesseconomy:admin + economy:readPublic
/award<user> <amount> [reason] [server-id]Full Accesseconomy:adminPublic
/refund<transaction-id> [reason] [server-id]Full Accesseconomy:adminPublic

`/economy-setup` and `/economy-config` are not level-gated. Like the /config subcommands, they are limited to the person who ran /setup and the Discord server owner. A Full Access holder is refused.

/shop-admin takes add, remove, list or edit as its action. /economy-earn takes enabled, playtime, kill, death, level, event or max.

`/award` only adds currency. The amount option has a minimum of 1, so Discord refuses a negative number before the command is even submitted. To take currency away, use the panel.

Chat bridge

CommandOptionsLevelScopeReply
/chat-link<channel> [server-id]Full Accesseconomy:readPublic
/chat-unlink-Full Access-Public

/chat-link accepts a normal text channel only. /chat-unlink deliberately takes no options - it unlinks whatever this Discord server has bridged.

Setting up the bridge needs economy:read, but running it needs economy:write as well. A key with only economy:read links successfully, then carries game chat into Discord while messages typed in Discord silently never arrive. If that is what you are seeing, check the scope before anything else.

See Discord Chat Bridge for how the bridge behaves once it is running.

Config presets and scheduled events

Presets are saved sets of settings; events apply a preset for a window of time and revert it afterwards - a 2x XP weekend, say.

CommandOptionsLevelScopeReply
/preset list[server-id]Read Onlyconfig_events:readPublic
/preset view<preset-id> [server-id]Read Onlyconfig_events:readPublic
/preset create link[server-id]None-Public
/preset delete<preset-id> [server-id]Full Accessconfig_events:writePublic
/preset apply<preset-id> <end> [server-id]Full Accessconfig_events:write + config_events:controlPublic
/event list[server-id]Read Onlyconfig_events:readPublic
/event status[server-id]Read Onlyconfig_events:readPublic
/event log<event-id> [server-id]Read Onlyconfig_events:readPublic
/event schedule<preset-id> <start> <end> [timezone] [name] [server-id]Full Accessconfig_events:writePublic
/event update<event-id> [start] [end] [name] [server-id]Full Accessconfig_events:writePublic
/event start<event-id> [server-id]Full Accessconfig_events:controlPublic
/event end<event-id> [server-id]Full Accessconfig_events:controlPublic
/event cancel<event-id> [server-id]Full Accessconfig_events:controlPublic

/preset create link returns the panel URL for building a preset - presets are created in the panel, not in Discord. It needs no access level.

/preset apply is the one command needing two scopes: it creates an event and starts it immediately, and rolls the event back if the start fails.

Every /preset and /event reply is public, including refusals. A member without the required level sees "you need at least Read Only permission" posted in the channel rather than privately.

/preset view hides values that look like credentials. It deliberately does not hide things that look like IP addresses, because a game version such as 1.20.4.1 has the same shape.

Command Schedule (/command-schedule)

Manage scheduled recurring console commands from Discord. These commands let you create, list, edit, delete, toggle, run, and view the history of command schedules without opening the panel.

CommandOptionsAccess LevelAPI ScopeVisibility
/command-schedule list[server-id]Read Onlycommand_schedules:readPublic
/command-schedule catalog[server-id]Read Onlycommand_schedules:readPublic
/command-schedule show<schedule-id> [server-id]Read Onlycommand_schedules:readPublic
/command-schedule create<name> <command> <cron> [params] [timezone] [server-id]Consolecommand_schedules:writePublic
/command-schedule edit<schedule-id> [name] [command] [cron] [params] [timezone] [server-id]Consolecommand_schedules:writePublic
/command-schedule delete<schedule-id> [server-id]Consolecommand_schedules:writePublic
/command-schedule toggle<schedule-id> [server-id]Consolecommand_schedules:writePublic
/command-schedule run<schedule-id> [server-id]Consolecommand_schedules:controlPublic
/command-schedule history<schedule-id> [server-id]Read Onlycommand_schedules:readPublic

The command option takes a command ID from the catalog (e.g. saveworld, say, shutdown). Use /command-schedule catalog to see the available commands for your game.

The cron option takes a 5-field cron expression in UTC (e.g. 0 4 * * * for daily at 4 AM UTC, 0 * * * * for hourly, 0 0 * * 0 for weekly on Sunday). The minimum interval is 5 minutes.

The params option takes a JSON string (e.g. {"message":"Hello world"}). Use /command-schedule catalog to see which commands take parameters and what they are.

The timezone option takes an IANA timezone name (e.g. America/New_York). Defaults to UTC if omitted.

Examples:

  • /command-schedule create name:"Daily Save" command:saveworld cron:"0 4 * * *" timezone:"America/New_York" โ€” Save the world daily at 4 AM EST.
  • /command-schedule create name:"Hourly Announcement" command:say cron:"0 * * * *" params:"{\"message\":\"Server restarting soon\"}" โ€” Broadcast a message every hour.
  • /command-schedule run schedule-id:"abc12345" โ€” Run a schedule immediately.
  • /command-schedule history schedule-id:"abc12345" โ€” View the last 10 executions.

Setup and configuration

These are not gated by access level at all. /setup needs Discord's Manage Server permission the first time; every /config subcommand is limited to the person who ran `/setup` and the Discord server owner. All reply privately.

CommandOptionsSets
/setup<api-key>Links your API key. Re-linking is limited to the original setup user or server owner
/config view-Shows the linked key id, channels, default server and every role grant
/config role<role> <level>Grants a Discord role an access level
/config default-server<server-id>The fallback server for commands with no server-id
/config channel-server<channel> [server-id]Binds a channel to a server. Omit server-id to unbind
/config log-channel<channel>Where command activity is logged
/config alert-channel<channel>Where start / stop / crash alerts are posted
/config command-channel[channel]Restricts /command to one channel
/config live-console<channel> [server-id]Mirrors console output into a channel. Needs console:read
/config live-logs<channel> [server-id]Mirrors log output into a channel. Needs logs:read
/config live-stop<channel>Stops mirroring in that channel
/config live-list-Lists active mirrors
/config reset-Clears all bot configuration for this Discord server, after confirmation

A successful `/setup` re-link clears every role grant, channel binding and live mirror. Run /config view and /config live-list first so you can put them back. Your log, alert and command channels and default server survive.

Help

CommandOptionsLevelReply
/help-NonePrivate
/help-economy-NonePrivate

/help shows the caller their own access level and the commands it allows, which makes it the quickest way to answer "why can't I do this". It is exempt from the cooldown and the concurrency limit, so it always answers.

When a command is refused

Two different systems can refuse a command, and the message tells you which.

Message mentionsGateFix
An access level - "you need at least Full Access"Discord/config role, or ask an admin
A scopeThe API keyCreate a new key in the panel with that scope, re-run /setup, re-apply role grants
No server specifiedNeither/servers, then /config default-server or /config channel-server
The server does not support thisNeitherThe game does not have that feature. /status names the game
The command is unavailable for your accountNeitherThe capability is turned off for your account - contact support

The two gates are independent. Full Access with a key missing the scope fails, and a key with every scope grants nothing to a member the Discord gate refuses. See Discord Bot Permissions & Security.