aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/ext/commands/cooldowns.py5
-rw-r--r--discord/ext/commands/core.py12
2 files changed, 17 insertions, 0 deletions
diff --git a/discord/ext/commands/cooldowns.py b/discord/ext/commands/cooldowns.py
index 035ac809..c1aa10a7 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 b6073b76..d60d55a8 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