Commit Graph
100 Commits
Author SHA1 Message Date
Rapptz d60689a983 Properly change abc.User.avatar type to Asset 2021-04-25 23:30:30 -04:00
Rapptz c250b9fc02 [commands] Fix regression with Union converters not working
This was due to the Literal restriction from earlier.
2021-04-24 09:33:35 -04:00
Rapptz 185b554a56 [commands] Disallow complicated Literal types 2021-04-24 09:12:28 -04:00
Rapptz fb024546ff [commands] Fix Literal converter not working within flags 2021-04-24 08:55:55 -04:00
Rapptz 1c312a158a [commands] Add FlagConverter.__iter__ 2021-04-24 08:53:36 -04:00
Rapptz 8e9860077d [commands] Fix flag detection code in get_flags 2021-04-23 02:23:07 -04:00
Rapptz 275a754abd Add support for editing message attachments 2021-04-21 23:45:06 -04:00
Rapptz 6065329c0e [commands] Avoid creating unnecessary flag mapping copies 2021-04-20 08:02:40 -04:00
Rapptz 15bfdf66b2 [commands] Default construct flags if they're not passed as parameters
This only applies if and only if the flag can be default constructible.
Ergo, all the flags are optional or not required.
2021-04-20 08:00:47 -04:00
Rapptz ac7588f735 Fix some typings in utils 2021-04-20 04:35:53 -04:00
Rapptz 212d308835 [commands] Some minor clean up of the flag converter documentation
Fix #6761
2021-04-19 22:52:29 -04:00
Rapptz 18bf3d3a7d [commands] Actually expose the FlagError base error 2021-04-19 10:27:24 -04:00
Rapptz ddb71e2aed [commands] Initial support for FlagConverter
The name is currently pending and there's no command.signature hook
for it yet since this requires bikeshedding.
2021-04-19 10:25:08 -04:00
Rapptz 1c64689807 Remove lingering User.avatar documentation 2021-04-19 05:35:33 -04:00
Rapptz c54e43360b [commands] Add run_converters helper to call converters 2021-04-19 04:46:02 -04:00
Rapptz 09f3f2111c [commands] Add Context.current_parameter 2021-04-19 04:41:32 -04:00
Rapptz 3c8d3ab078 Add a third overload to parse_time
Apparently this behaviour is intended in Pyright
https://github.com/microsoft/pyright/issues/1772

Despite mypy behaving as intended.
2021-04-19 02:12:41 -04:00
Rapptz bee6402d84 Fix utils.find predicate typing to accept Any 2021-04-19 02:11:38 -04:00
Rapptz 417353da4d Fix up _unique and valid_icon_size implementations 2021-04-18 09:07:26 -04:00
Rapptz b35596f7c8 Add typings for discord.utils 2021-04-18 08:43:09 -04:00
Rapptz cc4dced7c0 Cleanup some of the prior typings for cached_slot_property 2021-04-18 08:07:11 -04:00
Rapptz 7fb746e6e5 [commands] Refactor evaluation functions to allow passing in localns 2021-04-18 04:10:19 -04:00
Rapptz c2afa984ff Use f-strings for attributetable 2021-04-17 19:40:40 -04:00
Rapptz fdf81089b5 Add inherited members to (Partial)Emoji docs 2021-04-17 19:40:40 -04:00
Rapptz fed259a83b Refactor save() and read() into AssetMixin 2021-04-17 00:56:38 -04:00
Rapptz f6fcffbab5 Use default allowed_mentions in Message.edit
Fix #6745
2021-04-16 23:00:18 -04:00
Rapptz 6ba3d89076 Revert Attachment.save code to prior implementation 2021-04-16 11:38:56 -04:00
Rapptz 9eaf1e85e4 Rewrite Asset design
This is a breaking change.

This does the following transformations, assuming `asset` represents
an asset type.

Object.is_asset_animated() => Object.asset.is_animated()
Object.asset => Object.asset.key
Object.asset_url => Object.asset_url
Object.asset_url_as => Object.asset.replace(...)

Since the asset type now requires a key (or hash, if you will),
Emoji had to be flattened similar to how Attachment was done since
these assets are keyed solely ID.

Emoji.url (Asset) => Emoji.url (str)
Emoji.url_as => removed
Emoji.url.read => Emoji.read
Emoji.url.save => Emoji.save

This transformation was also done to PartialEmoji.
2021-04-16 11:27:23 -04:00
Rapptz a30ec197c2 Some initial response typings 2021-04-16 08:02:19 -04:00
Rapptz 90d59bb06c Fix overloads on Webhook.send to not require wait kwarg 2021-04-15 19:36:36 -04:00
Rapptz 0542b129c2 Fix WebhookMessage.edit documentation 2021-04-15 09:03:46 -04:00
Rapptz 1f74b051a8 Fix rate limit handling with retry_after precision change 2021-04-15 08:34:58 -04:00
Rapptz a6f7213c89 Rewrite webhooks to play better with typings and rate limits
This unfortunately required splitting the types into two. This led to
a lot of unfortunate code duplication that I didn't really enjoy
writing.

