File size: 1,591 Bytes
732ca45 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | # cogs/developer.py
import discord
from discord import app_commands
from discord.ext import commands
import logging
logger = logging.getLogger(__name__)
class DeveloperCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
su_dev = app_commands.Group(
name="sudev",
description="Developer God Mode Tools",
default_permissions=discord.Permissions(administrator=True)
)
@su_dev.command(name="reload", description="Hot-reload a specific cog without restarting the bot")
@app_commands.describe(cog_name="The name of the cog to reload (e.g., cogs.market)")
async def reload_cog(self, interaction: discord.Interaction, cog_name: str):
await interaction.response.defer(ephemeral=True)
try:
await self.bot.reload_extension(cog_name)
await interaction.followup.send(f"✅ Successfully hot-reloaded `{cog_name}`!")
logger.info(f"Admin {interaction.user.name} hot-reloaded {cog_name}.")
except commands.ExtensionNotLoaded:
try:
await self.bot.load_extension(cog_name)
await interaction.followup.send(f"✅ Successfully loaded new cog `{cog_name}`!")
except Exception as e:
await interaction.followup.send(f"❌ Failed to load `{cog_name}`: {e}")
except Exception as e:
logger.error(f"Failed to reload {cog_name}: {e}", exc_info=True)
await interaction.followup.send(f"❌ Error reloading `{cog_name}`: {e}")
async def setup(bot):
await bot.add_cog(DeveloperCog(bot))
|