irc_lib 0.1.4

Simple IRC library with plugin support
Documentation
use irc_lib::{IrcMessage, IrcPlugin, message};

#[derive(Debug)]
pub struct EchoPlugin;
impl IrcPlugin for EchoPlugin {
    fn message(&self, server: &irc_lib::Server, message: &IrcMessage) {
        println!("Plugin received message: {:?}", message);
        if let IrcMessage {
            command: message::Command::PrivMsg,
            ..
        } = message
        {
            if let (Some(content), Some(message::Prefix::User { nick: source, .. })) =
                (message.get_message(), &message.prefix)
            {
                let reply = format!("{}: {}", source, content);
                let channel = message.get_channel().unwrap();
                let msg = IrcMessage::builder()
                    .command(message::Command::PrivMsg)
                    .param(message::Param::Channel(channel.to_string()))
                    .param(message::Param::Message(reply))
                    .build()
                    .unwrap();
                if let Err(e) = server.send_message(msg) {
                    println!("Error sending message: {:?}", e)
                }
            }
        }
    }
}