Commit Graph
100 Commits
Author SHA1 Message Date
Rapptz abe54f5bdc Translation sync with crowdin 2020-10-24 00:10:06 -04:00
Rapptz 763d46cd7a Version bump to v1.5.1 2020-10-19 19:44:10 -04:00
Rapptz 0be2d37e7a Add changelog for v1.5.1 2020-10-19 19:42:54 -04: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
Rapptz 1a6295dffb Allow concurrent calls to guild.chunk()
This allows people who write guild.chunk() calls in highly concurrent
places such as on_message or checks to not spam the gateway with an
actual request and instead waits for the pre-existing request to finish
2020-10-19 02:47:03 -04:00
Rapptz 3daaadafdd [commands] Lazily fetch members in discord.Member converters
This makes commands taking members mostly work transparently without
much effort from the user.
2020-10-17 23:05:22 -04:00
Rapptz 61e25cb090 Ensure our own member is never evicted from the cache in any policy. 2020-10-17 23:02:03 -04:00
Rapptz 2509ca6a82 Add internal method to check if the websocket is currently ratelimited 2020-10-17 22:51:29 -04:00
Rapptz b07d474bd6 Fix attribute errors when timing out during chunking start-up 2020-10-17 22:02:44 -04:00
Rapptz 21ed9f61d2 Fix disconnect when trying to move to another voice channel.
Not overly proud of this implementation but this allows the library
to differentiate between a 4014 that means "move to another channel" or
"move nowhere". Sometimes the VOICE_STATE_UPDATE comes before the
actual websocket disconnect so special care had to be taken in that
case.

