irc-bot 0.2.1

A library for writing Internet Relay Chat (IRC) bots in Rust
Documentation
use core::BotCmdAuthLvl as Auth;
use core::*;
use yaml_rust::Yaml;

pub fn mk() -> Module {
    mk_module("test")
        .command(
            "test-line-wrap",
            "",
            "Request a long message from the bot, to test its line-wrapping function.",
            Auth::Admin,
            Box::new(test_line_wrap),
            &[],
        )
        .command(
            "test-error-handling",
            "",
            "This command's handler function returns an error, to test the bot framework's \
             error-handling mechanism(s).",
            Auth::Admin,
            Box::new(test_error_handling),
            &[],
        )
        .command(
            "test-panic-catching",
            "",
            "This command's handler function panics, to test the bot framework's panic-catching \
             mechanism.",
            Auth::Admin,
            Box::new(test_panic_catching),
            &[],
        )
        .end()
}

const LOREM_IPSUM_TEXT: &'static str =
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer et tincidunt nibh. Nullam \
     aliquet imperdiet cursus. Duis at turpis mollis, iaculis quam sed, efficitur arcu. Sed vel \
     massa sit amet magna efficitur hendrerit. Donec auctor auctor ligula nec semper. Nulla a \
     odio suscipit, suscipit velit in, ullamcorper velit. In bibendum pulvinar ipsum. Fusce \
     elementum maximus mattis. Donec sed mauris nec ante eleifend dapibus non faucibus massa. \
     Vivamus a auctor ligula. Cras hendrerit, velit sit amet sagittis placerat, elit elit feugiat \
     quam, vel aliquet ligula elit sit amet nibh. Fusce dignissim, orci vitae sodales ornare, \
     lacus risus facilisis sem, a imperdiet lectus massa at velit. Etiam sed magna congue, \
     pulvinar diam quis, facilisis risus. Sed semper, lectus vulputate luctus fermentum, quam \
     lacus consectetur arcu, ac mollis ipsum metus vel nunc. Ut posuere arcu enim, id dictum arcu \
     sagittis in. Mauris a lectus nec ligula eleifend rutrum. Class aptent taciti sociosqu ad \
     litora torquent per conubia massa nunc.";

fn test_line_wrap(_: &State, _: &MsgMetadata, _: &Yaml) -> BotCmdResult {
    BotCmdResult::Ok(Reaction::Reply(LOREM_IPSUM_TEXT.into()))
}

fn test_error_handling(_: &State, _: &MsgMetadata, _: &Yaml) -> BotCmdResult {
    BotCmdResult::BotErrMsg("An error for testing purposes.".into())
}

fn test_panic_catching(_: &State, _: &MsgMetadata, _: &Yaml) -> BotCmdResult {
    panic!("Panicking for testing purposes....")
}