Commit Graph
100 Commits
Author SHA1 Message Date
Rapptz 79a49f9145 Absolute import some circular dependencies to appease Python 3.4. 2017-01-03 09:52:02 -05:00
Rapptz a1c81419b7 Rename MessageChannel.send_message to send and unify interface.
This removes MessageChannel.upload.
2017-01-03 09:52:01 -05:00
Rapptz 30394d03f2 Remove no longer used functions in Client. 2017-01-03 09:52:00 -05:00
Rapptz 802f6c91d4 Add Message.clear_reactions 2017-01-03 09:52:00 -05:00
Rapptz 2c50c18ca3 Change dict value views into lists. 2017-01-03 09:51:59 -05:00
Rapptz c205eb3528 Re-add support for embeds. 2017-01-03 09:51:58 -05:00
Rapptz 42891c3084 Make Message.embeds to be based on discord.Embed 2017-01-03 09:51:58 -05:00
Rapptz c187d87dae Re-add support for reactions.
We now store emojis in a global cache and make things like adding
and removing reactions part of the stateful Message class.
2017-01-03 09:51:57 -05:00
Rapptz 59a0df5f98 Rename try_insert_user to store_user 2017-01-03 09:51:56 -05:00
Rapptz 5cb3ad14e8 Make emojis and members stateful. 2017-01-03 09:51:55 -05:00
Rapptz a7a60e433b Make roles and guilds stateful. 2017-01-03 09:51:55 -05:00
Rapptz d1d54a468a Rename Server to Guild everywhere. 2017-01-03 09:51:54 -05:00
Rapptz f33eaa4a61 Stateful Message and remove Invite.xkcd since it is removed. 2017-01-03 09:51:53 -05:00
Rapptz 1070cf0735 Add MessageChannel.typing context manager for prolonged typing. 2017-01-03 09:51:52 -05:00
Rapptz 53ab263125 Split channel types.
This splits them into the following:

* DMChannel
* GroupChannel
* VoiceChannel
* TextChannel

This also makes the channels "stateful".
2017-01-03 09:51:52 -05:00
Rapptz 20251c54a7 [commands] Bot skip check now works with the new __eq__ changes. 2017-01-03 09:51:51 -05:00
Rapptz e4b16851bf Slots use tuples instead now. 2017-01-03 09:51:50 -05:00
Rapptz b9dafe375f Add some basic ABCs. 2017-01-03 09:51:50 -05:00
Rapptz 45c729b167 Switch IDs to use int instead of str 2017-01-03 09:51:49 -05:00
Rapptz aa8a328f0a Remove Message.timestamp and make Message.channel_mentions lazy.
Message.timestamp is replaced with Message.created_at. This commit
also affects how MESSAGE_UPDATE is handled by only assuming that two
keys are provided rather than overwriting data with missing keys.
2017-01-03 09:51:48 -05:00
Rapptz 31229a53e9 Optimise VoiceState for memory.
Instead of storing one VoiceState per Member, only store them if
necessary. This should bring down the number of instances
significantly.
2017-01-03 09:51:47 -05:00
Rapptz 044b0824e6 Begin working on the rewrite. 2017-01-03 09:51:47 -05:00
Rapptz a8264f6540 Chunk every guild if it's a user bot.
This also increases the timeout for chunking by 30 seconds for every
chunk we're waiting for.
2016-12-24 17:32:20 -05:00
Rapptz 4d59bca4aa Support animated avatars in User.avatar_url. 2016-12-23 00:43:19 -05:00
Rapptz bed2e90e82 Properly propagate loop. Fixes #420. 2016-12-21 00:06:19 -05:00
Rapptz 5731f3405d Version bump to v0.16.0. 2016-12-19 17:53:41 -05:00
Rapptz 00e30f3106 [commands] Shield against dictionary resize in Bot.close 2016-12-17 21:18:48 -05:00
Rapptz fc1a7183a0 [commands] Unload all cogs when gracefully exiting bot. 2016-12-17 14:47:29 -05:00
Rapptz b8909ae389 [commands] Properly propagate CommandError derived exceptions.
If a command or a group raised a CommandError derived exception it
would be wrapped into CommandInvokeError. This fixes this case so it
raises the original exception instead.
2016-12-17 14:44:36 -05:00
Rapptz 6d88024f0f [commands] Add special extension function 'teardown' for clean-up.
This is to support people who want to clean up some external resource
that the extension is maintaining outside of a cog, where __unload
should be used instead.

The callable is the antipode of 'setup' and takes the same sole
parameter, the bot, after all commands, events, and cogs have been
unloaded.

