Commit Graph
100 Commits
Author SHA1 Message Date
Rapptz 60f9ac3062 Fix missing imports 2019-02-12 20:25:16 -05:00
Rapptz 5d78f43e55 Expose more information from partial invites, along with counts.
This adds the following information.

* `PartialInviteGuild` to replace `Object` patching
* `PartialInviteChannel` to replace `Object` patching
* Invite.approximate_member_count and Invite.approximate_presence_count

The new partial objects provide better documentation on what is
expected when you fetch random invites.

Fixes #1830
2019-02-12 20:22:47 -05:00
Rapptz 700dbb5555 Fix missing import. 2019-02-06 02:28:59 -05:00
Rapptz e429763dea Try to optimize for the common ASCII case.
This is still a slowdown (about 45ns to 300ns) but it's less severe
than the original implementation (about 900 to 1100ns).
2019-02-06 02:15:22 -05:00
Rapptz 7f4c57dd5a Fix overwriting of AuditLogDiff.roles for multiple $add/$remove keys 2018-12-31 08:39:28 -05:00
Rapptz dec14faea9 Log rate limit hits into WARNING instead of INFO. 2018-12-27 08:25:51 -05:00
Rapptz b79a53cae4 Fix typo in exception message in Guild.edit 2018-12-17 22:33:07 -05:00
Rapptz 648e62031d Add support for explicit_content_filter in Guild.edit 2018-12-17 18:04:32 -05:00
Rapptz 26bb6c6ddc Fix some lingering attribute setting issues. 2018-12-14 21:59:31 -05:00
Rapptz c7396dc8ac Add support for mobile indicators and per-client statuses. 2018-12-14 20:57:21 -05:00
Rapptz 93d576a65b Add support for spoiler attachments. 2018-12-14 19:09:25 -05:00
Rapptz e6a8eb1a7c Fix bug in Guild.splash_url 2018-11-26 02:04:01 -05:00
Rapptz 1f2602d11e Support discordapp.com invite URLs. 2018-11-25 04:54:12 -05:00
Rapptz 8b18fa307b Add support for default notification level in audit logs and Guild.edit 2018-11-25 01:42:33 -05:00
Rapptz 860d6a9ace Revert "Rework documentation to not duplicate inherited members."
This reverts commit 96981210b3.
2018-10-11 03:42:01 -04:00
Rapptz e12db3a25d [commands] Add call_once keyword-only parameter for Bot.remove_check
Technically a breaking change. This is to be a parallel with the
Bot.add_check interface.
2018-10-11 02:52:26 -04:00
Rapptz 1da6962580 Fix up Guild.create_custom_emoji docstring. 2018-10-03 05:45:55 -04:00
Rapptz 96981210b3 Rework documentation to not duplicate inherited members.
This will probably be reverted in 1 week.
2018-10-03 05:45:30 -04:00
Rapptz 836ae73040 Add support for AuditLogDiff.slowmode_delay. 2018-09-25 21:56:41 -04:00
Rapptz 45af0c83de [commands] Fix NameError in clean_content converter 2018-09-25 19:48:20 -04:00
Rapptz 77239e4f15 Fix NameError and duplicate insertion bug when moving roles. 2018-09-24 23:55:05 -04:00
Rapptz 54e9401a21 Update Japanese documentation strings 2018-09-24 23:42:20 -04:00
Rapptz 99b1390e5a [commands] Elaborate more on disallowed types in Greedy and Optional 2018-09-24 23:39:25 -04:00
Rapptz 2721689254 Optimise tight loops in DiscordGateway.received_message
* type(x) is y is faster than isinstance(x, y)
* Re-arrange if-statements for common statements
* Drop handler getattr for most events that don't  use it
2018-09-24 23:22:49 -04:00
Rapptz 095f0ec2fc Optimise some member and user related routines.
* Skip user update if possible
* Drop copy.copy in favour of manual copy

