* 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
Since there is no generic information in `flag_value.__init__()`,
`flag_value` descriptors get stored as `flag_value[<nothing>]` in mypy
strict mode and then the `__get__` overloads never match. This leads to
errors when using things like `permissions_instance.embed_links` since
`<nothing>` never matches `Permissions`.
The generic inheritance isn't needed at all since the type information
we care about comes from the call site of `__get__` and not the
instantiation of the descriptor.
This is a breaking change.
This does the following transformations, assuming `asset` represents
an asset type.
Object.is_asset_animated() => Object.asset.is_animated()
Object.asset => Object.asset.key
Object.asset_url => Object.asset_url
Object.asset_url_as => Object.asset.replace(...)
Since the asset type now requires a key (or hash, if you will),
Emoji had to be flattened similar to how Attachment was done since
these assets are keyed solely ID.
Emoji.url (Asset) => Emoji.url (str)
Emoji.url_as => removed
Emoji.url.read => Emoji.read
Emoji.url.save => Emoji.save
This transformation was also done to PartialEmoji.