aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2020-11-17 11:23:53 +0100
committerGustav Sörnäs <gustav@sornas.net>2020-11-17 11:23:53 +0100
commit99666a04a490d6467288f28577755dbebbf55054 (patch)
treebbb5cb71ccf8463cd3142625f9c60b77687f54f9
parent24ff336706ba1dddb0ab8c7e264f39811128c5cf (diff)
downloadkodapa-99666a04a490d6467288f28577755dbebbf55054.tar.gz
discord: react to !add instead of answering
-rw-r--r--src/agenda.rs8
-rw-r--r--src/discord.rs46
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();
}
}