diff options
| author | Rapptz <[email protected]> | 2016-12-17 14:13:05 -0500 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2016-12-17 14:15:11 -0500 |
| commit | 6d88024f0f7bb8e0f4d0549ed312676f575629b0 (patch) | |
| tree | e62aa88baee23e3ce07d3eb5340ed639d212a016 | |
| parent | [commands] Unload all extensions when gracefully closing bot. (diff) | |
| download | discord.py-6d88024f0f7bb8e0f4d0549ed312676f575629b0.tar.xz discord.py-6d88024f0f7bb8e0f4d0549ed312676f575629b0.zip | |
[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.
| -rw-r--r-- | discord/ext/commands/bot.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/discord/ext/commands/bot.py b/discord/ext/commands/bot.py index 9025493d..1aa4133d 100644 --- a/discord/ext/commands/bot.py +++ b/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 |