Crates.io | rustirc |
lib.rs | rustirc |
version | 0.1.0 |
source | src |
created_at | 2021-01-16 12:56:08.484575 |
updated_at | 2021-01-16 12:56:08.484575 |
description | A fully async IRC library and protocol implementation |
homepage | |
repository | https://github.com/theonlyartz/rustirc/ |
max_upload_size | |
id | 342782 |
size | 23,621 |
A fully asynchronous IRC client written in Rust
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(())
}