Crate irc [] [src]

A simple, thread-safe, and async-friendly library for IRC clients.

Quick Start

The main public API is entirely exported in client::prelude. This should include everything necessary to write an IRC client or bot.

A Whirlwind Tour

The irc crate is divided into two main modules: client and proto. As the names suggest, the client module captures the whole of the client-side functionality, while the proto module features general components of an IRC protocol implementation that could in principle be used in either client or server software. Both modules feature a number of components that are low-level and can be used to build alternative APIs for the IRC protocol. For the average user, the higher-level components for an IRC client are all re-exported in client::prelude. That module serves as the best starting point for a new user trying to understand the high-level API.

Example

use irc::client::prelude::*;

// configuration is loaded from config.toml into a Config
let server = IrcServer::new("config.toml").unwrap();
// identify comes from ServerExt
server.identify().unwrap();
// for_each_incoming comes from Server
server.for_each_incoming(|irc_msg| {
  // irc_msg is a Message
  match irc_msg.command {
    Command::PRIVMSG(channel, message) => if message.contains(server.current_nickname()) {
      // send_privmsg comes from ServerExt
      server.send_privmsg(&channel, "beep boop").unwrap();
    }
    _ => ()
  }
}).unwrap();

Modules

client

A simple, thread-safe, and async-friendly IRC client library.

error

Errors for irc crate using error_chain.

proto

Support for the IRC protocol using Tokio.