diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2020-11-11 13:44:26 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2020-11-11 13:44:26 +0100 |
| commit | f25e22abe842f51f2f29df1f885caa0939376ce8 (patch) | |
| tree | 77bc2e73540e5cb546a9eea694833df0fcf13186 | |
| parent | 07e3d4f5f772080028f86661ed7f6e95f63207b4 (diff) | |
| download | kodapa-f25e22abe842f51f2f29df1f885caa0939376ce8.tar.gz | |
send messages from slack to discord handler
| -rw-r--r-- | src/slack.rs | 38 |
1 files changed, 35 insertions, 3 deletions
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<String>, +} + +impl Handler { + fn new(sender: mpsc::UnboundedSender<String>) -> Self { + Self { + sender + } + } + + fn sender(&self) -> &mpsc::UnboundedSender<String> { + &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<String>, - _sender: mpsc::UnboundedSender<String>, + sender: mpsc::UnboundedSender<String>, mut receiver: mpsc::UnboundedReceiver<String>, ) { 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) => { |
