Commit Graph
100 Commits
Author SHA1 Message Date
Rapptz 2927e5fd39 Fix URL pointing to better method in Client.change_status 2016-09-27 01:32:45 -04:00
Rapptz 1a624cd037 Version bump to v0.13.0 2016-09-26 23:32:33 -04:00
Rapptz 7c0be1cade [commands] Raise exception if Paginator gets a line that is too big.
Fixes #340
2016-09-26 23:26:26 -04:00
Rapptz 5d8d3ab43a Add Permissions.manage_emojis 2016-09-26 23:02:44 -04:00
Rapptz 9322bc78be Add the ability to add, delete, and edit custom emoji. 2016-09-26 23:02:28 -04:00
Rapptz 7272190e2d Add support for "Do Not Disturb" and "Invisible" statuses.
This deprecates Client.change_status in favour of the newer and more
correct Client.change_presence.
2016-09-26 19:55:42 -04:00
Rapptz fc1155c160 Remove unused endpoints.py file. 2016-09-25 21:54:38 -04:00
Rapptz 1987cd10df Version bump to v0.12.0 2016-09-25 19:16:19 -04:00
Rapptz 9fddcf0a21 Update What's New page with v0.12.0 changes. 2016-09-25 19:15:48 -04:00
Rapptz 83d3b72566 Document undocumented Server.voice_client property. 2016-09-25 19:00:29 -04:00
Rapptz 6fec17d7d4 Catch Player errors and gracefully stop them.
This also introduces the concept of the after function taking a single
parameter, the current player. This is useful for error handling, e.g.
checking Player.error.

Fixes #291
2016-09-25 05:27:35 -04:00
Rapptz 96ca7cafee Add Client.get_user_info to retrieve a User from ID. 2016-09-25 04:40:31 -04:00
Rapptz 7a2b944b72 Fix 404'd FAQ links. 2016-09-25 03:58:43 -04:00
Rapptz 625ed18cff Add Member.server_permissions to calculate server permissions. 2016-09-21 04:50:22 -04:00
Rapptz 5e20b468c1 Add Server.role_hierarchy to get the current role hierarchy. 2016-09-21 04:22:13 -04:00
Rapptz 13f85b3292 Make Roles totally ordered.
This also fixes a bug with Member.top_role that chose the wrong role
should they have the same position.
2016-09-21 04:22:12 -04:00
Rapptz 09e77e548a Upgrade requirements to stable aiohttp.
Also lighten up on websockets requirements.
2016-09-20 23:08:41 -04:00
Rapptz 967d43c35b [commands] Allow coroutine functions in Bot.command_prefix 2016-09-17 15:01:56 -04:00
Rapptz 203c64a9a4 Add support for server verification levels.
This adds a new enum named VerificationLevel to denote said verification
level. This enum will also be used in the Client.edit_server calls
instead of the undocumented int parameter.
2016-09-12 22:38:06 -04:00
Rapptz 713037836c Document new MessageType.pins_add 2016-09-12 20:25:32 -04:00
Rapptz da986b2d7c Support for pinned system messages. 2016-09-12 20:22:53 -04:00
Rapptz 1a0182e6eb Fix import for Object.created_at 2016-09-10 23:06:02 -04:00
Rapptz 26f5bcd725 Fix bug when permission overwrites could be applied out of order.
The bug was due to the fact that the way overwrites work is by doing
a loop of all the values and then applying deny first and then allow.
That way the overwrite is defined if role A and role B deny a
permission but role C allows it (and said member has A, B, C roles)
then the resolution should allow it rather than deny it regardless of
the order of the data it is received in.
2016-09-10 16:11:52 -04:00
Rapptz bca6b2a133 Fix bug that disallowed ServerRegion from being used in edit_server. 2016-09-09 19:24:21 -04:00
Rapptz 8384edb061 Add new EU Central and EU West server regions. 2016-09-09 19:23:55 -04:00
Rapptz 152b3a1125 [commands] Default converters now take in IDs to match against. 2016-09-09 06:53:22 -04:00
Rapptz b0509a6910 [commands] Cooldowns don't trigger due to user usage error.
Fixes #325
2016-09-08 07:13:22 -04:00
Rapptz a23e51f6c4 Fix gateway code to work with websockets 3.2. 2016-08-25 17:09:34 -04:00
Rapptz 0b6e74ebec Ensure that keep alive threads are closed when a websocket closes.
The library worked with the assumption that whenever the recv call for
the websocket would lead to a closure, the close method would be called
to signal closure and as a result our close method would be called.

