aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/ext/commands/core.py30
1 files changed, 11 insertions, 19 deletions
diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py
index 79e6461d..1d044edd 100644
--- a/discord/ext/commands/core.py
+++ b/discord/ext/commands/core.py
@@ -724,18 +724,14 @@ class Command(_BaseCommand):
# first, call the command local hook:
cog = self.cog
if self._before_invoke is not None:
- try:
- instance = self._before_invoke.__self__
- # should be cog if @commands.before_invoke is used
- except AttributeError:
- # __self__ only exists for methods, not functions
- # however, if @command.before_invoke is used, it will be a function
- if self.cog:
- await self._before_invoke(cog, ctx)
- else:
- await self._before_invoke(ctx)
- else:
+ # should be cog if @commands.before_invoke is used
+ instance = getattr(self._before_invoke, '__self__', cog)
+ # __self__ only exists for methods, not functions
+ # however, if @command.before_invoke is used, it will be a function
+ if instance:
await self._before_invoke(instance, ctx)
+ else:
+ await self._before_invoke(ctx)
# call the cog local hook if applicable:
if cog is not None:
@@ -751,15 +747,11 @@ class Command(_BaseCommand):
async def call_after_hooks(self, ctx):
cog = self.cog
if self._after_invoke is not None:
- try:
- instance = self._after_invoke.__self__
- except AttributeError:
- if self.cog:
- await self._after_invoke(cog, ctx)
- else:
- await self._after_invoke(ctx)
+ instance = getattr(self._after_invoke, '__self__', cog)
+ if instance:
+ await self._after_invoke(instance, ctx)
else:
- await self._after_invoke(instance, ctx)
+ await self._after_invoke(ctx)
# call the cog local hook if applicable:
if cog is not None: