* Initial guild member support
* Add back is_guild_evicted() check, fix some documentation/typing, actually use count
* Better error handling
* Fix predicate and chunking on small guilds
* Silence asyncio.CancelledErrors when bot is stopped
* Properly filter events, assert that assert_guild_presence_count() works
* Working events!!!!! (also a fix for sometimes crashing when joining a guild)
* Uniform timeouts
This results in poor ergonomics due to the lack of default generics
for the common case. For most users this ends up in a degraded
experience since the type will resolve to Unknown rather than at the
very least a Client.
Segments where readability was hampered were fixed by appropriate
format skipping directives. New code should hopefully be black
compatible. The moment they remove the -S option is probably the moment
I stop using black though.
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.