Add api for awaiting responses to gateway send events #591
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds some new methods to
GatewayHandle
:identify
, which functions likesend_identify
, but waits to receive the responseresume
, which functions likesend_resume
, but waits to receive the responserequest_guild_members
, which functions likesend_request_guild_members
, but waits to receive allGuildMembersChunk
supdate_voice_state
, which functions likesend_update_voice_state
, but waits up to 1 second to receive a potential responserequest_last_messages
, which functions likesend_request_last_messages
, but waits to receive the responseThese work by creating a temporary observer, which sends the event through either a
tokio::sync::broadcast
ortokio::sync::oneshot
channel. These two observer types are now also part of the public api asBroadcastEventObserver<T>
andOneshotEventObserver<T>
It also adds
Events.session.resumed
andGatewayResumed
for theResumed
dispatch event. I'm still not sure if resuming is practically possible, since you need to provide the last received sequence number