Compare commits
1 Commits
main
...
ai/major-d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f7b2e452e0 |
36
bot.py
36
bot.py
@ -64,6 +64,25 @@ def setup_logging():
|
|||||||
return logger
|
return logger
|
||||||
|
|
||||||
|
|
||||||
|
class MaintenanceAwareTree(discord.app_commands.CommandTree):
|
||||||
|
"""CommandTree subclass that blocks non-admin users when maintenance mode is active."""
|
||||||
|
|
||||||
|
async def interaction_check(self, interaction: discord.Interaction) -> bool:
|
||||||
|
bot = interaction.client
|
||||||
|
if not getattr(bot, "maintenance_mode", False):
|
||||||
|
return True
|
||||||
|
if (
|
||||||
|
isinstance(interaction.user, discord.Member)
|
||||||
|
and interaction.user.guild_permissions.administrator
|
||||||
|
):
|
||||||
|
return True
|
||||||
|
await interaction.response.send_message(
|
||||||
|
"🔧 The bot is currently in maintenance mode. Please try again later.",
|
||||||
|
ephemeral=True,
|
||||||
|
)
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
class SBABot(commands.Bot):
|
class SBABot(commands.Bot):
|
||||||
"""Custom bot class for SBA league management."""
|
"""Custom bot class for SBA league management."""
|
||||||
|
|
||||||
@ -77,6 +96,7 @@ class SBABot(commands.Bot):
|
|||||||
command_prefix="!", # Legacy prefix, primarily using slash commands
|
command_prefix="!", # Legacy prefix, primarily using slash commands
|
||||||
intents=intents,
|
intents=intents,
|
||||||
description="Major Domo v2.0",
|
description="Major Domo v2.0",
|
||||||
|
tree_cls=MaintenanceAwareTree,
|
||||||
)
|
)
|
||||||
|
|
||||||
self.logger = logging.getLogger("discord_bot_v2")
|
self.logger = logging.getLogger("discord_bot_v2")
|
||||||
@ -86,22 +106,6 @@ class SBABot(commands.Bot):
|
|||||||
"""Called when the bot is starting up."""
|
"""Called when the bot is starting up."""
|
||||||
self.logger.info("Setting up bot...")
|
self.logger.info("Setting up bot...")
|
||||||
|
|
||||||
@self.tree.interaction_check
|
|
||||||
async def maintenance_check(interaction: discord.Interaction) -> bool:
|
|
||||||
"""Block non-admin users when maintenance mode is enabled."""
|
|
||||||
if not self.maintenance_mode:
|
|
||||||
return True
|
|
||||||
if (
|
|
||||||
isinstance(interaction.user, discord.Member)
|
|
||||||
and interaction.user.guild_permissions.administrator
|
|
||||||
):
|
|
||||||
return True
|
|
||||||
await interaction.response.send_message(
|
|
||||||
"🔧 The bot is currently in maintenance mode. Please try again later.",
|
|
||||||
ephemeral=True,
|
|
||||||
)
|
|
||||||
return False
|
|
||||||
|
|
||||||
# Load command packages
|
# Load command packages
|
||||||
await self._load_command_packages()
|
await self._load_command_packages()
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user