Fix #5904
2020-10-17 22:01:57 -04:00
Rapptz b91ddc6f4e Mark intent alias flags as actual aliases to skip them in __iter__
Fix #5945
2020-10-17 18:50:56 -04:00
Rapptz 1c03a4aac9 Evict keys when they're set to None in PermissionOverwrite
Fixes #5929
2020-10-17 01:59:00 -04:00
Rapptz b9e1bdf87e Properly insert at the end if position is not found when moving.
Fixes #5923
2020-10-17 01:52:35 -04:00
Rapptz d9acc2f491 Escape multi-line quotes properly
Fix #5897
2020-10-17 01:36:31 -04:00
Rapptz 9d183ecc30 Add intents to the issue template 2020-10-03 21:48:34 -04:00
Rapptz 022b5f7902 Update intent documentation to use defaults 2020-10-03 01:42:50 -04:00
Rapptz 1518790c87 Some minor documentation fixes.
Make examples all mention where to put it for the unaware.
2020-09-28 21:42:32 -04:00
Rapptz 6d1bcf89da Version bump to v1.5.0 2020-09-28 20:57:10 -04:00
Rapptz 1919267e5c Add changelog for v1.4.2 2020-09-28 20:56:00 -04:00
Rapptz 821d833c11 Add changelog for v1.5.0 2020-09-28 20:33:15 -04:00
Rapptz bf42cf7232 Add warning if guilds intent is disabled. 2020-09-28 05:39:13 -04:00
Rapptz 1ebb52b139 Guard GUILD_MEMBER_ADD/GUILD_MEMBER_REMOVE from errors
If the guilds intent is disabled all guilds are unavailable. This means
we don't receive a member_count attribute and cannot update it.
2020-09-28 05:12:05 -04:00
Rapptz 28e5b2a5e1 Add Client.intents to query the current intents
Closes #5854
2020-09-26 06:35:41 -04:00
Rapptz e4d7f44aa5 Make Intent class creation more intuitive 2020-09-24 09:00:54 -04:00
Rapptz de6c5ef675 More intent documentation.
Mention that you can downgrade the library to revert. Also mention
that intents need to be updated in the code as well as the developer
portal.
2020-09-24 02:00:47 -04:00
Rapptz 59d514fcdf More intent related documentation 2020-09-24 01:39:45 -04:00
Rapptz 005a80303f Add chunk_guilds_at_startup and deprecate fetch_offline_members 2020-09-24 01:17:04 -04:00
Rapptz 7126f5a78c Use delete_message_days instead of delete-message-days 2020-09-23 08:03:06 -04:00
Rapptz e8eb19b2b4 Use /invites/ instead of /invite/ 2020-09-23 07:58:57 -04:00
Rapptz 2e06239d3c Add documentation for gateway intents 2020-09-23 03:21:22 -04:00
Rapptz 9dd4dc78c3 Mention potential Guild.member_count accuracy issues 2020-09-23 03:21:22 -04:00
Rapptz 213f55ffc7 Disable voice cache in weird intent configurations. 2020-09-23 03:21:21 -04:00
Rapptz e644a5a060 Fix up wording in MemberCacheFlags exception 2020-09-23 03:21:21 -04:00
Rapptz 625a5c2a0b Some documentation fixes for MemberCacheFlags and Intents 2020-09-23 03:21:21 -04:00
Rapptz 8d5c05ed20 Default MemberCacheFlags based on intents 2020-09-23 03:21:21 -04:00
Rapptz bf8ca58996 Add a special exception for required privileged intents 2020-09-23 03:21:20 -04:00
Rapptz 4d813da9e1 Pass default intents if not explicitly given 2020-09-23 03:21:20 -04:00
Rapptz f2de794bde Intern status and overwrite strings 2020-09-23 03:21:20 -04:00
Rapptz 23ae084b8c Allow finer grained control over the member cache. 2020-09-23 03:21:20 -04:00
Rapptz e6edc44f3d Raise if member intent is not enabled 2020-09-23 03:21:19 -04:00
Rapptz ad917ca02d Don't cache members during guild start up if cache is disabled.
This is mainly a half-implemented commit. There are a few more places
where cache consistency is necessary. In the future there will
probably be a member cache policy enum that will be used and cache
consistency will be tackled in part of that larger refactoring.
2020-09-23 03:21:19 -04:00
Rapptz cb8cb557f5 Add Guild.chunk and deprecated Client.request_offline_members 2020-09-23 03:21:19 -04:00
Rapptz 055fe76241 Fix Client.request_offline_members no longer working 2020-09-23 03:21:19 -04:00
Rapptz e10942a9ee Add versionadded for intents enum 2020-09-23 03:21:19 -04:00
Rapptz bec34c1110 Explicitly disable the members presence by default 2020-09-23 03:21:18 -04:00
Rapptz 0ea0f483bc Fix timeouts due to hitting the gateway rate limit 2020-09-23 03:21:18 -04:00
Rapptz 7db0008190 Maximize the amount of concurrency while chunking.
In order to reduce our amount of backpressure we need to limit the
amount of concurrent chunk requests we can have so the gateway buffer
has some time to breathe.
2020-09-23 03:21:18 -04:00
Rapptz 6bae52f4bb Check for zombie connections through last received payload
The previous code would check zombie connections depending on whether
HEARTBEAT_ACK was received. Unfortunately when there's exceeding
backpressure the connection can terminate since the HEARTBEAT_ACK is
buffered very far away despite it being there, just not received yet.
2020-09-23 03:21:18 -04:00
Rapptz 0ec72660cf Speed up chunking for guilds with presence intent enabled 2020-09-23 03:21:18 -04:00
Rapptz 92e1816114 Maximize concurrency when chunking on AutoSharded clients 2020-09-23 03:21:17 -04:00
Rapptz af8fc32329 Use a lock for the gateway rate limiter.
This will allow for higher concurrency in AutoSharded situations where
I can mostly "fire and forget" the chunk requests.
2020-09-23 03:21:17 -04:00
Rapptz 5fe998ac19 Heartbeats bypass the rate limits for gateway 2020-09-23 03:21:17 -04:00
Rapptz 3df269daa3 All guilds require chunking if opting into it 2020-09-23 03:21:17 -04:00
Rapptz c261f7c4a3 Handle user updates within GUILD_MEMBER_UPDATE 2020-09-23 03:21:16 -04:00
Rapptz 930761e058 Rewrite chunking to work with intents.
This slows down chunking significantly for bots in a large number of
guilds since it goes down from 75 guilds/request to 1 guild/request.
However the logic was rewritten to fire the chunking request
immediately after receiving the GUILD_CREATE rather than waiting for
all the guilds in the ready stream before doing it.
2020-09-23 03:21:16 -04:00
Rapptz ec7b8edcc2 Add more close codes that can't be handled for reconnecting. 2020-09-23 03:21:16 -04:00
Rapptz 11d8a6fa3c Change unknown cache log warnings from WARNING -> DEBUG 2020-09-23 03:21:15 -04:00
Rapptz e7db9cfdf7 Handle gateway rate limits by using a rate limiter.
With the new chunking changes this will become necessary and we don't
want to disconnect from having too many outwards requests.
2020-09-23 03:21:15 -04:00
Rapptz a6381dcf77 Add support for guild intents 2020-09-23 03:21:15 -04:00
Rapptz 9036b9651b Properly handle disconnects in voice when force disconnected 2020-09-23 03:20:35 -04:00
Rapptz e3922e24d9 Correct some protocol errors in v4 of voice gateway 2020-09-23 03:20:35 -04:00
Rapptz 0b93fa3a82 Implement VoiceProtocol lower level hooks.
This allows changing the connect flow and taking control of it without
relying on internal events or tricks.
2020-09-23 03:20:35 -04:00
Rapptz ab5e175b25 Use quotes when installing in the README
Other shells have a hard time with square brackets.

