Commit Graph
100 Commits
Author SHA1 Message Date
Rapptz 81b259ab36 Fix sending arrays with nulls in them when changing presences 2021-05-16 07:15:53 -04:00
Rapptz de965c2bf5 Simplify SnowflakeList type hints 2021-05-06 08:23:18 -04:00
Rapptz 2e12f6de9c Typehint File 2021-05-06 08:15:51 -04:00
Rapptz 1bf7aadf94 Typehint emoji classes 2021-05-05 23:48:36 -04:00
Rapptz 7bad27d215 Fix SnowflakeList typings 2021-05-05 23:33:11 -04:00
Rapptz ca92f37f18 Fix typings in message.py 2021-05-05 23:05:15 -04:00
Rapptz 81004369dc Add Guild.fetch_channel 2021-05-05 14:26:33 -04:00
Rapptz 598057ee79 Add Permissions.manage_events 2021-05-05 14:16:39 -04:00
Rapptz c31946f29f Type hint GuildChannel and don't make it a Protocol
This reverts GuildChannel back into a base class mixin.
2021-05-05 11:14:58 -04:00
Rapptz b32ad3de37 Fix AuditLogEntry.target being incorrect for bulk message delete
Fixes #6851
2021-05-04 22:03:20 -04:00
Rapptz e3037b32d5 Add changelog for v1.7.2 2021-05-02 23:39:21 -04:00
Rapptz cd7357b93a Add classproperty helper utility
This is apparently a 3.9+ only addition
2021-05-02 08:05:52 -04:00
Rapptz b0ec22065e Add Client.create_dm 2021-05-01 13:16:57 -04:00
Rapptz 83611edb66 Fix supressing messages leading a 400 error
This only makes it so allowed_mentions are passed if the message is
authored by the bot itself.
2021-05-01 11:46:27 -04:00
Rapptz 135a7e9e5a Reformat message.py file 2021-05-01 09:54:19 -04:00
Rapptz d940486552 Add types to PartialMessage 2021-05-01 09:48:37 -04:00
Rapptz 4c97b8efdd Fix typings for utils._parse_ratelimit_header
A CIMultiDict is not a Dict but a Mapping
2021-05-01 09:24:47 -04:00
Rapptz 60c1240849 Fix SyncWebhook exception case causing attribute errors 2021-05-01 09:24:40 -04:00
Rapptz 02e21a8905 Fix sending multipart data with SyncWebhook
Fixes #6825
2021-05-01 09:21:39 -04:00
Rapptz 1a8d63d54f [commands] Remove Flag related delimiter and prefix error 2021-04-30 03:29:44 -04:00
Rapptz 58274eafbc [commands] Fix Generics causing other typing converters to fail 2021-04-30 01:23:56 -04:00
Rapptz 7b8db49efe Fix utils.MISSING not evaluating to True in implicit bool contexts 2021-04-30 01:05:01 -04:00
Rapptz 3b6a2b9e85 [commands] Fix Generic subcalsses used as a converter 2021-04-29 02:43:54 -04:00
Rapptz 9f3551926a Split annotation resolution to discord.utils 2021-04-27 05:48:27 -04:00
Rapptz 69da87f455 [commands] Disallow float/complex in Literal but allow None
Type checkers (both mypy and pydantic) apparently don't like it
2021-04-27 05:48:27 -04:00
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