store: Fix: maintenance mode flag in /admin-maintenance (major-domo-v2 #28)
This commit is contained in:
parent
c8de1ff99e
commit
8b76a89b67
@ -0,0 +1,33 @@
|
||||
---
|
||||
id: 4c3c7a86-46b6-4d42-a966-35071ba3bfe1
|
||||
type: fix
|
||||
title: "Fix: maintenance mode flag in /admin-maintenance (major-domo-v2 #28)"
|
||||
tags: [major-domo, discord, python, discord.py, bot, maintenance-mode, tree-interaction-check]
|
||||
importance: 0.6
|
||||
confidence: 0.8
|
||||
created: "2026-03-03T17:37:27.125744+00:00"
|
||||
updated: "2026-03-03T17:37:27.125744+00:00"
|
||||
---
|
||||
|
||||
## Problem
|
||||
`/admin-maintenance` in `commands/admin/management.py` showed a success embed but never set any state. No flag was set, no commands were blocked.
|
||||
|
||||
## Root Cause
|
||||
The command had a placeholder comment: "This would typically set a global flag or database value. For now, we'll just show the interface."
|
||||
|
||||
## Solution
|
||||
1. Added `self.maintenance_mode: bool = False` to `SBABot.__init__` in `bot.py`
|
||||
2. Registered a global `@self.tree.interaction_check` in `setup_hook` that intercepts every slash command interaction — returns `False` (with ephemeral message) for non-admin users when `maintenance_mode` is `True`
|
||||
3. Updated `admin_maintenance` command to set `self.bot.maintenance_mode = is_enabling` and log the state change
|
||||
|
||||
## Key Pattern
|
||||
Discord.py's `CommandTree.interaction_check` is the correct hook for global command blocking. Register via `@bot.tree.interaction_check` inside `setup_hook`. Returning `False` prevents the command from executing.
|
||||
|
||||
## Files Changed
|
||||
- `bot.py` — flag init + global tree check
|
||||
- `commands/admin/management.py` — set flag + log state change
|
||||
|
||||
## Notes
|
||||
- Flag is in-memory only (resets on restart)
|
||||
- Admins (guild `administrator` permission) bypass the block
|
||||
- 930 tests pass
|
||||
Loading…
Reference in New Issue
Block a user