aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Cargo.toml6
-rw-r--r--src/agenda.rs10
-rw-r--r--src/slack.rs14
3 files changed, 18 insertions, 12 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 57d042e..252b685 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -16,12 +16,12 @@ tokio-compat-02 = "0.1"
[dependencies.discord]
git = "https://github.com/SpaceManiac/discord-rs"
-default-features = false
+default-features = false # disable voice
[dependencies.serde]
version = "1.0"
features = [ "derive" ]
[dependencies.tokio]
-version = "0.2"
-features = [ "macros", "sync" ]
+version = "0.3"
+features = [ "macros", "rt", "rt-multi-thread", "sync" ]
diff --git a/src/agenda.rs b/src/agenda.rs
index 8f71c87..1254a41 100644
--- a/src/agenda.rs
+++ b/src/agenda.rs
@@ -95,9 +95,9 @@ where
}
}
-pub fn read_agenda() -> Agenda {
- serde_json::from_str::<Agenda>(
- &fs::read_to_string("agenda.json").expect("Can't read agenda.json"),
- )
- .expect("Error parsing agenda.json")
+fn read_agenda() -> Agenda {
+ match fs::read_to_string("agenda.json") {
+ Ok(s) => serde_json::from_str(&s).expect("Error parsing agenda.json"),
+ Err(_) => Agenda { points: Vec::new()},
+ }
}
diff --git a/src/slack.rs b/src/slack.rs
index 2a4c155..0b02fac 100644
--- a/src/slack.rs
+++ b/src/slack.rs
@@ -2,7 +2,7 @@ use crate::agenda::{self, parse_message, AgendaPoint, Emoji};
use crate::reminder::ReminderType;
use futures::join;
-use slack::{Event, Message};
+use slack::{error::Error, Event, Message};
use slack_api::{reactions, users};
use std::{
collections::{hash_map::Entry, HashMap},
@@ -196,9 +196,15 @@ pub async fn handle(
)),
spawn(handle_reminders(reminder, slack_sender, channel)),
spawn_blocking(move || {
- match client.run(&mut handler) {
- Ok(_) => {}
- Err(e) => println!("Error: {}", e),
+ loop {
+ match client.run(&mut handler) {
+ Ok(_) => {}
+ Err(Error::WebSocket(_)) => println!("Restart slack socket"),
+ Err(e) => {
+ println!("Error: {}", e);
+ break;
+ }
+ }
}
}),
);