Fixes #405.
2016-12-17 14:15:11 -05:00
Rapptz bafaf72c89 [commands] Unload all extensions when gracefully closing bot. 2016-12-17 14:15:10 -05:00
Rapptz c7946606f4 Add Channel.overwrites to get a channel's permission overwrites.
Fixes #414.
2016-12-17 14:00:34 -05:00
Rapptz 6302ef8094 Add support for partnered servers. Fixes #387.
This commit allows you to edit a server's invite splash, query if
something has partnered features, and retrieve the invite splash + URL.
2016-12-17 13:34:19 -05:00
Rapptz a0f4ad36eb Timeout waiting for chunking.
Sometimes the bot would keep waiting for chunks that somehow finished
before getting to the `wait` call. This is more so a temporary fix
rather than a fully correct one.
2016-12-16 21:28:12 -05:00
Rapptz 6306fc08db Discard null sequences in the gateway.
This was forbidding the Discord gateway from allowing us to RESUME
properly, causing an over-abundance of READY being called.
2016-12-16 18:29:29 -05:00
Rapptz 51fda76555 Fix typo in wait_for_reaction documentation. 2016-12-07 07:23:12 -05:00
Rapptz b7c90a5e3d Fix role comparisons.
Fixes #409
2016-12-02 01:28:54 -05:00
Rapptz 14a1bbceda Make FAQ use change_presence instead of change_status. 2016-11-30 17:08:55 -05:00
Rapptz 64733c0b19 Version bump to v0.15.1 2016-11-30 17:05:29 -05:00
Rapptz 59d17e4137 Version bump to v0.15.0 2016-11-22 19:59:28 -05:00
Rapptz 6f2603c049 [commands] Remove slots on Context.
This is to allow people to set temporary local variables by injecting
them directly into the context via some decorator or some other
mechanism. Contexts are not kept alive long enough to warrant being
slotted.
2016-11-22 19:57:19 -05:00
Rapptz c4ee4c1db4 Make discord.Embed builder more strict and easier to use.
Allow for easier use when trying to "reuse" the same discord.Embed
object by providing new methods such as Embed.clear_fields,
Embed.set_field_at, and allowing you to set things to Embed.Empty to
clear out an attribute.

For ease of use, things are automatically casted to ``str`` to prevent
the user from having HTTP 400 errors if they forgot to do so. The new
embed builder also supports "fluent-style" interface to allow you to
chain methods in a single line if necessary.

Certain parameters were removed since they were ignored by Discord
anyway such as `width` and `height` in Embed.set_image and
Embed.set_thumbnail.
2016-11-22 19:30:21 -05:00
Rapptz fb1f9ac659 Add PermissionOverwrite.is_empty to query empty state of an overwrite.
Fixes #382
2016-11-21 03:12:44 -05:00
Rapptz 7ff7b0fb9c Add Permissions.update and PermissionOverwrite.update for bulk edits.
This should satisfy those that have a one-line obsession and make things
a little bit easier if you have a dict.
2016-11-21 03:08:03 -05:00
Rapptz 92c3c2804d Support MESSAGE_REACTION_REMOVE_ALL event. 2016-11-21 02:49:50 -05:00
Rapptz e8905fd41b Add missing bucket for endpoints. 2016-11-17 21:07:54 -05:00
Rapptz 44624b7f44 Documentation fixes. 2016-11-17 20:42:06 -05:00
Rapptz 18178c26aa Add support for clearing a message's reactions. 2016-11-17 20:37:33 -05:00
Rapptz 4c1fd2c9b1 Add atomic add and remove role endpoints to HTTPClient.
These are currently unused since their use is pretty limited.
2016-11-17 20:27:43 -05:00
Rapptz a312f21bc3 Support message editing with rich embeds. 2016-11-13 22:12:16 -05:00
Rapptz af46718460 Add support for rich embeds. 2016-11-13 05:07:58 -05:00
Rapptz a7ba0bb7c4 Version bump to v0.14.3 2016-11-06 01:04:50 -04:00
Rapptz ae796e0d01 Change buckets for reactions. 2016-11-06 01:03:57 -04:00
Rapptz 4fa1349869 Version bump to v0.14.2 2016-11-04 00:14:07 -04:00
Rapptz edcd1750c9 Make Client.wait_for_reaction return a namedtuple instead.
Also fix a bug in the case that emoji parameter is `None`.
2016-11-04 00:02:25 -04:00
Rapptz f56dbb0379 Fix Reaction not importing.
Also bump version to v0.14.1
2016-11-03 22:28:18 -04:00
Rapptz e68e3f955d Forgot the v0.14.0 heading in the docs. 2016-11-03 22:00:45 -04:00
Rapptz 0e856494ed Version bump to v0.14.0 2016-11-03 21:52:21 -04:00
Rapptz 0e8a92cbac Add Client.wait_for_reaction to wait for a reaction from a user. 2016-11-03 21:44:24 -04:00
Rapptz 12a3403af3 Change reaction events signature and name.
This changes the event signature to be (reaction, user) instead of
(message, reaction, user) since the reaction data class already has
the message being reacted to as a member.

The name was shortened from on_message_reaction_ to on_reaction_ since
the message prefix was deemed redundant.
2016-11-03 20:16:39 -04:00
Rapptz 14def4b68e Fix Member.server_permissions docstring. 2016-10-04 18:55:34 -04:00
Rapptz b39de025c5 Add support for new Manage Webhooks permission. 2016-10-03 00:35:36 -04:00
Rapptz 18a9b75990 Fix Permissions.manage_emojis bit being incorrect. 2016-09-29 18:32:47 -04:00
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