The new design allows users to pass an authentication token to make
webhook requests without the webhook token and allows to finally
edit the webhook channel.

The new design also uses a contextvar to store rate limiting
information so multiple instances or recreating instances no longer
clears the ratelimiting state since it's now essentially a "global"
object.

Closes #6525, closes #6662, closes #2509, closes #1761
2021-04-15 08:04:32 -04:00
Rapptz da6119e04c Fix fail_if_not_exists not being set when constructed with state 2021-04-14 00:50:37 -04:00
Rapptz a8da7d03b9 Remove AutoShardedClient.request_offline_members 2021-04-12 05:28:18 -04:00
Rapptz ef4394f87d Add support for role objects in GuildChannel.permissions_for 2021-04-11 22:45:49 -04:00
Rapptz 1209585de5 Remove User.permissions_in
This seemed to only cause confusion.
2021-04-11 22:21:36 -04:00
Rapptz a8b3cfa592 Remove comment that doesn't apply anymore 2021-04-11 22:20:31 -04:00
Rapptz 9b94fe1ce0 Remove superfluous unused payload parameter 2021-04-11 22:13:48 -04:00
Rapptz 7bdaa793f6 Create temporary DMChannels from message create events
This allows for DMChannels to work without falling back to the
Object error case since there is enough information to build a pseudo
DMChannel object.

This is a breaking change since it changes the type of
DMChannel.recipient to Optional[User] for when this faux object is
created.
2021-04-11 22:09:10 -04:00
Rapptz 74b07a3218 [commands] Fix Command.clean_params to return a regular dict 2021-04-11 16:30:28 -04:00
Rapptz 74d8ad2013 [commands] Add support for Python 3.10 Union typing 2021-04-11 02:11:24 -04:00
Rapptz 1ecadf057e [commands] Fix errors with cooldown mappings 2021-04-11 01:00:04 -04:00
Rapptz 7d79b4ba55 Remove Member related handling in PRESENCE_UPDATE 2021-04-11 00:57:59 -04:00
Rapptz 217c2a1cc5 Fix stray AttributeError in Guild._from_data with member cache 2021-04-11 00:44:27 -04:00
Rapptz 40cf397ce6 Permission related fixes for v8 2021-04-11 00:39:13 -04:00
Rapptz 7afcacc9a1 Remove MemberCacheFlags.online
v8 no longer gives enough data for this to be possible
2021-04-11 00:39:13 -04:00
Rapptz d85805ab6d First pass at supporting v8 API 2021-04-11 00:39:13 -04:00
Rapptz 3151672cfe [commands] Refactor typing evaluation to not use get_type_hints
get_type_hints had a few issues:

1. It would convert = None default parameters to Optional
2. It would not allow values as type annotations
3. It would not implicitly convert some string literals as ForwardRef

In Python 3.9 `list['Foo']` does not convert into
`list[ForwardRef('Foo')]` even though `typing.List` does this
behaviour. In order to streamline it, evaluation had to be rewritten
manually to support our usecases.

This patch also flattens nested typing.Literal which was not done
until Python 3.9.2.
2021-04-10 20:56:08 -04:00
Rapptz 27886e5aa4 [commands] Remove legacy ExtensionNotFound.original attribute 2021-04-10 15:52:53 -04:00
Rapptz d5ad269b35 Fix Intents resolution in the docs 2021-04-10 15:50:46 -04:00
Rapptz 42c3ee6eed Bring back discord module in discord.ext.commands documentation 2021-04-10 15:49:39 -04:00
Rapptz 8e299e80f8 Update Sphinx to 3.5.3 2021-04-10 15:33:15 -04:00
Rapptz 296bd069c1 Remove current module reference in commands API docs 2021-04-10 14:59:26 -04:00
Rapptz ea32147d02 Fix all warnings with Sphinx 2021-04-10 03:27:40 -04:00
Rapptz d58edd10a7 Add missing future annotations import 2021-04-10 03:23:47 -04:00
Rapptz d38ef88686 Update issue templates to newest versions 2021-04-08 22:51:20 -04:00
Rapptz ca84d4e2b6 [types] Snowflake can be either str or int. 2021-04-08 22:17:26 -04:00
Rapptz 9da2f349e7 Use Any instead of str for Embed typings for accuracy 2021-04-08 20:12:08 -04:00
Rapptz 99fc950510 Use f-strings in more places that were missed. 2021-04-08 06:02:47 -04:00
Rapptz e405bd5f1f Add discord.types.Message.interaction attribute 2021-04-08 02:29:14 -04:00
Rapptz a31c19563f Add interaction related typings 2021-04-08 02:12:55 -04:00
Rapptz 249d94a011 Add AllowedMentions typings 2021-04-08 02:06:19 -04:00
Rapptz d299bfef26 Fix up typings for attachment and message 2021-04-08 01:56:23 -04:00
Rapptz e895a53713 [commands] Add StageChannelConverter to documentation 2021-04-08 00:44:47 -04:00
Rapptz a9d5c0aa3b Fix headers in partial webhook channel and guild objects 2021-04-07 06:37:09 -04:00
Rapptz b818296c21 Remove type hints from generated docs 2021-04-07 06:35:29 -04:00
Rapptz f49d565d51 Rename discord.types file based on relevant core module file 2021-04-07 05:50:54 -04:00
Rapptz 23fe6b46dd Typehint discord.Embed and introduce discord.types subpackage
The discord.types subpackage is currently only used to do type hinting
of API payloads, it's very much incomplete right now and it'll be a
rather long process.

