Commit Graph
100 Commits
Author SHA1 Message Date
Rapptz 45d498c1b7 Fix README link 2021-08-27 20:59:11 -04:00
Rapptz 7b87d2dec0 Add gist to README 2021-08-27 20:55:36 -04:00
Rapptz 29b808d33f Change avatar_url type hint to Any instead of str 2021-08-27 05:41:00 -04:00
Rapptz dd7d4b8e7f Use a thread values view when constructing TextChannel.threads
Avoids an accidental O(n^2) situation.
2021-08-25 20:42:21 -04:00
Rapptz 2d8f299b6b Use MISSING instead of None for HelpCommand.context
It's basically just late-init
2021-08-25 09:53:55 -04:00
Rapptz 3382d2e9e8 Update documentation on select limits 2021-08-25 09:21:49 -04:00
Rapptz 539577a2dd Bring back ParamSpec in utils 2021-08-25 05:30:41 -04:00
Rapptz 4f8e67998a Fix copy_doc typing to not error due to overloaded ParamSpec 2021-08-25 03:41:24 -04:00
Rapptz 848d752388 Change User.avatar to be Optional[Asset] instead of Asset
This change was needed to allow users to more easily check if an
uploaded avatar was set using `if user.avatar:` rather than the
admittedly clunky `if user.avatar != user.default_avatar.

The old behaviour with a fallback is still useful for actual display
purposes, so it has been moved over to the new `User.display_avatar`
attribute. This also has symmetry with the newly added
`Member.display_avatar` attribute.
2021-08-25 01:43:09 -04:00
Rapptz 78598d59d7 Change on_socket_raw_receive to dispatch right before JSON conversion 2021-08-25 01:26:37 -04:00
Rapptz ef79305961 Exclude private functions from VoiceClient 2021-08-24 22:49:46 -04:00
Rapptz 9a61a5a063 Typehint Colour.__init__ parameter 2021-08-24 03:15:28 -04:00
Rapptz 565b41b0b2 Fix Embed.from_dict typing being too strict for a public function
The Embed TypedDict is not publicly accessible so would always lead
to type errors upon usage.
2021-08-24 03:15:06 -04:00
Rapptz 769db38401 Fix typing error in sticker edit 2021-08-23 23:52:45 -04:00
Rapptz c82739a3be Fix some typings in HTTPClient to not take strict payload types 2021-08-23 23:52:16 -04:00
Rapptz 8306b9f6af Add type hint for suppress parameter 2021-08-23 23:51:40 -04:00
Rapptz 490bbffc93 Remove in-place edits and return fresh instances instead
Fixes #4098
2021-08-23 23:46:50 -04:00
Rapptz 9d4fa0341e Fix typing of move role position payload parameter 2021-08-23 23:44:20 -04:00
Rapptz cff9ca0288 Fix typings for member HTTP methods 2021-08-23 23:44:20 -04:00
Rapptz 9dd86bbcb3 Add type hints to AsyncWebhookAdapter methods 2021-08-23 23:44:20 -04:00
Rapptz 8bbb8f6db9 Use getattr for default_auto_archive_duration in Message.create_thread
Some channel types do not have this attribute so a fallback is
necessary to prevent the attribute access from erroring.
2021-08-23 23:44:20 -04:00
Rapptz b8898c7788 Fix user.py typings and reformat file 2021-08-22 07:38:07 -04:00
Rapptz d17551f51f Fix typing for private channel by user lookup 2021-08-22 07:36:39 -04:00
Rapptz 4a6670c062 Add missing typehint for PermissionOverwrite.pair
Technically inferred but better to be explicit
2021-08-22 07:29:30 -04:00
Rapptz d7a4230007 Fix Member.guild_avatar docstring 2021-08-22 07:07:26 -04:00
Rapptz 2e52059555 [types] Add avatar to Member typings 2021-08-22 06:55:53 -04:00
Rapptz 49cf959784 Fix Member._avatar not updating in member update events 2021-08-22 06:54:38 -04:00
Rapptz 69f578abdc Fix webhook typings and use PartialMessageable instead of Object 2021-08-22 04:32:15 -04:00
Rapptz 1b5c206279 Fix broken rename from pyright 2021-08-22 03:05:22 -04:00
Rapptz d2dd31de63 Make __main__ template strings private 2021-08-22 02:42:08 -04:00
Rapptz d0c295b595 Add explicit type annotation to version_info and reformat 2021-08-22 02:38:51 -04:00
Rapptz e1e3e298b5 Typehint async_context global variable 2021-08-22 02:37:40 -04:00
Rapptz 4a72201617 Make json conversion functions private 2021-08-22 02:35:58 -04:00
Rapptz ea2d972666 Make global log variable in modules private 2021-08-22 02:33:51 -04:00
Rapptz 6268cad402 ResponseType type alias is private 2021-08-22 02:28:37 -04:00
Rapptz 8d80259a80 Reformat shard.py 2021-08-21 14:53:19 -04:00
Rapptz 311eac97b0 Reformat state.py 2021-08-21 14:48:22 -04:00
Rapptz d5033b04a2 Don't clear views in READY 2021-08-21 14:47:08 -04:00
Rapptz fbc4a51c35 Fix on_typing not dispatching for threads 2021-08-20 20:09:18 -04:00
Rapptz 9246bbc8e3 [commands] De-indent after hook call
Close #7412
2021-08-20 20:08:27 -04:00
Rapptz 63434fbfd9 Fix some type hints in user.py 2021-08-18 01:59:06 -04:00
Rapptz 68453c7bed Add Thread.members and Thread.fetch_members 2021-08-18 01:58:16 -04:00
Rapptz b73f02b9c3 Remove deprecated TextChannel.active_threads for Guild version
This also fills in the ThreadMember data from the endpoint
2021-08-18 01:52:24 -04:00
Rapptz 0df3f51a0b Partially type-hint state.py
This is just work to get started. A more complete type hint will come
later.
2021-08-18 01:52:24 -04:00
Rapptz 17f0b59c76 Move explanation note for type ignore above the offending line 2021-08-18 01:24:15 -04:00
Rapptz 28ed599345 Fix Template.source_guild typehint 2021-08-18 01:23:17 -04:00
Rapptz 3b4c6269be Fix documentation for Message.is_system
Also fixes some formatting
2021-08-18 01:01:24 -04:00
Rapptz feae059c68 Remove coverage note from the documentation and README
A lot of people seem to point out this line as a gotcha when certain
features haven't been released yet. It's been more of a pain-point
than a marketing win since people seem to be unaware of the way this
project is developed.

Fix #7401
2021-08-15 14:01:59 -04:00
Rapptz 1e17b7fcea Rename start_thread to create_thread for consistency 2021-08-12 00:30:50 -04:00
Rapptz fda543c844 Fix incorrect indent 2021-08-11 06:25:22 -04:00
Rapptz 08a4db3961 Revert "Refactor Client.run to use asyncio.run"
This reverts commit 6e6c8a7b28.
2021-08-11 02:16:22 -04:00
Rapptz 6e6c8a7b28 Refactor Client.run to use asyncio.run
This also adds asynchronous context manager support to allow for
idiomatic asyncio usage for the lower-level counterpart. At first
I wanted to remove Client.run but I figured that a lot of beginners
would have been confused or not enjoyed the verbosity of the newer
approach of using async-with.
2021-08-10 23:00:24 -04:00
Rapptz dc9c224b54 Undo coercion of partial DMChannel to PartialMessageable 2021-08-10 22:10:45 -04:00
Rapptz 1c40d43fd1 Remove unused log lines in HTTPClient 2021-08-10 09:28:54 -04:00
Rapptz 66871f329e Interaction.channel can be a PartialMessageable rather than Object
This allows it to work just fine in DMs
2021-08-10 09:28:14 -04:00
Rapptz 1279510194 Add support for PartialMessageable instances
This allows library users to send messages to channels without fetching
it first.
2021-08-10 09:24:49 -04:00
Rapptz 58ca9e9932 Add TextChannel.default_auto_archive_duration 2021-08-02 04:36:02 -04:00
Rapptz 0cc67e58ed Fallback to None message_id searches in View dispatch
Not all persistent views have an associated message_id attached to
them.

Fix #7319
2021-08-01 03:30:45 -04:00
Rapptz 035d110837 Fix debug event toggle not triggering for raw receive 2021-08-01 02:42:11 -04:00
Rapptz b87d306a70 Remove unused variable in view 2021-08-01 02:40:11 -04:00
Rapptz e795d341e7 Change View dispatch mechanism to be keyed by message_id as well
If different persistent view instances are used within different
message_ids their callbacks will get called without differentiating
between them, leading to potential issues such as 404 errors. This
change makes it so N views with custom IDs bound to N message_ids
will no longer conflict with one another.
2021-07-31 23:08:05 -04:00
Rapptz f72350199d Fix typo in TextChannel.start_thread 2021-07-31 22:55:32 -04:00
Rapptz b640493300 Add enable_debug_events parameter to enable expensive debug events
This should allow less dispatching during heavy gateway event streams.
2021-07-31 20:35:28 -04:00
Rapptz 2de0398d66 Cast removed thread member IDs to int 2021-07-31 20:22:51 -04:00
Rapptz e2250d402e Add on_socket_event_type event 2021-07-31 20:12:40 -04:00
Rapptz 2cb5ce981e FIx on_thread_member_remove passing in None 2021-07-31 19:43:05 -04:00
Rapptz 41f3998a08 Fix on_thread_member_remove not dispatching 2021-07-31 19:40:47 -04:00
Rapptz 3a451c9c65 Change payload to use sticker_ids instead of sticker_items 2021-07-30 23:19:25 -04:00
Rapptz 655bf25cc8 Document TypeError raise in lottie sticker 2021-07-30 23:18:03 -04:00
Rapptz 6beef898c6 Rename instances of nitro to premium 2021-07-30 23:10:36 -04:00
Rapptz 658b61d468 Fix SyncWebhook not working across thread barriers
Fix #7310
2021-07-30 22:59:23 -04:00
Rapptz ecf239d2a2 Fix user cache acting incorrectly with evictions
The first issue involved copied users which would lead to user updates
causing faster evictions of the cache than was expected.

The second issue involved users that weren't bound to an internal
lifetime eviction policy. These users would not get evicted.
For example, a user without mutual guilds or being part of the internal
cache in general (messages, DMs) would never end up being evicted for
some strange reason. To handle this case, store_user would get a
counterpart named create_user which would create a user without
potentially storing them in the cache. That way only users with a
bound lifetime within the library would be stored.
2021-07-29 01:43:23 -04:00
Rapptz 0d3bd3083c Add Guild.get_channel_or_thread helper method
The name might change in the future, unsure.
2021-07-29 01:22:07 -04:00
Rapptz 731a8816bb [commands] Check for ctx.guild instead of abc.GuildChannel 2021-07-28 23:53:24 -04:00
Rapptz dac0267e28 Allow creating a public thread without a starter message 2021-07-28 23:50:02 -04:00
Rapptz 13251da8ce Use a default value for StageInstance.discoverable_enabled
Apparently this caused crashes
2021-07-28 20:02:45 -04:00
Rapptz 9d25bb454b Fix recursive inheritance in BaseUser 2021-07-28 20:01:44 -04:00
Rapptz f153154b7a Undocument Item.width
It doesn't serve much of a purpose to users
2021-07-09 09:14:01 -04:00
Rapptz 1a4e73d599 [commands] Get guild_id from message link for message converters 2021-07-09 09:14:01 -04:00
Rapptz 8fb998b599 Refactor utcfromtimestamp to use fromtimestamp(..., tz=utc) 2021-07-09 04:20:45 -04:00
Rapptz 826ce101fd Change WEBHOOK_UPDATE to use guild information from gateway
This changes the lookup from unnecessary O(n) to two amortised O(1)
lookups. This event pretty much always has a guild_id so the original
code was always a performance bottleneck.
2021-07-08 21:53:26 -04:00
Rapptz b4e39668fb Change CHANNEL_PINS_UPDATE to use guild information from gateway
This changes the channel lookup from O(n) to two amortised O(1) lookups
2021-07-08 21:51:21 -04:00
Rapptz af8742a911 Use a specific tag type for member and user comparisons
The previous protocol based tag type caused significant overhead
(in the magnitude of seconds). Removing this should simplify object
creation by removing typing.Generic from the __mro__
2021-07-08 10:17:44 -04:00
Rapptz 8df35c83a9 Remove extraneous dict assignment from view store 2021-07-07 20:19:17 -04:00
Rapptz 74e1ab09a0 Remove channel type coercion in factory methods
This caused unnecessary isinstance checks which were slowing down
channel creation at scale
2021-07-07 20:19:17 -04:00
Rapptz 03cd6ff433 Remove calls to gc.collect in ConnectionState
For some bots this was actually a performance bottleneck, might as
well remove it if it causes bad performance
2021-07-07 20:19:17 -04:00
Rapptz 99b8ae35ba Change _Overwrite to get dict entries rather than mutate 2021-07-07 20:19:17 -04:00
Rapptz cb2363f0fd Move global user storage from WeakValueDictionary to dict
Profiling showed that WeakValueDictionary caused rather significant
and noticeable slowdowns during startup. Since the only thing it was
used for was to automatically remove the key from the mapping when
the reference count reaches zero, the same could theoretically be
accomplished by using the __del__ special method. There is a chance
that this could lead to a memory leak since the __del__ method is not
always called, but the only instances of this happening are during
interpreter shutdown to my knowledge and at that point the mapping
is the least of my concern.
2021-07-07 20:19:17 -04:00
Rapptz 88d825a803 Allow use of orjson instead of json
The difference in speed seems negligible at start up, which is when
most time is taken for actually parsing JSON. I could potentially be
missing something but profiling didn't point to any discernable
difference.
2021-07-07 20:19:17 -04:00
Rapptz c1c6457598 Separate member_update and presence_update events 2021-07-04 21:40:30 -04:00
Rapptz c2acb0a114 Update README to point to 3.8 requirement 2021-07-04 21:26:27 -04:00
Rapptz feb0f7f29d Add SelectOption.__str__ 2021-07-04 21:20:48 -04:00
Rapptz 49f8073262 Fix Permission serialisation in audit logs
Fix #7171
2021-07-04 19:13:21 -04:00
Rapptz 750ba88f2c Fix typing errors with Client 2021-07-04 07:55:20 -04:00
Rapptz 074f34a5fa Specify View timeouts is in seconds 2021-07-04 07:07:38 -04:00
Rapptz 7d9074db8a Fix type errors and potentially unbound code in http.py 2021-07-04 06:18:34 -04:00
Rapptz 4152819a3c Ignore linting error when accessing Python 3.10 unions 2021-07-04 05:55:29 -04:00
Rapptz 5d798aa5e6 Fix some typing errors and reformat enums.py 2021-07-04 05:32:26 -04:00
Rapptz 828e47d83f Document on_thread_join also applying to thread creation 2021-07-04 04:55:12 -04:00
Rapptz 23a69144b6 Add a warning in on_interaction 2021-07-04 03:06:36 -04:00