Credit to Hornwitser for these findings.
2018-09-24 22:50:05 -04:00
Rapptz 95d8bb2e85 Change internal representation of roles in Member and Emoji.
Introduce a new internal type, SnowflakeList, which has better memory
footprint over a regular list or set of roles. It is suspected that
there will be a 9x reduction of memory for every Emoji instance and a
48 byte saving per Member instance. However, these savings will
probably only be evident on larger bots.

As a consequence of this change, Member.roles is now computed lazily.

Currently I am not sure if I want to do the initial sorting on the
SnowflakeList for Member, as this comes with a O(n log n) cost when
creating a Member for little purpose since SnowflakeList.has is not
overly relied on. If CPU time becomes an issue this might change.
2018-09-24 22:19:42 -04:00
Rapptz 3d03dbc451 Change internal role storage in Guild to a dict instead of a list.
This adds the following APIs:

* Guild.get_role

This removes the following APIs:

* Guild.role_hierarchy

To compensate for the removed APIs, Guild.roles is now a sorted list
based on hierarchy. The first element will always be the @everyone
role.

This speeds up access at the cost of some memory, theoretically.
2018-09-24 21:08:48 -04:00
Rapptz 12cb074316 Take the default role property into account when comparing roles. 2018-09-24 20:19:47 -04:00
Rapptz 418048b98a [commands] Fix up Greedy documentation a bit. 2018-09-24 04:22:09 -04:00
Rapptz 21cb700d2c Forgot to add these images. 2018-09-24 04:06:34 -04:00
Rapptz 814b03f5a8 [commands] Add commands.Greedy converter and documentation.
This allows for greedy "consume until you can't" behaviour similar to
typing.Optional but for lists.
2018-09-24 03:56:32 -04:00
Rapptz 00a445310b [commands] Allow for backtracking parsing with typing.Optional
Original code by zephyrkul.

This new parsing mode allows for backtracking in case of failure
when a typing.Union[..., NoneType] or a typing.Optional[...] is used.
This means that if a type would fail to parse, the view is undo'd to
a previous state, passing the default parameter to the callback, and
then continuing on the next parameter as if nothing had happened.
2018-09-23 06:12:26 -04:00
Rapptz 51a03d96e0 Update Japanese string dump. 2018-09-15 09:54:32 -04:00
Rapptz 5c24e69cf2 Fix up the Sphinx strings causing warnings. 2018-09-15 09:54:00 -04:00
Rapptz 0352c80a17 Add support for Discord's slow mode.
Adds the following:

* `slowmode_delay` for `TextChannel.edit`
* `slowmode_delay` attribute for `TextChannel`
2018-09-14 22:55:29 -04:00
Rapptz fdc71695dc [commands] Use eval instead of get_type_hints to resolve typehints
The previous usage of `typing.get_type_hints` caused issues as it would
incorrectly decide to convert annotations into their equivalent
`typing` form -- which is not what we want to happen here.

