fix(gateway): only send relevant events to shard state manager

This commit is contained in:
alyssa 2025-05-24 13:19:40 +00:00
parent 05817afdba
commit 73103dc2b5
2 changed files with 10 additions and 7 deletions

View file

@ -175,13 +175,15 @@ pub async fn runner(
.increment(1); .increment(1);
// update shard state and discord cache // update shard state and discord cache
if let Err(error) = tx_state.try_send(( if matches!(event, Event::Ready(_)) || matches!(event, Event::Resumed) {
shard.id(), if let Err(error) = tx_state.try_send((
ShardStateEvent::Other, shard.id(),
Some(event.clone()), ShardStateEvent::Other,
None, Some(event.clone()),
)) { None,
tracing::error!(?error, "error updating shard state"); )) {
tracing::error!(?error, "error updating shard state");
}
} }
// need to do heartbeat separately, to get the latency // need to do heartbeat separately, to get the latency
let latency_num = shard let latency_num = shard

View file

@ -25,6 +25,7 @@ pub fn new(redis: RedisPool) -> ShardStateManager {
impl ShardStateManager { impl ShardStateManager {
pub async fn handle_event(&self, shard_id: u32, event: Event) -> anyhow::Result<()> { pub async fn handle_event(&self, shard_id: u32, event: Event) -> anyhow::Result<()> {
match event { match event {
// also update gateway.rs with event types
Event::Ready(_) => self.ready_or_resumed(shard_id, false).await, Event::Ready(_) => self.ready_or_resumed(shard_id, false).await,
Event::Resumed => self.ready_or_resumed(shard_id, true).await, Event::Resumed => self.ready_or_resumed(shard_id, true).await,
_ => Ok(()), _ => Ok(()),