Skip to content

@lockout

Permission: ADMIN

Quiesce the bot before a reload or restart. A lockout stops new games, imports, question and point editing, and network activation changes, while games already running carry on undisturbed.

Syntax

@lockout [on|off] [reason]

With no argument, reports the current state. The optional reason is quoted back in every refusal, so players are told why.

Example

@lockout on restarting for upgrade
<Inquisitor> Lockout ON — blocked: new games, imports, question editing, point editing, network activation. Running games continue. Reason: restarting for upgrade

@question add "Q" "A" --set General
<Inquisitor> Locked out: restarting for upgrade. 'question add' is unavailable until an admin runs 'lockout off'.

@lockout
<Inquisitor> Lockout is ON | set by rb14060 | 2026-09-06 02:00 UTC | reason: restarting for upgrade | blocked: new games, imports, question editing, point editing, network activation. Run 'lockout off' to lift.

@lockout off
<Inquisitor> Lockout OFF. All commands available.

What is blocked

Command Blocked during a lockout
@trivia Starting a game. Stopping one is not blocked
@importpreview, @importconfirm, @importpointspreview, @importpointsconfirm Entirely
@question add, edit, delete, move, bulkmove, bulkdelete, bulkcategory. show, list, search and help stay available
@questionset add, rename, delete. list and stats stay available
@points Entirely — every subcommand is an edit
@mergeuser Entirely
@confirm Entirely — it executes the pending destructive operations
@activate, @deactivate, @reactivate, @setquestionset, @setmasterlog, @setnetlog Entirely

Everything else keeps working: answering questions, @skip, @recall, every stats and leaderboard command, and — by design — @config and the permission commands (@grant, @revoke, @deny).

A warning is sent on every blocked attempt, not throttled, so nobody is left wondering why a command did nothing.

Notes

  • ADMIN is blocked too. A lockout that exempted admins would not quiesce the database, and the admin who raised it is the person most likely to keep working out of habit. Lift it with @lockout off first, then re-apply.
  • @lockout off is never itself blocked, so the escape hatch always works.
  • The state is stored in the database, so it survives the reload or restart it was raised for — which is the whole point. A bot that dies while locked comes back locked; that is the safe direction to fail, and one command clears it.
  • A lockout is global: it applies to every network and channel the bot serves, not just the one it was set from.
  • The state is not a configuration setting. @config cannot see, set or export it, and @lockout is the only way to change it.