diff --git a/discord/ext/commands/bot.py b/discord/ext/commands/bot.py index d8bc6cfb3..9b4e44ef2 100644 --- a/discord/ext/commands/bot.py +++ b/discord/ext/commands/bot.py @@ -462,6 +462,10 @@ class Bot(GroupMixin, discord.Client): If no cog is found then ``None`` is returned, otherwise the cog instance that is being removed is returned. + If the cog defines a special member function named ``__unload`` + then it is called when removal has completed. This function + **cannot** be a coroutine. It must be a regular function. + Parameters ----------- name : str @@ -485,6 +489,12 @@ class Bot(GroupMixin, discord.Client): if name.startswith('on_'): self.remove_listener(member) + unloader_name = '_{0.__class__.__name__}__unload'.format(cog) + try: + getattr(cog, unloader_name)() + except AttributeError: + pass + del cog # extensions