diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/agenda.rs | 10 | ||||
| -rw-r--r-- | src/slack.rs | 14 |
2 files changed, 15 insertions, 9 deletions
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; + } + } } }), ); |
