5 releases
Uses old Rust 2015
0.2.0 |
|
---|---|
0.1.1 | May 4, 2015 |
0.1.0 | Apr 30, 2015 |
0.0.3 | Dec 26, 2014 |
0.0.2 | Nov 21, 2014 |
#45 in #irc
150KB
1K
SLoC
irsc
This repository contains code that has not been properly tested yet, continue at the risk of doing stupid things while discovering parts of this library don't work.
Overview
Want to build an IRC bot with low resource consumption? You might want to have a look at this library (maybe later, though).
This library is supposed to be a thin layer over the IRC protocol, doing all the network IO and event parsing for you. Right now, it only works, nothing more.
Features
- Semi-complete implementation of RFC2812
- Some CTCP support
Planned
- Higher-level wrapper, directly aimed at writing bots
- Lots of tests
- Some documentation (yeah, sure)
Example
Compiles and works with rustc 1.1.0-nightly (c4b23aec4 2015-04-29)
and 3e898f8451229bcc4988b40e2edcaec348bf7f79
of this library.
extern crate irsc;
use std::borrow::ToOwned;
use std::borrow::Cow::*;
use irsc::client::Client;
use irsc::color::bold;
use irsc::*;
use irsc::Command::*;
use irsc::Reply::*;
static NAME: &'static str = "rusticbot";
static DESC: &'static str = "A bot, written in Rust.";
fn callback(server: &mut Client, msg: &Message) {
match Command::from_message(msg) {
Some(PRIVMSG(to, content)) => {
let from = msg.prefix().and_then(Ident::parse).unwrap();
let response = match msg.msg_type {
MsgType::Irc => format!("{} wrote: {}", from.nickname, bold(&content)),
MsgType::Ctcp => format!("{} emoted: {}", from.nickname, bold(&content["ACTION ".len()..]))
};
server.send(PRIVMSG(to, Owned(response))).unwrap();
},
_ => ()
}
match Reply::from_message(msg) {
Some(RPL_WELCOME(_)) => {
server.send(JOIN(vec![Borrowed("#botzoo")], vec![])).unwrap();
},
_ => ()
}
}
fn main() {
let mut s = Client::new();
s.connect("irc.mozilla.org".to_owned(), 6667).unwrap();
s.send(NICK(Borrowed(NAME))).unwrap();
s.send(USER(Borrowed(NAME), Borrowed("*"), Borrowed("*"), Borrowed(DESC))).unwrap();
// Dedicate this thread to listening and event processing
s.listen(callback).unwrap();
}
Dependencies
~3.5–5MB
~87K SLoC