diff --git a/src/modules/discord.rs b/src/modules/discord.rs index 8681f7a..8129de5 100644 --- a/src/modules/discord.rs +++ b/src/modules/discord.rs @@ -1,6 +1,6 @@ use discord; use discord::Discord; -use discord::model::{Event, PossibleServer}; +use discord::model::{Event, PossibleServer, ChannelId}; use modules::EventLoop; @@ -133,6 +133,9 @@ impl EventLoop for DiscordModule { } }); + let mut known_guild_ids: Vec = vec![]; + let mut known_channel_ids: Vec = vec![]; + loop { let event = connection.recv_event(); debug!("Received event: {:?}", event); @@ -141,8 +144,15 @@ impl EventLoop for DiscordModule { Ok(Event::ServerCreate(server)) => { match server { PossibleServer::Online(server) => { - info!("Joined server: {}", server.name); + let guild_id_as_string = format!("{}", server.id); + if !(self.guilds.is_empty() || self.guilds.contains(&guild_id_as_string)) { + continue; + } + + known_guild_ids.push(guild_id_as_string); + info!("Joined guild: {} (id {})", server.name, server.id); for channel in server.channels { + known_channel_ids.push(channel.id); info!(" - Joined channel: {}", channel.name); match sender.send(event::Event::SelfJoin { @@ -157,6 +167,10 @@ impl EventLoop for DiscordModule { } }, Ok(Event::MessageCreate(message)) => { + if !known_channel_ids.contains(&message.channel_id) { + continue; + } + let author = User { name: message.author.name.clone(), sender: Box::new(DiscordMessageSender {