Browse Source

Add channel category cooldown bucket type

pull/1739/head
Dice 7 years ago
committed by Rapptz
parent
commit
5a585ebf20
  1. 13
      discord/ext/commands/cooldowns.py
  2. 1
      discord/ext/commands/core.py

13
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

1
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.

Loading…
Cancel
Save