Browse Source

[commands] Add special extension function 'teardown' for clean-up.

This is to support people who want to clean up some external resource
that the extension is maintaining outside of a cog, where __unload
should be used instead.

The callable is the antipode of 'setup' and takes the same sole
parameter, the bot, after all commands, events, and cogs have been
unloaded.

Fixes #405.
pull/316/merge
Rapptz 8 years ago
parent
commit
6d88024f0f
  1. 18
      discord/ext/commands/bot.py

18
discord/ext/commands/bot.py

@ -764,10 +764,20 @@ class Bot(GroupMixin, discord.Client):
for index in reversed(remove):
del event_list[index]
# finally remove the import..
del lib
del self.extensions[name]
del sys.modules[name]
try:
func = getattr(lib, 'teardown')
except AttributeError:
pass
else:
try:
func(bot)
except:
pass
finally:
# finally remove the import..
del lib
del self.extensions[name]
del sys.modules[name]
# command processing

Loading…
Cancel
Save