discord.Embed was typehinted and formatted using black.
2021-04-07 05:39:58 -04:00
Rapptz f80b8d3f5d [commands] Only replace annotation if one was given 2021-04-07 03:17:36 -04:00
Rapptz ed1341012b Add Embed.__bool__
Fixes #6661
2021-04-07 00:01:57 -04:00
Rapptz 1d5805ebcb Revert "Remove unused group functionality"
This reverts commit d69b2f0af5.
2021-04-07 00:01:57 -04:00
Rapptz 72275a73fa Use non-underscore TypeVar in enum code 2021-04-06 07:35:02 -04:00
Rapptz 7e3c5f3faf Fix some regressions from create_task change 2021-04-06 07:31:31 -04:00
Rapptz d69b2f0af5 Remove unused group functionality 2021-04-06 07:12:15 -04:00
Rapptz 84e2ff0bc7 Reformat HTTPClient and add interaction endpoints 2021-04-06 05:25:50 -04:00
Rapptz 008432c76a Make enum code work with typecheckers
This also makes it so invalid enum values fall back to a proxy type
that still works similar to actual values.
2021-04-06 01:11:36 -04:00
Rapptz 8cece19b22 Add on_interaction event and Interaction class.
This is the first pass at the functionality. It's currently a bit
incomplete.
2021-04-06 01:11:36 -04:00
Rapptz 1e7f139313 Add support for setting application_id 2021-04-06 01:11:36 -04:00
Rapptz 9ab58d302d [commands] Fix classmethod converters not working.
Protocols sure are annoying.
2021-04-05 23:52:28 -04:00
Rapptz ee5bb07c02 [commands] Revert conversion code back to how it was originally 2021-04-05 23:24:47 -04:00
Rapptz 8da6b47a36 Update changelog for v1.7.1 2021-04-05 21:39:35 -04:00
Rapptz 6d74514729 [commands] Fix logic in Cog.has_error_handler() 2021-04-05 21:39:22 -04:00
Rapptz a3a6f88936 Add discord.utils.utcnow() helper function to ease migration 2021-04-04 23:59:04 -04:00
Rapptz 93a92e6e1b Remove special casing of MAX_ASYNCIO_SECONDS in sleep_until
This compatibility code goes away in Python versions greater than 3.7
2021-04-04 23:55:15 -04:00
Rapptz ff7094ce96 Convert datetimes to aware datetimes with UTC.
Naive datetimes will now be interpreted as local time throughout
the library.
2021-04-04 23:54:08 -04:00
Rapptz fd58371f53 Remove some lingering userbot classes in the documentation 2021-04-04 20:05:19 -04:00
Rapptz 7ba437cece Use 3.8 for ReadTheDocs builds 2021-04-04 20:01:37 -04:00
Rapptz 54288879e2 Remove userbot functionality
This has a lot of legacy and cruft so there may be some stuff I've
missed but this first pass is enough to get a clear separation.
2021-04-04 10:15:30 -04:00
Rapptz 59aa1a0e5f Remove asyncio.Task subclass in preference to task names 2021-04-04 07:24:42 -04:00
Rapptz 94bd1b9822 Convert two missing places to f-strings 2021-04-04 07:17:03 -04:00
Rapptz 4d44872511 Remove encoding header from generated code 2021-04-04 07:06:50 -04:00
Rapptz adaf7c6192 [commands] Use positional only parameter for Context.invoke 2021-04-04 07:04:01 -04:00
Rapptz 9d39b135f4 Modernize code to use f-strings
This also removes the encoding on the top, since Python 3 does it by
default. It also changes some methods to use `yield from`.
2021-04-04 07:03:53 -04:00
Rapptz 9fc2ab9c99 Bump minimum Python version to 3.8 2021-04-04 04:30:31 -04:00
Rapptz 68e379bc8b Version bump for development 2021-04-04 03:53:26 -04:00
Rapptz 757dd92272 Version bump to v1.7 2021-04-04 00:54:10 -04:00
Rapptz f6df66a971 Add missing documentation for StoreChannelConverter 2021-04-04 00:21:15 -04:00
Rapptz 6d63cf0d5d Add missing StoreChannel documentation 2021-04-04 00:17:59 -04:00
Rapptz 834a7d80aa Fix StoreChannel reference in changelog 2021-04-04 00:04:30 -04:00