diff --git a/src/modules/discord.rs b/src/modules/discord.rs index 4cd4526..8681f7a 100644 --- a/src/modules/discord.rs +++ b/src/modules/discord.rs @@ -3,7 +3,10 @@ use discord::Discord; use discord::model::{Event, PossibleServer}; use modules::EventLoop; + +use toml; use toml::value::Table; +use helpers::config::Config; use event; @@ -20,24 +23,30 @@ use {MessageSender, Message, User, Channel}; pub struct DiscordModule { token: String, - playing: String + playing: String, + guilds: Vec } const DEFAULT_PLAYING: &'static str = "tenquestionmarks 0.0.3"; impl DiscordModule { pub fn new (_: &Table, configuration: &Table) -> Box { - let token = configuration.get("token") - .and_then(|value| value.as_str()) - .unwrap_or(""); + let token = configuration.get_string("token").unwrap_or(""); + let playing = configuration.get_string("playing").unwrap_or(DEFAULT_PLAYING); - let playing = configuration.get("playing") - .and_then(|value| value.as_str()) - .unwrap_or(DEFAULT_PLAYING); + let guilds = configuration.get_vec("guilds") + .unwrap_or(vec![]) + .iter() + .map(toml::Value::as_str) + .filter(Option::is_some) + .map(Option::unwrap) + .map(String::from) + .collect(); Box::new(DiscordModule { token: String::from(token), - playing: String::from(playing) + playing: String::from(playing), + guilds: guilds }) } }