Closes #5821
2020-09-21 03:39:19 -04:00
Rapptz 9978288346 Update issue template to redirect to discussions 2020-09-18 04:21:32 -04:00
Rapptz aa258073dc Add labels to the issue templates 2020-09-17 22:16:20 -04:00
Rapptz a183c4f752 Completely update member references from message inner members.
Fixes #5819
2020-09-17 02:45:53 -04:00
Rapptz 6546f63ad7 Add a special exception for required privileged intents 2020-09-14 03:49:21 -04:00
Rapptz 4c56e6da9c Pass default intents if not explicitly given 2020-09-14 03:20:41 -04:00
Rapptz 27b224778b Intern status and overwrite strings 2020-09-14 03:20:41 -04:00
Rapptz ab049e3eb0 Allow finer grained control over the member cache. 2020-09-14 03:20:36 -04:00
Rapptz 6f22ba8ad0 Raise if member intent is not enabled 2020-09-14 03:20:17 -04:00
Rapptz f3514a4d53 Don't cache members during guild start up if cache is disabled.
This is mainly a half-implemented commit. There are a few more places
where cache consistency is necessary. In the future there will
probably be a member cache policy enum that will be used and cache
consistency will be tackled in part of that larger refactoring.
2020-09-14 03:20:17 -04:00
Rapptz 141511471e Add Guild.chunk and deprecated Client.request_offline_members 2020-09-14 03:20:16 -04:00
Rapptz 27558ec71a Fix Client.request_offline_members no longer working 2020-09-14 03:20:16 -04:00
Rapptz a6edb66742 Add versionadded for intents enum 2020-09-14 03:20:16 -04:00
Rapptz b1de57f299 Explicitly disable the members presence by default 2020-09-14 03:20:16 -04:00
Rapptz 0fc8ac6f80 Fix timeouts due to hitting the gateway rate limit 2020-09-14 03:20:16 -04:00
Rapptz 18141c0cf9 Maximize the amount of concurrency while chunking.
In order to reduce our amount of backpressure we need to limit the
amount of concurrent chunk requests we can have so the gateway buffer
has some time to breathe.
2020-09-14 03:20:16 -04:00
Rapptz 022ec9af1d Check for zombie connections through last received payload
The previous code would check zombie connections depending on whether
HEARTBEAT_ACK was received. Unfortunately when there's exceeding
backpressure the connection can terminate since the HEARTBEAT_ACK is
buffered very far away despite it being there, just not received yet.
2020-09-14 03:20:16 -04:00
Rapptz 9492cb1242 Speed up chunking for guilds with presence intent enabled 2020-09-14 03:20:16 -04:00
Rapptz a76f9ce8ef Maximize concurrency when chunking on AutoSharded clients 2020-09-14 03:20:16 -04:00
Rapptz faf1db1583 Use a lock for the gateway rate limiter.
This will allow for higher concurrency in AutoSharded situations where
I can mostly "fire and forget" the chunk requests.
2020-09-14 03:20:15 -04:00
Rapptz d6defbc6b2 Heartbeats bypass the rate limits for gateway 2020-09-14 03:20:15 -04:00
Rapptz 5db9a3551f All guilds require chunking if opting into it 2020-09-14 03:20:15 -04:00
Rapptz e8e4886fd8 Handle user updates within GUILD_MEMBER_UPDATE 2020-09-14 03:20:15 -04:00
Rapptz 95bec0dcee Rewrite chunking to work with intents.
This slows down chunking significantly for bots in a large number of
guilds since it goes down from 75 guilds/request to 1 guild/request.
However the logic was rewritten to fire the chunking request
immediately after receiving the GUILD_CREATE rather than waiting for
all the guilds in the ready stream before doing it.
2020-09-14 03:20:15 -04:00
Rapptz f46257faa6 Add more close codes that can't be handled for reconnecting. 2020-09-14 03:20:15 -04:00
Rapptz c0a3aaa98c Change unknown cache log warnings from WARNING -> DEBUG 2020-09-14 03:20:15 -04:00
Rapptz 75c24bde16 Handle gateway rate limits by using a rate limiter.
With the new chunking changes this will become necessary and we don't
want to disconnect from having too many outwards requests.
2020-09-14 03:20:15 -04:00
Rapptz a9cb851a3c Add support for guild intents 2020-09-14 03:20:15 -04:00
Rapptz 986adae108 Revert "Add fetch_message_fast using history endpoint"
This reverts commit a309088ae4.

