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))