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
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
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
c1c6457598
Separate member_update and presence_update events
2021-07-04 21:40:30 -04:00
Alex Nørgaard
d1dc41ec2f
Fix Client.fetch_channel not returning Thread
2021-07-03 21:35:31 -04:00
Nadir Chowdhury
2d597e310b
Fix Interaction.channel being None in threads
2021-07-01 07:49:44 -04:00
Lilly Rose Berner
6b1d46a1ea
Set Message.guild from guild_id if unavailable through Message.channel
2021-06-28 19:03:59 -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
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
Rapptz
1152f67efc
Allow pins events to work with threads
2021-06-08 07:29:17 -04:00
Rapptz
e13cbf4644
Don't dispatch thread_join on extraneous THREAD_CREATE dispatches
2021-06-08 07:29:17 -04:00
Rapptz
bd369c76ea
Parse remaining thread events.
2021-06-08 07:29:17 -04:00
Rapptz
429c5933d9
Add minor parsing for THREAD_LIST_SYNC and THREAD_MEMBER_UPDATE
...
There's no dispatch for these yet
2021-06-08 07:26:22 -04:00
Rapptz
ac95b8b85b
Allow Message.channel to be a thread
2021-06-08 07:25:40 -04:00
Rapptz
68c7c538f5
First pass at preliminary thread support
...
This is missing a lot of functionality right now, such as two gateway
events and all the HTTP CRUD endpoints.
2021-06-08 07:23:40 -04:00
Nadir Chowdhury
ab6d592f8c
Add support for integration create/update/delete events
2021-06-07 03:28:26 -04:00
Rapptz
78275023cc
Add Client.persistent_views to get all persistent views
2021-05-31 23:15:12 -04:00
Rapptz
d0097c4281
Remove view syncing before editing in views
...
This prevents a potential race condition when a MESSAGE_UPDATE is
received syncing and refreshing the view components causing a desync.
2021-05-31 05:50:40 -04:00
Nadir Chowdhury
9f98a9a87f
Implement StageInstance
2021-05-30 13:51:52 -04:00
Rapptz
ef9f61a933
Add support for select components
2021-05-28 05:34:21 -04:00
Rapptz
98570793e4
Add initial support for buttons and components
2021-05-27 00:53:13 -04:00
Nadir Chowdhury
631a0b1e13
Add support for ApplicationFlags
2021-04-18 20:32:52 -04:00
Steve C
65d48302ad
Fix guild.chunk() not working on evicted guilds
...
If you're trying to chunk a guild that the bot is not in,
it'll just hang on the chunk coro forever. It's weird, I know.
2021-04-14 22:10:47 -04:00
apple502j
9f1a96ea9b
Remove fetch_offline_members param for Client
2021-04-14 20:58:49 -04:00
apple502j
dea92a69dc
Remove support for guild subscriptions
2021-04-14 00:47:46 -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
Nadir Chowdhury
f1fac96e33
Remove private_channel_(delete/create)
events
2021-04-11 15:13:23 -04:00
Rapptz
7d79b4ba55
Remove Member related handling in PRESENCE_UPDATE
2021-04-11 00:57:59 -04:00
Rapptz
d85805ab6d
First pass at supporting v8 API
2021-04-11 00:39:13 -04:00
Rapptz
7e3c5f3faf
Fix some regressions from create_task change
2021-04-06 07:31:31 -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
Nadir Chowdhury
2ff24a27b5
Use asyncio.create_task
over asyncio.ensure_future
2021-04-05 20:31:03 -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
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
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
Nadir Chowdhury
63ec23bac2
Code optimisations and refactoring via Sourcery
2021-02-24 21:26:51 -05:00
Rapptz
61884dd9ac
Use member provided data in typing_start event if not in cache
...
Apparently Discord had this all along.
ref: #5965 , #5983
2021-01-24 05:21:13 -05:00
Nihaal Sangha
69bdc3a184
Change copyright year to present
2021-01-15 05:28:11 -05:00
Rapptz
442962596e
Dispatch user updates if the global cache gets stale in update events
2021-01-07 23:57:14 -05:00
Nadir Chowdhury
59c11e71a2
Implement presences for Guild.query_members
2020-12-31 13:50:22 -05:00
Sebastian Law
36292a65ea
remove extraneous assignment
2020-12-22 07:18:32 -05:00
Nadir Chowdhury
6b803acde4
[chore] Remove redundant imports
...
This also removes the historical patch for NullHandler implemented in bbf1c54, as it has been available since Python 3.1.
2020-11-28 03:16:49 -05:00
Rapptz
f174365d33
Ensure member key is not overwritten by author key in MESSAGE_UPDATE
...
This also coerces the older message to take the member data from the
newer message so the types are not incompatible.
Fix #5999
2020-11-23 06:02:27 -05:00
Rapptz
7a3a571e0a
Don't store a user cache if there's no member intent or cache is off
...
Without a cache or member intent the user cache can get out of date
with no events to update the underlying user in the member object.
Ref: #6034
2020-11-23 05:24:13 -05:00
Rapptz
431ee8794b
Fix error with templates not having access to member cache flags.
...
This also changes the attribute from having an underscore
Fix #5986
2020-11-21 22:42:59 -05:00
Rapptz
707cb47438
Fix error when querying members from the gateway.
...
I accidentally made this return True instead of the actual member list
2020-10-19 19:37:16 -04:00