Browse Source
[commands] fix BucketType.default bypassing dynamic_cooldown
pull/7971/head
Mikey
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
5 additions and
2 deletions
-
discord/ext/commands/core.py
-
docs/ext/commands/api.rst
|
|
@ -2315,7 +2315,7 @@ def cooldown( |
|
|
|
|
|
|
|
def dynamic_cooldown( |
|
|
|
cooldown: Union[BucketType, Callable[[Message], Any]], |
|
|
|
type: BucketType = BucketType.default, |
|
|
|
type: BucketType, |
|
|
|
) -> Callable[[T], T]: |
|
|
|
"""A decorator that adds a dynamic cooldown to a :class:`.Command` |
|
|
|
|
|
|
@ -2348,6 +2348,9 @@ def dynamic_cooldown( |
|
|
|
if not callable(cooldown): |
|
|
|
raise TypeError("A callable must be provided") |
|
|
|
|
|
|
|
if type is BucketType.default: |
|
|
|
raise ValueError('BucketType.default cannot be used in dynamic cooldowns') |
|
|
|
|
|
|
|
def decorator(func: Union[Command, CoroFunc]) -> Union[Command, CoroFunc]: |
|
|
|
if isinstance(func, Command): |
|
|
|
func._buckets = DynamicCooldownMapping(cooldown, type) |
|
|
|
|
|
@ -356,7 +356,7 @@ Checks |
|
|
|
.. autofunction:: discord.ext.commands.cooldown(rate, per, type=discord.ext.commands.BucketType.default) |
|
|
|
:decorator: |
|
|
|
|
|
|
|
.. autofunction:: discord.ext.commands.dynamic_cooldown(cooldown, type=BucketType.default) |
|
|
|
.. autofunction:: discord.ext.commands.dynamic_cooldown(cooldown, type) |
|
|
|
:decorator: |
|
|
|
|
|
|
|
.. autofunction:: discord.ext.commands.max_concurrency(number, per=discord.ext.commands.BucketType.default, *, wait=False) |
|
|
|