diff --git a/src/modules/discord.rs b/src/modules/discord.rs index 115770c..53198f2 100644 --- a/src/modules/discord.rs +++ b/src/modules/discord.rs @@ -1,6 +1,6 @@ use discord; use discord::Discord; -use discord::model::Event; +use discord::model::{Event, PossibleServer}; use modules::Module; use toml::Table; @@ -61,7 +61,36 @@ impl Module for DiscordModule { connection.set_game_name(self.playing.clone()); loop { - match connection.recv_event() { + let event = connection.recv_event(); + debug!("Received event: {:?}", event); + + match event { + Ok(Event::ServerCreate(server)) => { + match server { + PossibleServer::Online(server) => { + info!("Joined server: {}", server.name); + for channel in server.channels { + info!(" - Joined channel: {}", channel.name); + + match sender.send(event::Envelope::new(event::Event::SelfJoin { + channel: Channel { + name: channel.name, + description: String::from(""), + topic: channel.topic.unwrap_or_else(|| String::from("")), + sender: Box::new(DiscordMessageSender { + discord: discord.clone(), + channel_id: channel.id + }) + } + })) { + Err(err) => error!("Error sending selfjoin event: {:?}", err), + Ok(_) => {} + } + } + }, + _ => {} + } + }, Ok(Event::MessageCreate(message)) => { let author = User { name: message.author.name.clone(),