From f25e22abe842f51f2f29df1f885caa0939376ce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 11 Nov 2020 13:44:26 +0100 Subject: send messages from slack to discord handler --- src/slack.rs | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) (limited to 'src/slack.rs') diff --git a/src/slack.rs b/src/slack.rs index fb4eece..564ca76 100644 --- a/src/slack.rs +++ b/src/slack.rs @@ -1,4 +1,8 @@ use futures::join; +use slack::{ + Event, + Message, +}; use tokio::{ sync::mpsc, task::{ @@ -7,11 +11,39 @@ use tokio::{ }, }; -struct Handler; +struct Handler { + sender: mpsc::UnboundedSender, +} + +impl Handler { + fn new(sender: mpsc::UnboundedSender) -> Self { + Self { + sender + } + } + + fn sender(&self) -> &mpsc::UnboundedSender { + &self.sender + } +} impl slack::EventHandler for Handler { fn on_event(&mut self, _cli: &slack::RtmClient, event: slack::Event) { println!("on_event: {:#?}", event); + match event { + Event::Message(msg) => { + match *msg { + Message::Standard(msg) => { + self.sender().send(format!("{} says: {}", + msg.user.unwrap_or("??".to_string()), + msg.text.unwrap_or("??".to_string())) + .to_string()).unwrap(); + } + _ => {} + } + } + _ => {} + } } fn on_close(&mut self, _cli: &slack::RtmClient) { @@ -25,7 +57,7 @@ impl slack::EventHandler for Handler { pub async fn handle( token: Option, - _sender: mpsc::UnboundedSender, + sender: mpsc::UnboundedSender, mut receiver: mpsc::UnboundedReceiver, ) { println!("Setting up Slack"); @@ -34,7 +66,7 @@ pub async fn handle( join!( spawn_blocking(move || { - let mut handler = Handler; + let mut handler = Handler::new(sender); match slack::RtmClient::login_and_run(&token, &mut handler) { Ok(_) => {} Err(e) => { -- cgit v1.2.1