mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 20:28:38 +00:00
[commands] fix unloading incorrect cogs
unload_extension would incorrectly unload cogs/listeners of other extensions if the name of one was a prefix of another.
This commit is contained in:
parent
bca72e64d6
commit
6c01250c39
@ -88,6 +88,9 @@ _mentions_transforms = {
|
|||||||
|
|
||||||
_mention_pattern = re.compile('|'.join(_mentions_transforms.keys()))
|
_mention_pattern = re.compile('|'.join(_mentions_transforms.keys()))
|
||||||
|
|
||||||
|
def _is_submodule(parent, child):
|
||||||
|
return parent == child or child.startswith(parent + ".")
|
||||||
|
|
||||||
@asyncio.coroutine
|
@asyncio.coroutine
|
||||||
def _default_help_command(ctx, *commands : str):
|
def _default_help_command(ctx, *commands : str):
|
||||||
"""Shows this message."""
|
"""Shows this message."""
|
||||||
@ -731,12 +734,12 @@ class BotBase(GroupMixin):
|
|||||||
|
|
||||||
# remove the cogs registered from the module
|
# remove the cogs registered from the module
|
||||||
for cogname, cog in self.cogs.copy().items():
|
for cogname, cog in self.cogs.copy().items():
|
||||||
if cog.__module__.startswith(lib_name):
|
if _is_submodule(lib_name, cog.__module__):
|
||||||
self.remove_cog(cogname)
|
self.remove_cog(cogname)
|
||||||
|
|
||||||
# first remove all the commands from the module
|
# first remove all the commands from the module
|
||||||
for cmd in self.all_commands.copy().values():
|
for cmd in self.all_commands.copy().values():
|
||||||
if cmd.module.startswith(lib_name):
|
if _is_submodule(lib_name, cmd.module):
|
||||||
if isinstance(cmd, GroupMixin):
|
if isinstance(cmd, GroupMixin):
|
||||||
cmd.recursively_remove_all_commands()
|
cmd.recursively_remove_all_commands()
|
||||||
self.remove_command(cmd.name)
|
self.remove_command(cmd.name)
|
||||||
@ -745,7 +748,7 @@ class BotBase(GroupMixin):
|
|||||||
for event_list in self.extra_events.copy().values():
|
for event_list in self.extra_events.copy().values():
|
||||||
remove = []
|
remove = []
|
||||||
for index, event in enumerate(event_list):
|
for index, event in enumerate(event_list):
|
||||||
if event.__module__.startswith(lib_name):
|
if _is_submodule(lib_name, event.__module__):
|
||||||
remove.append(index)
|
remove.append(index)
|
||||||
|
|
||||||
for index in reversed(remove):
|
for index in reversed(remove):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user