diff --git a/jarvis/utils/updates.py b/jarvis/utils/updates.py index 7e896f1..c7ee5a8 100644 --- a/jarvis/utils/updates.py +++ b/jarvis/utils/updates.py @@ -9,6 +9,7 @@ from types import FunctionType, ModuleType from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional import git +from naff.client.errors import ExtensionNotFound from naff.client.utils.misc_utils import find, find_all from naff.models.naff.application_commands import SlashCommand from naff.models.naff.cog import Cog @@ -160,7 +161,10 @@ async def update(bot: "Client") -> Optional[UpdateResult]: bot.load_cog(module) loaded.append(module) elif len(current_commands[module]) != len(commands): - bot.reload_cog(module) + try: + bot.reload_cog(module) + except ExtensionNotFound: + bot.load_cog(module) reloaded.append(module) else: for command in commands: @@ -182,15 +186,24 @@ async def update(bot: "Client") -> Optional[UpdateResult]: # Check if number arguments have changed if len(old_args) != len(new_args): - bot.reload_cog(module) + try: + bot.reload_cog(module) + except ExtensionNotFound: + bot.load_cog(module) reloaded.append(module) elif any(x not in old_arg_names for x in new_arg_names) or any( x not in new_arg_names for x in old_arg_names ): - bot.reload_cog(module) + try: + bot.reload_cog(module) + except ExtensionNotFound: + bot.load_cog(module) reloaded.append(module) elif any(new_args[idx].type != x.type for idx, x in enumerate(old_args)): - bot.reload_cog(module) + try: + bot.reload_cog(module) + except ExtensionNotFound: + bot.load_cog(module) reloaded.append(module) return UpdateResult(