A rate limited was added to this method after 5 years defeating the
purpose of it.
2020-09-14 01:18:09 -04:00
Rapptz 77b0ddca7c Raise if member intent is not enabled 2020-09-10 06:46:16 -04:00
Rapptz 61ec62da11 Don't cache members during guild start up if cache is disabled.
This is mainly a half-implemented commit. There are a few more places
where cache consistency is necessary. In the future there will
probably be a member cache policy enum that will be used and cache
consistency will be tackled in part of that larger refactoring.
2020-09-10 05:58:24 -04:00
Rapptz 009a961006 Add Guild.chunk and deprecated Client.request_offline_members 2020-09-10 05:56:48 -04:00
Rapptz cb211c36bd Fix Client.request_offline_members no longer working 2020-09-10 05:26:35 -04:00
Rapptz a293d87c77 Add versionadded for intents enum 2020-09-10 05:17:52 -04:00
Rapptz 41fd2740cb Explicitly disable the members presence by default 2020-09-10 05:17:52 -04:00
Rapptz 65f591705d Fix timeouts due to hitting the gateway rate limit 2020-09-10 05:17:52 -04:00
Rapptz 81bfdea9df Maximize the amount of concurrency while chunking.
In order to reduce our amount of backpressure we need to limit the
amount of concurrent chunk requests we can have so the gateway buffer
has some time to breathe.
2020-09-10 05:17:52 -04:00
Rapptz 2129ae29be Check for zombie connections through last received payload
The previous code would check zombie connections depending on whether
HEARTBEAT_ACK was received. Unfortunately when there's exceeding
backpressure the connection can terminate since the HEARTBEAT_ACK is
buffered very far away despite it being there, just not received yet.
2020-09-10 05:17:52 -04:00