Due to some use-cases about how setting `Command.callback` work and
the amount of moving parts that have changed due to this patch, it is
probably better to refactor the way it is set so users can have this
use-case handled transparently for them.
2018-08-22 23:16:52 -04:00
Rapptz aa7c5c3ec1 [commands] Ignore bots from Bot.process_commands by default. 2018-08-22 21:06:09 -04:00
Rapptz 00ee7549c9 Update new member example to not be broken.
Took forever but better late than never.
2018-08-22 21:06:09 -04:00
Rapptz 8ccb98d395 Explicitly mark event handlers private 2018-08-09 03:27:39 -04:00
Rapptz 86712c4d60 Ensure intersphinx points to the Japanese documentation. 2018-08-08 00:19:40 -04:00
Rapptz f06563cb35 Change Japanese font to Yu Gothic and Noto CJK in documentation 2018-08-01 20:46:32 -04:00
Rapptz 3dd462d5b5 Update .po files for Permissions.priority_speaker 2018-08-01 20:30:11 -04:00
Rapptz 2cbf8ec545 Don't build PDF. 2018-07-31 17:41:49 -04:00
Rapptz 18385dc49f Add stubs for Japanese translations. 2018-07-31 17:37:22 -04:00
Rapptz 8d39ab8c8c Fix dumb typo in the warning. 2018-07-24 04:48:36 -04:00
Rapptz 12236325f6 Add a warning for self-bots in Client.login
Closes #1449
2018-07-24 03:48:51 -04:00
Rapptz 8d3b2d0b70 [commands] Fix broken handling of keyword only parameters.
Had a missing `param` argument in the new `do_conversion` code.
2018-07-21 02:52:45 -04:00
Rapptz 69ca675ca0 [commands] Fix typing.Union converters for 3.7
Guido please don't break this
2018-07-20 18:01:48 -04:00
Rapptz 52767cf315 [commands] Add documentation for BadUnionArgument 2018-07-20 06:02:29 -04:00
Rapptz 34ece4d1df Bump websockets to 6.0 for 3.7 compatibility. 2018-07-20 06:00:12 -04:00
Rapptz da5776a358 [commands] Make ConversionError have the original error as an attribute 2018-07-20 05:54:51 -04:00
Rapptz 92dde9aef9 [commands] Add support for typing.Union as a converter 2018-07-20 05:51:43 -04:00
Rapptz 4aecdea052 Make TextChannel.create_webhook name parameter mandatory. 2018-07-20 04:17:28 -04:00
Rapptz 351bb1927a Fix crashing with wonky TYPING_START events.
Fixes #1439
2018-07-20 04:15:58 -04:00
Rapptz 983be10111 Fix __aiter__ compatibility with 3.7. 2018-06-29 21:51:25 -04:00
Rapptz 1538c78836 Change jump_to_url to jump_url and fix format.
People kept asking, might as well.
2018-06-29 21:50:38 -04:00
Rapptz 0ba958bae4 Bump Sphinx to 1.7.4 2018-06-21 03:45:38 -04:00
Rapptz 607771c4f4 Fix Bot.get_prefix second parameter breaking. 2018-06-10 18:41:36 -04:00
Rapptz 5ae9ea26b1 Disable compression for websockets.
Increase of RAM and CPU doesn't give me much benefit I feel.
2018-06-10 18:37:51 -04:00
Rapptz e51f92e78d Fix NameError for typing context manager.
Fixes #1342
2018-06-10 18:30:32 -04:00
Rapptz c67d95327e Remove dead package references. 2018-06-10 18:16:40 -04:00
Rapptz f25091efe1 Drop support for Python 3.4 and make minimum version 3.5.2. 2018-06-10 18:10:00 -04:00
Rapptz 7eb918b19e Add Message.jump_to_url 2018-06-10 15:25:17 -04:00
Rapptz 6b75179c1f Remove emojis from cache if they're removed from a guild. 2018-05-19 17:07:45 -04:00
Rapptz 0dafdedc65 abc.GuildChannel.set_permissions can raise NotFound.
Fix #1254
2018-05-18 20:17:49 -04:00
Rapptz 07a535f514 Document user parameter in Guild.get_ban 2018-05-08 22:03:30 -04:00
Rapptz 60f0b22cbb Filter null mentions when creating a Message. 2018-04-20 00:32:23 -04:00
Rapptz 56650ae7c2 Change raw events to use slotted data models instead of parameters.
This allows for internal changes in Discord to not cause a breaking
change every time something changes.

Also implements #1214 which adds guild_id to every event where
applicable.

