1 unstable release

0.1.0 Jan 16, 2021

#16 in #sent

MIT license

16KB
364 lines

rustirc

A fully asynchronous IRC client written in Rust

A fully working echo bot example

use rustirc::{
    client::{Client, ClientState},
    event_handler::EventHandler,
    message_parser,
};

struct Handler;

#[async_trait::async_trait]
impl EventHandler for Handler {
    async fn on_message_sent(&self, client: &mut Client, message: message_parser::Message) {
        println!(
            "Message content => {} | sent by: {}",
            message.parameters[1],
            message.source.unwrap()
        );

        // That means we're in a channel and we can send a message
        match client.state {
            ClientState::InChannel(_) => {
                client
                    .send_message(message.parameters[1])
                    .await;
            }
            _ => {}
        }
    }
    
    // Fires an unimplemented raw event
    async fn on_unimplemented(&self, client: &mut Client, message: message_parser::Message) {
        // Do as you you'd like
    }
    
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut c = Client::new("localhost", 6667)
        .handler(Handler)
        .connect()
        .await?;

    c.start().await?;
    Ok(())
}

Dependencies

~6–11MB
~123K SLoC