summary refs log tree commit diff
path: root/src/system/aggregator.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/system/aggregator.rs')
-rw-r--r--src/system/aggregator.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/system/aggregator.rs b/src/system/aggregator.rs
index 552ea8e..f73dec5 100644
--- a/src/system/aggregator.rs
+++ b/src/system/aggregator.rs
@@ -1,7 +1,7 @@
 use lru::LruCache;
 use std::num::NonZeroUsize;
 use tokio::sync::mpsc::{channel, Receiver};
-use twilight_model::{util::Timestamp, channel::Message, gateway::payload::incoming::MessageUpdate, id::{marker::MessageMarker, Id}};
+use twilight_model::{channel::Message, gateway::payload::incoming::MessageUpdate, id::{marker::{MessageMarker, UserMarker}, Id}, util::Timestamp};
 use crate::system::types::System;
 
 type DiscordToken = String;
@@ -15,7 +15,7 @@ enum IncomingMessage {
 
 pub enum MemberEvent {
     Message(Message, DiscordToken),
-    GatewayConnect(DiscordToken),
+    GatewayConnect(DiscordToken, Id<UserMarker>),
     GatewayDisconnect(DiscordToken),
     GatewayError(DiscordToken),
 }
@@ -46,7 +46,7 @@ impl MessageAggregator {
                             }
                         },
                         Ok(twilight_gateway::Event::Ready(ready)) => {
-                            let _ = outgoing_channel.send(MemberEvent::GatewayConnect(member.discord_token.clone())).await;
+                            let _ = outgoing_channel.send(MemberEvent::GatewayConnect(member.discord_token.clone(), ready.user.id)).await;
                         },
                         Ok(twilight_gateway::Event::MessageCreate(message)) => {
                             if message.author.id == followed_user {
@@ -84,23 +84,23 @@ impl MessageAggregator {
                     Some(IncomingMessage::Complete { message, timestamp, seen_by }) => {
                         if let None = message_cache.get(&message.id) {
                             message_cache.put(message.id.clone(), (message.clone(), timestamp, seen_by.clone()));
-                            sender.send(MemberEvent::Message(message, seen_by)).await;
+                            let _ = sender.send(MemberEvent::Message(message, seen_by)).await;
                         }
                         
                     },
                     Some(IncomingMessage::Partial { message, timestamp, seen_by }) => {
-                        if let Some((previous_message, previous_timestamp, previously_seen_by)) = message_cache.get(&message.id) {
+                        if let Some((previous_message, previous_timestamp, _)) = message_cache.get(&message.id) {
                             if previous_timestamp.as_micros() < timestamp.as_micros() {
                                 let mut updated_message = previous_message.clone();
                                 updated_message.content = message.content.unwrap_or(updated_message.content);
                                 message_cache.put(message.id.clone(), (updated_message.clone(), timestamp, seen_by.clone()));
-                                sender.send(MemberEvent::Message(updated_message, seen_by)).await;
+                                let _ = sender.send(MemberEvent::Message(updated_message, seen_by)).await;
                             }
                         } else {
                             let client = system.members.iter().find(|m| m.discord_token == seen_by).map(|m| m.client.clone()).expect("Could not find client");
                             if let Ok(updated_message) = client.lock().await.message(message.channel_id, message.id).await.unwrap().model().await.map(|r|r.clone()) {
                                 message_cache.put(message.id.clone(), (updated_message.clone(), timestamp, seen_by.clone()));
-                                sender.send(MemberEvent::Message(updated_message, seen_by)).await;
+                                let _ = sender.send(MemberEvent::Message(updated_message, seen_by)).await;
                             };
                         }