diff --git a/src/gateway.rs b/src/gateway.rs index 9232c2d..a39cb0f 100644 --- a/src/gateway.rs +++ b/src/gateway.rs @@ -201,7 +201,7 @@ impl GatewayHandle { .unwrap(); } - pub async fn observe>( + pub async fn observer_channel>( &self, object: Arc>, ) -> watch::Receiver>> { @@ -235,11 +235,20 @@ impl GatewayHandle { &self, object: Arc>, ) -> Arc> { - let channel = self.observe(object.clone()).await; + let channel = self.observer_channel(object.clone()).await; let object = channel.borrow().clone(); object } + pub async fn observe_and_into_inner>( + &self, + object: Arc>, + ) -> T { + let channel = self.observer_channel(object.clone()).await; + let object = channel.borrow().clone().read().unwrap().clone(); + object + } + /// Sends an identify event to the gateway pub async fn send_identify(&self, to_send: types::GatewayIdentifyPayload) { let to_send_value = serde_json::to_value(&to_send).unwrap();