2438 Commits

Author SHA1 Message Date
Rapptz
b862223a1f Fix TypeError when constructing a channel in start_private_message. 2016-07-23 02:14:02 -04:00
Rapptz
1a186c5a55 [commands] Fix cooldown decorator to work regardless of order. 2016-07-22 18:37:23 -04:00
Rapptz
b13029b993 Remove unused internal code in Member. 2016-07-22 18:09:53 -04:00
Rapptz
cd0de57d13 [commands] Implement a command cooldown system.
The way the command cooldown works is using a windowed way of doing it.
That is, if we have a cooldown of 2 commands every 30 seconds then if we
do a single command, we have 30 seconds to do the second command or else
we will get rate limited. This more or less matches the common
expectations on how cooldowns should be.

These cooldowns can be bucketed up to a single dimension of depth for
a per-user, per-guild, or per-channel basis. Of course, a global bucket
is also provided. These cannot be mixed, e.g. no per-channel per-user
cooldowns.

When a command cooldown is triggered, the error handlers will receive a
an exception of type CommandOnCooldown with proper information regarding
the cooldown such as retry_after and the bucket information itself.
2016-07-22 18:05:38 -04:00
Rapptz
5010e7dc55 [commands] Add UserInputError into the exception hierarchy.
This is for exceptions that are inherently based on user errors and not
permission based. e.g. passing incorrect number of arguments, too many
arguments, or an invalid argument. CommandNotFound is not classified
under this since it isn't inherently a user input error in all cases.

