Browse Source

[commands] Add deterministic cog unloading.

The special function is `__unload` to prevent with name conflicts with
existing or future cogs.
pull/145/head
Rapptz 9 years ago
parent
commit
82b2421ac7
  1. 10
      discord/ext/commands/bot.py

10
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

Loading…
Cancel
Save