| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
| |
Add the user ID to the client. This can be used when initializing the
framework on connection start, as well as the future voice manager.
|
| |
|
|
|
|
|
|
| |
Update the docs for `User::has_role` to reflect that
`Into<GuildContainer>` is only implemented for `PartialGuild`,
`GuildId`, and `u64`, not `Guild`.
(cherry picked from commit 00deef894ec458ac8abff914ed864ea63c47eda6)
|
| |
|
|
|
| |
The framework no longer needs the `is_bot` boolean state, since serenity
now only supports bot users.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
Add a function to determine which of two members has the higher
role hierarchy.
|
| | |
|
| |
|
|
|
|
|
| |
When calculating the latency between when a heartbeat was sent and a
heartbeat acknowledgement was received, ensure that the heartbeat
acknowledgement was received after the heartbeat was sent. This avoids a
panic. Otherwise, return None.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Further generic-ify the `after` parameter on the `reaction_users` method
of the following structs:
- `ChannelId`
- `Group`
- `GuildChannel`
- `Message`
- `Channel`
- `GuildChannel`
Do this by changing the `U` trait bound from `Into<UserId>` to
`Into<Option<UserId>>`.
This resolves problems determining types when passing `None` as the
argument, as reported in #247.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
While building permissions in the `Guild::permissions_in` function -
which is relied upon by most model functions to check CurrentUser
permissions - the channel overwrites of the given channel were iterated
over incorrectly.
The channel overwrites were iterated over in a non-specified order,
resulting in overwrites being applied in a random order. However,
Discord operates by applying permissions from a down-top order: role ID
0 is below role ID 1, which is below role ID 2, etc. This means that
prior to applying permissions we must first sort by position so that
lower positioned roles are iterated over first.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
According to [this commit], the game type has been removed.
[this commit]: https://github.com/discordapp/discord-api-docs/commit/50999182f307ffda9ac7208a48570586ea446c08#diff-b307d936b736f302bc7cc153f0d8a0a3L779
|
| |
|
|
| |
This also fixes no-builder compilation
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
Remove the `Error::UnknownStatus` variant, and change
`Error::InvalidRequest(StatusCode)` to
`Error::UnsuccessfulRequest(hyper::Response)`. This is done to give the
user more information on why a request was unsuccessful, as before the
user did not have access to the response body or headers.
|
| |
|
|
|
| |
Add an event in the EventHandler to be called when a shard updates its
Connection Stage.
|
| |
|
|
|
|
| |
This exposes a method of retrieving a shard's status and latency through
the Shard Manager, as part of the existing Shard Runner Info struct. The
Shard Runner will update this whenever it notices a change.
|
| |
|
|
| |
Implement `Display` and derive `Hash` on `gateway::ConnectionStage`.
|
| |
|
|
|
|
|
| |
Add missing 'num' implementations from the following models:
- `channel::{ChannelType, MessageType}`
- `gateway::GameType`
|
| |
|
|
|
|
| |
By negating hashing altogether.
The increase is around 1000-ish nanoseconds saved.
|
| |
|
|
|
|
|
| |
Use rfind, in case there's more '#' in username than just the discriminator
Split at pos+1 instead of pos and remove the trailing '#' in the split.0 (Name)
Fix bug with parsing
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
Adds an animated structfield to `Emoji` and `ReactionType`'s `Custom`
variant, which defaults to false if not present.
A test has been added for deserializing it, taken from a REST API GET
Emojis response.
(cherry picked from commit 5286949f424e824784344ebb7b7af4e52fb819c3)
|
| | |
|
| |
|
|
|
| |
This commit makes GatewayEvent no longer unwrap Dispatch
deserializations, and instead Try? it away.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
Fix the deserialization of `model::guild::Guild` when
`Guild::system_channel_id` is not present.
Additionally, add a test case for this.
|
| |
|
|
|
|
|
| |
Have serde default on the `presences` and `private_channels`
structfields of `Ready`. Some JSON serializers might leave these out
when serializing if they're empty, so resolve this by simply defaulting
to empty maps.
|
| | |
|
| | |
|
| |
|
|
|
| |
Trims the token given as an argument in Client::new, which will strip
away whitespace that might occur due to including the token from a file.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
Fix shards by taking away their responsibility to re-identify, instead
shutting down shard runners and going through the shard queuer to
restart a shard runner and its associated shard.
This fixes the case where a running shard's session invalidates and
re-IDENTIFYs within 5 seconds before queued shard starts, causing a
cascading failure of sessions for new shards.
|
| | |
|
| |
|
|
|
| |
Fix clippy lints and subsequently accept references for more function
parameters.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
When the ShardQueuer fails to restart a shard (such as due to a network
error, an issue on Discord's side, Cloudflare, etc.), it will now push
the ID onto a queue.
Every 5 seconds messages will attempt to be read from the receiver, and
if one is not read after the timeout, a queued shard start will occur
(if one is queued).
This should fix a number of reconnection issues.
|