Some invalid commands can simply be due to an odd bot prefix. It would
also diminish the usefulness of the new parent class if CommandNotFound
was included.
2016-07-21 23:53:16 -04:00
Rapptz
0000b2576e Fix SyntaxError in constructing VoiceState for Python 3.4
Generalised unpacking is 3.5 only.
2016-07-21 22:09:38 -04:00
Rapptz
b0f5584961 Add AppInfo.owner attribute. 2016-07-21 01:16:29 -04:00
Rapptz
3cd9f80854 Fix bug where discriminators would not update in PRESENCE_UPDATE. 2016-07-21 01:09:12 -04:00
Rapptz
d961bc4da0 Add ourselves into the ringing lookup cache. 2016-07-15 23:43:40 -04:00
Rapptz
bd39c3ef45 Add utility properties to CallMessage to query information. 2016-07-15 23:42:53 -04:00
Rapptz
1c8ab25917 Add support for querying information about group calls. 2016-07-15 22:46:00 -04:00
Rapptz
33eba31aac Fix the displaying of Message.system_content 2016-07-15 22:11:56 -04:00
Rapptz
91351a3238 Handle adding and removal of group members. 2016-07-15 22:03:22 -04:00
Rapptz
18bdd3e7dd Make PrivateChannel.__str__ more useful for groups.
Also demote is_private to a property instead of a slot.
2016-07-15 21:45:23 -04:00
Rapptz
c7f99afe7e Handle private channel CHANNEL_CREATE better. 2016-07-15 21:34:39 -04:00
Rapptz
e60047b756 Add remaining server regions to the enum. 2016-07-14 15:03:43 -04:00
Rapptz
a128249b63 Add support for different message types and call message. 2016-07-13 20:11:18 -04:00
Rapptz
69c506d7ae Handle CHANNEL_UPDATE for group direct messages. 2016-07-13 17:23:35 -04:00
Rapptz
ddd3fd0a3d Begin working on gateway v6 changes.
The first batch of changes are related to channel types and group
direct messages. Support these first so READY begins parsing.
2016-07-13 00:10:16 -04:00
Daniel
e977bddc1f Add stderr arg to create_ffmpeg_player 2016-07-08 14:48:04 -04:00
Rapptz
cd87f247d3 [commands] Make Bot.check decorator an actual decorator. 2016-07-08 04:29:11 -04:00
PapyrusThePlant
1aaeeff02b [commands] Added missing parenthesis in examples 2016-07-08 04:29:05 -04:00
PapyrusThePlant
18e77f356d Save email when login with a token on a user account 2016-07-06 17:38:41 +02:00
Rapptz
166d8257ec [commands] Refactor pagination into its own class.
This change allows users to more easily create their own formatters
without having to reinvent the pagination logic themselves. Hopefully
this makes it less of a pain for people to create custom help pages.
2016-07-05 21:44:14 -04:00
Rapptz
6f3bd7c0e6 Fix issue with removing roles out of order.
Fixes #250.
2016-07-04 08:01:57 -04:00
Rapptz
1500001b04 [commands] Fix error in converters in a private message context.
I was referencing a member function that did not actually exist. So I
ported it over to a free function that could be used.
2016-07-02 23:39:29 -04:00
Rapptz
4d71b3fe7d [commands] Do not lower-case the function name for default command names
There are some badlets out there that apparently violate PEP-8.
2016-07-01 22:12:57 -04:00
Rapptz
a2b053a517 [commands] Make GroupMixin.remove_command return None.
This is for cases where the command has been removed already. This will
make the function have a somewhat no exception guarantee.
2016-06-30 15:15:49 -04:00
Rapptz
0eccd85711 Add implicit cases to permission resolution in Channel.permissions_for 2016-06-28 20:34:03 -04:00
Rapptz
30d623cd46 Add Server.mfa_level to query a server's 2FA requirement. 2016-06-28 19:25:50 -04:00
Rapptz
d87d11c5a6 Fix voice states being overwritten after a GUILD_SYNC.
This was a two-fold problem. The first of which involved the overwriting
of members during a GUILD_SYNC. Since we are requesting a chunk anyway,
we have all the member references we need without actually chunking. The
second problem came from the order. We were doing a GUILD_SYNC and then
doing the chunking requests. We should do the GUILD_SYNC after the
chunking in order to just update presences.
2016-06-28 19:07:56 -04:00
Rapptz
3cad1aeb59 Version bump to v0.10.0 2016-06-28 01:24:55 -04:00
Hornwitser
e1f8bdc440 Make PyNaCl optional 2016-06-28 00:58:11 -04:00
Rapptz
01a46f0612 Make Message.channel_mentions unique. 2016-06-27 21:44:29 -04:00
Rapptz
e600abbbab Ignore HEARTBEAT_ACK for now to disable the noisy logging. 2016-06-27 21:32:43 -04:00
cookie
abf9be5f7d Guild Sharding support 2016-06-26 14:47:16 -04:00
Rapptz
c34eb5f6dd Document that bot users can't use Client.accept_invite 2016-06-26 14:18:47 -04:00
Rapptz
6556392a9c [commands] Fix error where consume rest would not work.
I didn't end up refactoring this piece of work out.
2016-06-23 20:17:19 -04:00
Rapptz
629c24339b [commands] Fix bug that made functions stop working as converters. 2016-06-23 18:36:41 -04:00
Harmon758
6061f83c3f Fix bug with edit_profile for user accounts 2016-06-23 13:52:42 -05:00
Rapptz
e64eb08c92 [commands] Port special cased discord converters to commands.Converter 2016-06-22 20:05:37 -04:00
Rapptz
c02d9403e6 Fix bug with Client.server_voice_state not deafening. 2016-06-22 19:39:20 -04:00
Rapptz
880ca3162e [commands] Add commands.Converter base for converts with context.
This allows users to implement converters that work similar to the ones
special cased by the `discord` classes.
2016-06-22 19:06:25 -04:00
Rapptz
a1ae8fdb10 Handle MESSAGE_DELETE_BULK. 2016-06-22 06:15:52 -04:00
Rapptz
8b3617111a Support for v5 Gateway. 2016-06-22 05:00:08 -04:00
Rapptz
c3c9db7777 Fix bug with deleting private messages.
This was due to an AttributeError occurring when getting the guild_id
from the channel. PrivateChannels do not have guild_ids so they should
be None.
2016-06-20 22:11:43 -04:00
Rapptz
324d10c9d9 [commands] Add Command.ignore_extra attribute to ignore extra arguments
This allows you to strictly require a number of arguments. The default
behaviour in this case is still `True`, since it would be a breaking
change otherwise and is a sane default. However if someone would want
to set this to `False`, they would receive an exception of type
`TooManyArguments` if too many arguments are passed to a command.

Hopefully this removes the uses of `ctx.message.content == 'stuff'`
inside commands.
2016-06-20 21:38:17 -04:00
Rapptz
102e8aca43 Raise TypeError if "after" parameter is not a callable. 2016-06-20 01:05:28 -04:00
Rapptz
adbf2c720f [commands] Add the concept of global checks.
Global checks are checks that are executed before regular per-command
checks except done to every command that the bot has registered. This
allows you to have checks that apply to every command without having to
override `on_message` or appending the check to every single command.
2016-06-19 22:15:11 -04:00
Rapptz
6f173cc095 [commands] Add delete_after keyword argument to utility functions.
This includes things like `Bot.say`, `Bot.upload`, `Bot.whisper`,
and `Bot.reply`.
2016-06-19 19:43:49 -04:00