47 lines
1.4 KiB
Rust
Raw Normal View History

2017-02-16 01:05:33 -06:00
use modules::Module;
use toml::Table;
use std::sync::mpsc::Receiver;
use event::Event;
2017-02-16 01:05:33 -06:00
pub struct EchoModule {
prefix: String
}
2017-02-16 01:05:33 -06:00
impl EchoModule {
pub fn new (configuration: &Table) -> Box<Module> {
let prefix = configuration.get("prefix")
.and_then(|value| value.as_str())
.unwrap_or("!echo ");
2017-02-16 01:05:33 -06:00
Box::new(EchoModule {
prefix: String::from(prefix)
})
}
}
2017-02-16 01:05:33 -06:00
impl Module for EchoModule {
fn consume_events (&self, receiver: Receiver<Event>) {
loop {
match receiver.recv() {
Ok(event) => {
match event {
Event::Message { content: message, channel, sender } => {
2017-02-17 02:38:15 -06:00
debug!("Received message... {:?}", message);
if message.starts_with(self.prefix.as_str()) {
let substring = &message[self.prefix.chars().count()..];
match channel {
Some(channel) => channel.send(substring),
None => sender.send(substring)
}
}
}
_ => ()
}
}
2017-02-17 02:38:15 -06:00
Err(error) => { error!("Error {:?}", error) }
}
}
}
}