aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2020-11-11 13:44:26 +0100
committerGustav Sörnäs <gustav@sornas.net>2020-11-11 13:44:26 +0100
commitf25e22abe842f51f2f29df1f885caa0939376ce8 (patch)
tree77bc2e73540e5cb546a9eea694833df0fcf13186
parent07e3d4f5f772080028f86661ed7f6e95f63207b4 (diff)
downloadkodapa-f25e22abe842f51f2f29df1f885caa0939376ce8.tar.gz
send messages from slack to discord handler
-rw-r--r--src/slack.rs38
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) => {