From b7ffbca0c781ae88e2593c5ebb2a063e7d4e2253 Mon Sep 17 00:00:00 2001 From: Dan Hess Date: Tue, 6 Sep 2016 15:03:47 -0500 Subject: [PATCH] [commands] Added a method to reset command cooldown. --- discord/ext/commands/cooldowns.py | 5 +++++ discord/ext/commands/core.py | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/discord/ext/commands/cooldowns.py b/discord/ext/commands/cooldowns.py index 035ac809e..c1aa10a7c 100644 --- a/discord/ext/commands/cooldowns.py +++ b/discord/ext/commands/cooldowns.py @@ -43,6 +43,7 @@ class Cooldown: self.type = type self._window = 0.0 self._tokens = self.rate + self._last = 0.0 if not isinstance(self.type, BucketType): raise TypeError('Cooldown type must be a BucketType') @@ -72,6 +73,10 @@ class Cooldown: if self._tokens == 0: self._window = current + def reset(self): + self._tokens = self.rate + self._last = 0.0 + def copy(self): return Cooldown(self.rate, self.per, self.type) diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py index b6073b768..d60d55a8b 100644 --- a/discord/ext/commands/core.py +++ b/discord/ext/commands/core.py @@ -337,6 +337,18 @@ class Command: if retry_after: raise CommandOnCooldown(bucket, retry_after) + def reset_cooldown(self, ctx): + """Resets the cooldown on this command. + + Parameters + ----------- + ctx: :class:`Context` + The invocation context to reset the cooldown under. + """ + if self._buckets.valid: + bucket = self._buckets.get_bucket(ctx) + bucket.reset() + @asyncio.coroutine def invoke(self, ctx): ctx.command = self