aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClement <[email protected]>2018-03-30 17:53:44 +0200
committerRapptz <[email protected]>2018-08-22 21:06:08 -0400
commit00a14a46f3b40fbb6145e0875ba9fbf66205f863 (patch)
tree4483af28939048ebf8ea006422f9487a4172e53f
parentgitignore: ignore egg-info and venvs (diff)
downloaddiscord.py-00a14a46f3b40fbb6145e0875ba9fbf66205f863.tar.xz
discord.py-00a14a46f3b40fbb6145e0875ba9fbf66205f863.zip
[commands] Added BucketType.members for cooldowns
-rw-r--r--discord/ext/commands/cooldowns.py5
-rw-r--r--discord/ext/commands/core.py1
2 files changed, 5 insertions, 1 deletions
diff --git a/discord/ext/commands/cooldowns.py b/discord/ext/commands/cooldowns.py
index e39e3034..32c4e65e 100644
--- a/discord/ext/commands/cooldowns.py
+++ b/discord/ext/commands/cooldowns.py
@@ -31,8 +31,9 @@ __all__ = ['BucketType', 'Cooldown', 'CooldownMapping']
class BucketType(enum.Enum):
default = 0
user = 1
- guild = 2
+ guild = 2
channel = 3
+ member = 4
class Cooldown:
__slots__ = ('rate', 'per', 'type', '_window', '_tokens', '_last')
@@ -111,6 +112,8 @@ class CooldownMapping:
return (msg.guild or msg.author).id
elif bucket_type is BucketType.channel:
return msg.channel.id
+ elif bucket_type is BucketType.member:
+ return ((msg.guild and msg.guild.id), msg.author.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 9604b5a3..b79f5b97 100644
--- a/discord/ext/commands/core.py
+++ b/discord/ext/commands/core.py
@@ -1321,6 +1321,7 @@ def cooldown(rate, per, type=BucketType.default):
- ``BucketType.user`` for a per-user basis.
- ``BucketType.guild`` for a per-guild basis.
- ``BucketType.channel`` for a per-channel basis.
+ - ``BucketType.member`` for a per-member basis.
If a cooldown is triggered, then :exc:`.CommandOnCooldown` is triggered in
:func:`.on_command_error` and the local error handler.