nasus

nasus is a osu BanchoBot handler 📬

Example

```rust,ignore

[tokio::main]

async fn main() -> Result<(), Box> { use nasus::{BanchoConfig, CmdIn, CmdOut, Nasus};

let config = BanchoConfig {
    username: "Auracle".to_string(),
    irc_token: "IRC Token".to_string(),
    host: "irc.ppy.sh".to_string(),
    port: 6667,
    bot: false,
};
let mut nasus = Nasus::new(config).await?;

loop {
    nasus.work().await?;

    match nasus.inputs.pop() {
        Some(cmd_in) => match cmd_in {
            CmdIn::AuthSuccess { message } => println!("{}", message),
            CmdIn::AuthFailure { message } => println!("{}", message),
            CmdIn::ReceivePM {
                sender,
                receiver,
                message,
                action,
            } => {
                println!("{}: {}", sender, message);

                let replies = match action {
                    true => "I see what you did there",
                    false => "I'm not a bot, I swear!",
                };
                let cmd_out = CmdOut::SendPM {
                    receiver: sender,
                    message: replies.to_string(),
                };
                nasus.write_command(cmd_out).await?;
                println!("{}: {}", receiver, replies);
            }
            _ => {}
        },
        None => {}
    };

    match nasus.outputs.pop() {
        Some(cmd_out) => match cmd_out {
            CmdOut::SendPM { receiver, message } => println!("{}: {}", receiver, message),
            _ => {}
        },
        None => {}
    };
}

} ```

Commands

Commands we receive from BanchoBot are CmdIn

rust,ignore AuthSuccess { message: String } AuthFailure { message: String } MOTDStart { message: String } MOTDMiddle { message: String } MOTDEnd { message: String } Quit { user: String } UserNotFound ReceivePM { sender: String receiver: String message: String action: bool } Ping Pong

Commands we send to BanchoBot are CmdOut

rust,ignore Login { username: String, irc_token: String } SendPM { receiver: String, message: String } Ping Pong