This assumption turned out to be false as the websockets library would
instead call an internal function named close_connection instead. So to
solve our problem we need to override this function instead of close.
2016-08-21 11:45:41 -04:00
Rapptz dd8c32ceff Remove download stats badge. 2016-08-14 19:28:14 -04:00
Rapptz b1da659374 Document that Client.get_channel works with PrivateChannel too. 2016-08-14 16:53:43 -04:00
Rapptz b2808b2abd Document what it means that an object is not edited in-place explicitly
This seems to be a very common question regarding the docs so might as
well document exactly what this means rather than using cryptic and
confusing wording.
2016-08-14 13:52:08 -04:00
Rapptz 83c7ba612e Explain cases where the on_message_edit event can be triggered. 2016-08-14 13:42:39 -04:00
Rapptz 1e9251cfef [commands] Delete module when it does not have a setup function. 2016-08-10 15:11:45 -04:00
Rapptz a55e1241a7 [commands] Add missing inspect import in converter.py 2016-08-04 21:39:44 -04:00
Rapptz 45083a6f15 Document the new emoji stuff. 2016-08-01 18:52:34 -04:00
Rapptz fd3d775271 Version bump to v0.11.0 2016-07-30 14:02:12 -04:00
Rapptz cfca7eb1f8 Rename Permissions.change_nicknames to change_nickname to match UI.
This is a breaking change.
2016-07-30 13:11:16 -04:00
Rapptz 0c95edab8c Handle receiving HEARTBEAT opcode. 2016-07-30 13:03:22 -04:00
Rapptz 667d2b384b Add functions to query and actually prune members from a server. 2016-07-29 14:40:30 -04:00
Rapptz feeff2b848 Clarify that Client.purge_from requires Manage Messages for anything. 2016-07-29 09:59:28 -04:00
Rapptz fbd628fae3 Fix KeyError when creating private channels in start_private_message.
I was not passing the full updated v6 payload.
2016-07-25 06:16:22 -04:00
Rapptz ad226f2020 Add new External Emojis permission. 2016-07-24 07:56:48 -04:00
Rapptz 66875fbb0a Document VoiceState class. 2016-07-24 04:54:00 -04:00
Rapptz b0e5357716 Fix voice state update issue in on_voice_state_update
Bug was caused to the shallow copy not copying over the VoiceState
information embedded into the copy. This would mean that when the event
is called, before and after voice state information is essentially
equivalent.

The solution to fix this is to also copy the VoiceState objects.
2016-07-23 05:18:56 -04:00
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
Rapptz cd87f247d3 [commands] Make Bot.check decorator an actual decorator. 2016-07-08 04:29:11 -04: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
Rapptz e68e167048 Update installation instructions. 2016-06-28 01:18:44 -04:00
Rapptz 4c1b8d1de1 Add PyNaCl to setuptool's extras requirements. 2016-06-28 00:59:12 -04:00
Rapptz 197e52994e Update whats new page a little bit to say the changelog is too big. 2016-06-27 23:54:00 -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
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
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 e2e6d7182e Add FAQ entry for after being called right away. 2016-06-20 00:59:30 -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
Rapptz 6b4d22ce81 Clarify that Client.logs_from can take a PrivateChannel too. 2016-06-18 02:15:36 -04:00
Rapptz b3edb31df5 Add support for message pinning.
This includes `Client.pin_message`, `Client.unpin_message` and
`Client.pins_from`. This also adds the `Message.pinned` attribute
to the `Message` object.
2016-06-18 02:14:44 -04:00
Rapptz 4d375fc856 Fix HTTPClient.recreate to actually work.
Forgot a keyword argument.
2016-06-18 01:43:57 -04:00
Rapptz e19244b041 Add Member.top_role property to get the highest role. 2016-06-18 01:37:45 -04:00
Rapptz 07607060c1 Fix Colour.__str__ to actually pad zeroes. 2016-06-16 22:49:34 -04:00
Rapptz 92fe4daa86 Attempt resume when we receive a 1001. 2016-06-16 19:13:13 -04:00
Rapptz 183e7341f6 [commands] Add Context.cog property. 2016-06-16 05:42:28 -04:00