fix: Improve command registration and cleanup - Add proper command syncing - Add teardown function - Add error handling for sync operations

This commit is contained in:
pacnpal
2024-11-15 00:57:24 +00:00
parent 13be8d75de
commit 770e74d63c

View File

@@ -1,12 +1,30 @@
"""VideoArchiver cog for Red-DiscordBot"""
from redbot.core.bot import Red
from .video_archiver import VideoArchiver
from .commands import VideoArchiverCommands
async def setup(bot: Red) -> None:
"""Load VideoArchiver."""
cog = VideoArchiver(bot)
# Add cog first
await bot.add_cog(cog)
# Add commands from VideoArchiverCommands
commands_cog = VideoArchiverCommands(bot, cog.config_manager, cog.update_checker, cog.processor)
await bot.add_cog(commands_cog)
# Then sync commands after cog is loaded
if hasattr(bot, "tree"):
try:
# Only sync guild commands to avoid rate limits
await bot.tree.sync(guild=None)
except Exception as e:
# Log error but don't fail cog load
bot.log.error(f"Failed to sync commands: {str(e)}")
async def teardown(bot: Red) -> None:
"""Clean up when unloading."""
if hasattr(bot, "tree"):
try:
# Remove all commands from this cog
for command in bot.tree.get_commands():
bot.tree.remove_command(command.name)
# Sync to remove commands from Discord
await bot.tree.sync(guild=None)
except Exception as e:
# Log error but don't fail cog unload
bot.log.error(f"Failed to cleanup commands: {str(e)}")