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);
// 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

View file

@ -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(()),