aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDice <[email protected]>2018-11-04 01:51:03 -0400
committerRapptz <[email protected]>2018-11-24 22:51:18 -0500
commit5a585ebf20fdf346fdd46af35df11cfc3dd85665 (patch)
treef1c9de21fec72b0d195e5122bea726bac46903db
parentOutline the logic of `bool` converters (diff)
downloaddiscord.py-5a585ebf20fdf346fdd46af35df11cfc3dd85665.tar.xz
discord.py-5a585ebf20fdf346fdd46af35df11cfc3dd85665.zip
Add channel category cooldown bucket type
-rw-r--r--discord/ext/commands/cooldowns.py13
-rw-r--r--discord/ext/commands/core.py1
2 files changed, 9 insertions, 5 deletions
diff --git a/discord/ext/commands/cooldowns.py b/discord/ext/commands/cooldowns.py
index 196d00fc..d44365b2 100644
--- a/discord/ext/commands/cooldowns.py
+++ b/discord/ext/commands/cooldowns.py
@@ -30,11 +30,12 @@ import time
__all__ = ['BucketType', 'Cooldown', 'CooldownMapping']
class BucketType(enum.Enum):
- default = 0
- user = 1
- guild = 2
- channel = 3
- member = 4
+ default = 0
+ user = 1
+ guild = 2
+ channel = 3
+ member = 4
+ category = 5
class Cooldown:
__slots__ = ('rate', 'per', 'type', '_window', '_tokens', '_last')
@@ -115,6 +116,8 @@ class CooldownMapping:
return msg.channel.id
elif bucket_type is BucketType.member:
return ((msg.guild and msg.guild.id), msg.author.id)
+ elif bucket_type is BucketType.category:
+ return (msg.channel.category or msg.channel).id
def _verify_cache_integrity(self):
# we want to delete all cache objects that haven't been used
diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py
index 426bd003..ffda73bc 100644
--- a/discord/ext/commands/core.py
+++ b/discord/ext/commands/core.py
@@ -1404,6 +1404,7 @@ def cooldown(rate, per, type=BucketType.default):
- ``BucketType.guild`` for a per-guild basis.
- ``BucketType.channel`` for a per-channel basis.
- ``BucketType.member`` for a per-member basis.
+ - ``BucketType.category`` for a per-category basis.
If a cooldown is triggered, then :exc:`.CommandOnCooldown` is triggered in
:func:`.on_command_error` and the local error handler.