diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2020-11-17 11:23:53 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2020-11-17 11:23:53 +0100 |
| commit | 99666a04a490d6467288f28577755dbebbf55054 (patch) | |
| tree | bbb5cb71ccf8463cd3142625f9c60b77687f54f9 | |
| parent | 24ff336706ba1dddb0ab8c7e264f39811128c5cf (diff) | |
| download | kodapa-99666a04a490d6467288f28577755dbebbf55054.tar.gz | |
discord: react to !add instead of answering
| -rw-r--r-- | src/agenda.rs | 8 | ||||
| -rw-r--r-- | src/discord.rs | 46 |
2 files changed, 33 insertions, 21 deletions
diff --git a/src/agenda.rs b/src/agenda.rs index d1a940d..c046f3f 100644 --- a/src/agenda.rs +++ b/src/agenda.rs @@ -24,11 +24,6 @@ impl AgendaPoint { pub fn to_add_message(&self) -> String { format!("'{}' added by {}", self.title, self.adder) } - - fn to_add_message_response(&self) -> String { - //TODO should add a reaction instead - format!("Added '{}'", self.title) - } } #[derive(Deserialize, Serialize)] @@ -60,10 +55,9 @@ pub fn parse_message( adder: sender.to_string(), }; point_sender.send(agenda_point.clone()).unwrap(); - let response = agenda_point.to_add_message_response(); agenda.points.push(agenda_point); agenda.write(); - Ok(Some(response)) + Ok(None) } else if message.starts_with("!agenda") { Ok(Some(read_agenda() .points diff --git a/src/discord.rs b/src/discord.rs index 0507da8..2410a3f 100644 --- a/src/discord.rs +++ b/src/discord.rs @@ -8,6 +8,7 @@ use discord::{ ChannelId, Event, PossibleServer, + ReactionEmoji, }, Discord, Error, @@ -71,10 +72,11 @@ fn receive_events( server .channels .iter() - .map(|channel| format!("{}: {} ({:?})", - channel.name, - channel.id, - channel.kind)) + .map(|channel| + format!("{}: {} ({:?})", + channel.name, + channel.id, + channel.kind)) .collect::<Vec<_>>()); } } @@ -83,15 +85,29 @@ fn receive_events( Ok(Event::MessageCreate(message)) => { if let Some(channel) = channel { if channel == message.channel_id { - if let Ok(Some(s)) = parse_message( + match parse_message( &message.content, &message.author.name, - &sender, + &sender ) { - client.lock().unwrap().send_message(channel, - &s, - "", - false).unwrap(); + Ok(Some(s)) => { + client.lock().unwrap().send_message( + channel, + &s, + "", + false + ).unwrap(); + } + Ok(None) => { + // thumbs up + client.lock().unwrap().add_reaction( + channel, + message.id, + ReactionEmoji::Unicode("👍".to_string()) + ).unwrap(); + + } + Err(_) => {} } } } @@ -116,10 +132,12 @@ async fn receive_from_slack( if let Some(channel) = channel { while let Some(point) = receiver.recv().await { println!("Discord received '{}'", point); - client.lock().unwrap().send_message(channel, - &point.to_add_message(), - "", - false).unwrap(); + client.lock().unwrap().send_message( + channel, + &point.to_add_message(), + "", + false + ).unwrap(); } } |
