diff --git a/crates/gateway/src/discord/gateway.rs b/crates/gateway/src/discord/gateway.rs index 76643965..92acdeaa 100644 --- a/crates/gateway/src/discord/gateway.rs +++ b/crates/gateway/src/discord/gateway.rs @@ -175,13 +175,15 @@ pub async fn runner( .increment(1); // update shard state and discord cache - if let Err(error) = tx_state.try_send(( - shard.id(), - ShardStateEvent::Other, - Some(event.clone()), - None, - )) { - tracing::error!(?error, "error updating shard state"); + if matches!(event, Event::Ready(_)) || matches!(event, Event::Resumed) { + if let Err(error) = tx_state.try_send(( + shard.id(), + ShardStateEvent::Other, + Some(event.clone()), + None, + )) { + tracing::error!(?error, "error updating shard state"); + } } // need to do heartbeat separately, to get the latency let latency_num = shard diff --git a/crates/gateway/src/discord/shard_state.rs b/crates/gateway/src/discord/shard_state.rs index 437560be..c85e02c8 100644 --- a/crates/gateway/src/discord/shard_state.rs +++ b/crates/gateway/src/discord/shard_state.rs @@ -25,6 +25,7 @@ pub fn new(redis: RedisPool) -> ShardStateManager { impl ShardStateManager { pub async fn handle_event(&self, shard_id: u32, event: Event) -> anyhow::Result<()> { match event { + // also update gateway.rs with event types Event::Ready(_) => self.ready_or_resumed(shard_id, false).await, Event::Resumed => self.ready_or_resumed(shard_id, true).await, _ => Ok(()),