DOCS/COMMANDS.MD

Commands

GlassFrame Protocol registers no slash commands. Every command is a prefix command (default prefix !gf, configurable via config.prefix), requires Manage Server permission (or being the guild owner), and is throttled per user per guild by performance.commandCooldownMs (default 3s) - a repeated or accidental double-send is silently ignored rather than running twice or getting a "slow down" reply of its own.

Command Does
!gf panel Sends the 5-button control panel (see below).
!gf status Shows which of the four layers are currently active in this server.
!gf scan Runs RoleAnalyzer.scanRoles() on demand and reports any role name/permission mismatches.
!gf metrics Shows this server's metrics by default - a button on the message switches to bot-wide (all servers) and back. See docs/PERFORMANCE.md.
!gf phishing add <domain> Adds a domain to the link blocklist.
!gf phishing remove <domain> Removes a domain from the blocklist.
!gf phishing list Lists every blocked domain.
!gf whitelist add <userId> Exempts a user from punitive action in this server.
!gf whitelist remove <userId> Removes that exemption for this server.
!gf prefix set <newPrefix> Changes this server's own command prefix.
!gf prefix reset Goes back to the default prefix.
!gf help Lists these commands (this list, minus engine - see below).

Everything above operates on the server the command was sent in - arming AntiRaid, whitelisting someone, or checking status in one server has no effect on any other server the bot is in. See docs/STATE.md.

The control panel

!gf panel sends a message with exactly five buttons in one row, scoped to the server it was sent in:

  1. Activate/Deactivate AntiRaid
  2. Activate/Deactivate AI Moderation
  3. Activate/Deactivate AntiNuke
  4. Activate/Deactivate Basic Security
  5. Activate/Deactivate Full Protocol - arms or disarms all four at once, for this server only

Every layer starts disabled in every server - nothing runs until it's explicitly activated, either from the panel or via frame.enableLayer("antiRaid", guildId) in code. Button labels flip between Activate/Deactivate based on that server's current state, and the panel message updates in place on every click rather than posting a new message each time. Clicking a button also drops one aggregated log line in the security log channel noting who changed what.

The metrics button

!gf metrics (and the panel's numbers, indirectly) has one button of its own, separate from the panel's five: Show Global (All Servers) / Show This Server, flipping the message between this server's counts (open cases, flagged members, active layers, whitelist size) and bot-wide totals across every server (queue depth, cache stats, average latency).

Still shared, not per-guild: the phishing blocklist (!gf phishing) is the one command surface left that applies to every server this bot process is in, not just the one it was used in - see Protocol Layers - Scope for the full breakdown of what's per-guild vs. still shared.

!gf engine

Deliberately not in the table above, and not listed by !gf help. Gated by options.owners (a Discord user ID allowlist checked in code) rather than Manage Server permission, and optionally a second-factor password (config.engine.password) with attempt-limited lockout. Opens a 5-page, bot-wide dashboard - busiest servers, AI usage, live cross-server activity, aggregate performance. Full reference: docs/ENGINE.md.