diff options
| author | Clement <[email protected]> | 2018-03-30 17:53:44 +0200 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2018-08-22 21:06:08 -0400 |
| commit | 00a14a46f3b40fbb6145e0875ba9fbf66205f863 (patch) | |
| tree | 4483af28939048ebf8ea006422f9487a4172e53f | |
| parent | gitignore: ignore egg-info and venvs (diff) | |
| download | discord.py-00a14a46f3b40fbb6145e0875ba9fbf66205f863.tar.xz discord.py-00a14a46f3b40fbb6145e0875ba9fbf66205f863.zip | |
[commands] Added BucketType.members for cooldowns
| -rw-r--r-- | discord/ext/commands/cooldowns.py | 5 | ||||
| -rw-r--r-- | discord/ext/commands/core.py | 1 |
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. |