feat(rust): slash commands and the next wipe, server half (phase 16)
Five read-only commands registered with api.registerSlashCommands: /status, /wipe, /top, /online and /clan (D126). Every refusal is private, and any answer narrower than public (online names, a clan roster) goes to the caller alone (D127). No command asks a sidecar. The next wipe (D128, D130): six nullable columns on rust_servers, a pure nextWipe(row, now) with the zone arithmetic through Intl, computed on every read. The public server shape gains nextWipe; the admin shape gains the stored schedule; PUT /admin/rust/servers/:id takes the six fields and writes them only when wipeRule is present. server/commands joins ci/bundle.json, which checkBundle caught. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
16
server/commands/index.js
Normal file
16
server/commands/index.js
Normal file
@@ -0,0 +1,16 @@
|
||||
// ── The slash commands (phase 16, R11, D126) ──────────────────────────────
|
||||
//
|
||||
// Five read-only questions, answered from this module's own tables. No write
|
||||
// verbs, and no `/link`: the account link stays on R1's two surfaces.
|
||||
//
|
||||
// Registered as ONE batch in `index.js`. Names are bare words (§32.4 reading 1):
|
||||
// Discord scopes commands to the bot that owns them, and one module per site
|
||||
// (website#204) means no other module competes for them. None collides with the
|
||||
// bot's own built-ins, which core cannot see and the bot resolves against us.
|
||||
module.exports = [
|
||||
require('./status.command'),
|
||||
require('./wipe.command'),
|
||||
require('./top.command'),
|
||||
require('./online.command'),
|
||||
require('./clan.command'),
|
||||
]
|
||||
Reference in New Issue
Block a user