This is a breaking change.
2018-04-14 02:23:38 -04:00
Rapptz e04629999b Downgrade websockets due to bugs.
https://github.com/aaugustin/websockets/issues/350 keeps causing too
many issues for too many people for this version to be used by the
public users of this library.
2018-04-09 04:14:12 -04:00
Rapptz 3cb6ac152e Userbots do not have a DM cache cap limit. 2018-04-02 00:42:14 -04:00
Rapptz 95de4d1df1 Actually fix the order in Guild.by_category. 2018-03-31 23:16:53 -04:00
Rapptz 87a7efc410 Flip comparison in Guild.by_category. 2018-03-31 22:55:42 -04:00
Rapptz 796ff6d7e6 Sort voice channels below text channels in Guild.by_category 2018-03-25 04:00:47 -04:00
Rapptz f176309179 [commands] Don't handle single quotes. 2018-03-20 03:25:40 -04:00
Rapptz eb5defed00 Fix Webhook.guild raising an AttributeError.
Fixes #1148
2018-03-16 17:59:50 -04:00
Rapptz e9916e2844 Convert Client.activity back to an Activity-like object 2018-03-06 18:13:17 -05:00
Rapptz 61c8e35929 Missing import for _ActivityTag inside Client 2018-03-06 09:10:13 -05:00
Rapptz 857e30c68e Add some documentation for the Game to Activity breaking change. 2018-03-06 01:21:25 -05:00
Rapptz d8a85f4898 [commands] Minor optimisations to unicode quote handling. 2018-03-06 01:16:00 -05:00
Rapptz 871a262ee3 [commands] Add ability to have case insensitive commands.
This is powered by a dict-like class for the people who want to opt-in
to the performance downgrade for usability for majority English
speaking users.

Since it is slower than the regular dict due to the excessive calls to
str.lower along with the possibilities of gotchas for other languages
outside of English, this is kept as False for the default case.
2018-03-06 00:37:12 -05:00
Rapptz 1590441dbf Fix typo in TextChannel.delete_messages documentation. 2018-03-06 00:19:58 -05:00
Rapptz a425bd91be Fix invalid close errors on websockets 4.x
Fixes #1110
2018-03-06 00:15:36 -05:00
Rapptz 0fcd385b9a Add ability to change the activity used when logging in at runtime. 2018-03-05 11:23:07 -05:00
Rapptz f8f8f418f3 Split Game object to separate Activity subtypes for Rich Presences.
This is a massive breaking change.

* All references to "game" have been renamed to "activity"
* Activity objects contain a majority of the rich presence information
* Game and Streaming are subtypes for memory optimisation purposes for
  the more common cases.
* Introduce a more specialised read-only type, Spotify, for the
  official Spotify integration to make it easier to use.
2018-03-05 11:15:49 -05:00
Rapptz 6782fdd34d Add missing coroutine decorator to HTTPClient.get_attachment
Fixes #1104
2018-02-26 18:55:05 -05:00
Rapptz 1c215cfbbe Don't cache webhook users.
Fixes #1101
2018-02-24 17:37:37 -05:00
Rapptz 355eb08b25 Add seek_begin keyword argument to Attachment.save 2018-02-13 05:41:10 -05:00
Rapptz 4fef6fc4b0 Fix minor typo in migrating documentation. 2018-01-22 17:34:46 -05:00
Rapptz 8de382fcd3 Change logic in PartialEmoji.__str__ a little. 2018-01-06 17:35:03 -05:00
Rapptz 30b5047b0e Fix multipart sending for RequestsWebhookAdapter to work. 2018-01-03 21:55:48 -05:00
Rapptz 6813280938 websupport is not actually a Sphinx extension apparently. 2017-12-29 06:34:06 -05:00
Rapptz e9f887aab2 Add websupport extension to extension list. 2017-12-29 06:29:59 -05:00
Rapptz 3a8b97ffb0 [commands] Document that can_run can raise. 2017-12-29 06:00:25 -05:00
Rapptz e61ac8e60f [commands] Forbid passing a string to aliases in Command.
Fixes #974
2017-12-29 01:42:45 -05:00
Rapptz 300c0f7b19 Pip version requires require all 3 digits. 2017-12-28 21:39:44 -05:00
Rapptz 5c65acd9b3 Add some dependencies for RTD. 2017-12-28 21:34:41 -05:00
Rapptz da9828c41f Use the proper endpoint for removing your own reaction. 2017-12-21 19:20:48 -05:00
Rapptz 97fc4bf651 Update Emoji.url to point to the GIF version of the animated emoji. 2017-12-21 18:55:13 -05:00
Rapptz a6bf792dec Animated emoji support. 2017-12-21 18:51:47 -05:00
Rapptz e2f7945f59 Proper variable name in Client.clear. 2017-12-20 09:45:09 -05:00