Commit Graph
100 Commits
Author SHA1 Message Date
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
Rapptz d047cebc35 [commands] Remove window reassignment when tokens reach 0 2021-07-04 03:05:06 -04:00
Rapptz c748e4bce5 Mention ephemeral messages can only be edited with raw method 2021-07-03 21:45:15 -04:00
Rapptz 097b6064f1 Fix ui.Button constructor default style to match the decorator 2021-07-03 21:29:28 -04:00
Rapptz 17268c3368 Add MessageFlags.ephemeral 2021-07-03 21:29:28 -04:00
Rapptz 93cc1bdd79 Fix typing errors in PartialEmoji 2021-07-03 11:52:38 -04:00
Rapptz 8b4dd34328 Document TextChannel.start_thread return type 2021-07-03 11:52:20 -04:00
Rapptz 3d0dd5bc1b Change Message.__repr__ to show inherited type name 2021-07-03 11:02:32 -04:00
Rapptz 0b577fa209 Add support for fetching the original interaction response message 2021-07-03 11:00:48 -04:00
Rapptz be5603141e Remove slots from flags
Fix #7159
2021-07-03 10:52:35 -04:00
Rapptz bba4d6c4e4 Fix typo with exception name in InteractionResponse 2021-07-03 08:49:07 -04:00
Rapptz 9f981e718b Mention the discord.ui types in the read-only component types 2021-07-03 08:39:02 -04:00
Rapptz 88620d052a Typehint permissions 2021-07-03 08:30:27 -04:00
Rapptz 8760b01e76 Add Interaction.permissions to get resolved permissions 2021-07-03 07:07:54 -04:00
Rapptz 12e90f9c6d Type hint instance variables in interactions 2021-07-03 06:56:30 -04:00
Rapptz a8db8546db Typehint error.py 2021-07-03 00:54:36 -04:00
Rapptz 0fae0b4995 Use "raised" instead of "thrown" for exception documentation 2021-07-03 00:35:21 -04:00
Rapptz 7ca90874b9 Raise an exception if an interaction has been responded before
Fix #7153
2021-07-03 00:30:32 -04:00
Rapptz d7ed884593 Rework view timeouts to work as documented 2021-07-02 09:17:32 -04:00
Rapptz a3d7e06f25 [commands] Add back CommandOnCooldown.type 2021-07-02 05:39:54 -04:00
Rapptz 982140b5f7 [commands] Mention that dynamic_cooldown callable can return None 2021-07-02 05:35:38 -04:00
Rapptz 69c400d813 Add Thread.mention 2021-07-01 20:51:56 -04:00
Rapptz 9ac459b5d3 Add a default style for buttons
This makes it easier to create URL buttons since the library will
automatically assign the proper style for it.
2021-07-01 20:45:38 -04:00
Rapptz 4f0e907e44 Add ButtonStyle.url alias for ButtonStyle.link 2021-07-01 20:42:56 -04:00
Rapptz 812bfbe6f9 Show Select.values more prominently in the documentation 2021-07-01 20:33:57 -04:00
Rapptz ed6c061d69 [commands] Fix guild channel converters to work in DMs
Fix #7147
2021-07-01 07:46:02 -04:00
Rapptz 12e3eba011 Add Select to the docs 2021-06-30 03:54:30 -04:00
Rapptz c1f1c67eed Change timeout parameter in View.from_message to keyword only 2021-06-30 03:15:45 -04:00
Rapptz d8075d5412 Add View.from_message to convert message components to a View 2021-06-30 03:06:51 -04:00
Rapptz 157caaec7c Add conversion routine for SelectMenu to ui.Select 2021-06-30 02:55:03 -04:00
Rapptz 62dad0f7bf Fix potential None access in various StageChannel properties 2021-06-30 01:31:57 -04:00
Rapptz 1aeec34f84 Typehint Member and various typing fixes 2021-06-30 01:28:35 -04:00
Rapptz 44d1d29708 Add explicit types to variables in Message types 2021-06-29 23:56:02 -04:00
Rapptz ea1d423904 Check for None in VocalGuildChannel.voice_states 2021-06-29 23:16:39 -04:00
Rapptz 6f3b8072d6 Rework User.edit to have proper typing 2021-06-29 22:05:29 -04:00
Rapptz 2d7c709235 Rework Role.edit to not rely on previous role state 2021-06-29 22:02:16 -04:00
Rapptz a372aadb2d Rework Member.edit to not use kwargs for better typing 2021-06-29 21:54:24 -04:00
Rapptz 53ef89c29f Use a property for StreamIntegration.expire_behavior alias 2021-06-29 21:46:19 -04:00
Rapptz c6a69062a8 Rework StreamIntegration.edit to not rely on state 2021-06-29 21:45:06 -04:00
Rapptz 62b024803a Mock PartialTemplateState._get_guild as pass-through 2021-06-29 21:35:00 -04:00
Rapptz b1a355394f Rework Template.edit to use MISSING sentinel 2021-06-29 21:33:57 -04:00
Rapptz 7386a971f8 Add examples for how to use views 2021-06-29 04:19:12 -04:00
Rapptz 2beee8be14 Type hint channel.py 2021-06-29 03:37:52 -04:00
Rapptz eda02c2e91 [types] VoiceChannel and StageChannel bitrate/user_limit is not null 2021-06-29 02:45:01 -04:00
Rapptz 485542c480 Fix typing linting error in threads 2021-06-29 02:26:07 -04:00
Rapptz a2b10a08b9 Fix KeyError due to refactoring mistake in Overwrite handling 2021-06-28 23:51:56 -04:00
Rapptz 55c7de82d3 Type and format abc.py
There's still some stuff missing but this is a decent first pass
2021-06-28 23:36:20 -04:00
Rapptz f9bccabac5 Make Asset.with_ functions positional only 2021-06-28 23:36:20 -04:00
Rapptz d9adf4d35d Make Asset.replace only accept keyword arguments 2021-06-28 23:36:20 -04:00
Rapptz f7d551953b Remove extraneous __slots__ assignments 2021-06-28 23:36:20 -04:00
Rapptz e96df33ce0 Dispatch thread_join when a thread is updated but not in cache 2021-06-28 18:56:28 -04:00
Rapptz e3a66bcccc Fix property CSS to be more inline with everything else 2021-06-28 04:16:51 -04:00
Rapptz 039bb9f871 Move documentation CSS after CSS block 2021-06-28 03:44:22 -04:00
Rapptz 2ce44f7bd6 Add versionadded for format_dt 2021-06-28 03:36:16 -04:00
Rapptz d1a2ee4620 Add discord.utils.format_dt helper function 2021-06-28 01:31:14 -04:00
Rapptz a75cd93acc Fix Guild.vanity_invite causing an error when guild has it unset
FIx #7103
2021-06-28 01:03:46 -04:00
Rapptz cd6b453cb3 Typehint Activity 2021-06-28 00:56:28 -04:00
Rapptz 4566b64d77 Fix Activity and Spotify datetime being timezone naive 2021-06-28 00:37:16 -04:00
Rapptz b1836c5577 Rework Message.edit implementation 2021-06-28 00:33:59 -04:00
Rapptz d30fea5b0d Add changelog for v1.7.3 2021-06-12 12:28:08 -04:00
Rapptz f27e2e073f Fix crash involving stickers 2021-06-12 11:56:51 -04:00
Rapptz 0bc5f276a7 [commands] Change EmojiConverter to use Client.get_emoji 2021-06-12 03:05:28 -04:00
Rapptz 1c640ad72b Lazily create Button custom_ids in decorator interface
The previous code would make two separate instances share the custom_id
which might have been undesirable behaviour
2021-06-12 02:33:11 -04:00
Rapptz f0c76a13d3 Fix guild documentation not showing up for some methods 2021-06-11 05:25:06 -04:00
Rapptz 04573c3c06 Make View timeout parameter keyword-only 2021-06-10 09:06:04 -04:00
Rapptz f6ea03230e Make parameters passed to Reaction.user keyword-only 2021-06-10 08:58:25 -04:00
Rapptz c251c51cb1 Typehint Reaction 2021-06-10 08:58:10 -04:00
Rapptz 9181bf046b Rename Reaction.custom_emoji to Reaction.is_custom_emoji
This legacy attribute was apparently never changed to be consistent
with the rest of the library
2021-06-10 08:50:50 -04:00
Rapptz fc66c5b92d Fix some webhook related type checker errors 2021-06-10 07:57:41 -04:00
Rapptz 0dd4c4c08c Don't use class attribute syntax for Guild typings 2021-06-10 07:50:35 -04:00
Rapptz 11e23c534a Close ClientSession after closing websocket connections 2021-06-10 07:32:05 -04:00
Rapptz 7dccbace78 Refactor Guild to support type hints
This patch also does the following:

* Sets some parameters to be positional only
* Changes Guild.edit to use the MISSING sentinel
* Changes the various create_channel methods to be type safe
* Changes many parameters from Optional[T] to use MISSING
* Changes Guild.create_role to use MISSING sentinel

This refactor is mostly partial but lays a decent foundation
2021-06-08 10:56:26 -04:00