[commands] Split Cooldown state processing to two different functions.
This allows us to check if we are rate limited without creating a new cool-down window for the command.
This commit is contained in:
		| @@ -439,13 +439,32 @@ class Command: | ||||
|  | ||||
|         if self._buckets.valid: | ||||
|             bucket = self._buckets.get_bucket(ctx) | ||||
|             retry_after = bucket.is_rate_limited() | ||||
|             retry_after = bucket.update_rate_limit() | ||||
|             if retry_after: | ||||
|                 raise CommandOnCooldown(bucket, retry_after) | ||||
|  | ||||
|         yield from self._parse_arguments(ctx) | ||||
|         yield from self.call_before_hooks(ctx) | ||||
|  | ||||
|     def is_on_cooldown(self, ctx): | ||||
|         """Checks whether the command is currently on cooldown. | ||||
|  | ||||
|         Parameters | ||||
|         ----------- | ||||
|         ctx: :class:`.Context.` | ||||
|             The invocation context to use when checking the commands cooldown status. | ||||
|  | ||||
|         Returns | ||||
|         -------- | ||||
|         bool | ||||
|             A boolean indicating if the command is on cooldown. | ||||
|         """ | ||||
|         if not self._buckets.valid: | ||||
|             return False | ||||
|  | ||||
|         bucket = self._buckets.get_bucket(ctx) | ||||
|         return bucket.get_tokens() == 0 | ||||
|  | ||||
|     def reset_cooldown(self, ctx): | ||||
|         """Resets the cooldown on this command. | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user