rustcord/src/commands/brainfuck.rs

55 lines
1.7 KiB
Rust

use serenity::{
framework::standard::{macros::command, Args, CommandError, CommandResult},
model::channel::Message,
prelude::*,
};
// brainfuck interpreter
#[command]
#[aliases("bf", "brainfrick")]
fn brainfuck(ctx: &mut Context, message: &Message, args: Args) -> CommandResult {
use brainfrick::Brainfuck;
let input = match args.rest().trim() {
"" => {
return Err(CommandError(s!("Called without input!")));
}
v => v,
};
let output = Brainfuck::execute(input);
match output {
Ok(v) => {
let _ = message.channel_id.send_message(&ctx.http, |m| {
m.embed(|e| {
e.title("Brainfuck interpreter")
.description(format!(
"Input\n```brainfuck\n{}\n```\nOutput:\n```{}\n```",
input, v
))
.author(|a| {
a.name(&message.author.name)
.icon_url(message.author.avatar_url().unwrap())
})
.colour(0xffd1dc)
})
});
}
Err(err) => {
let _ = message.channel_id.send_message(&ctx.http, |m| {
m.embed(|e| {
e.title("Brainfuck interpreter")
.description(format!("Error at:\n```\n{}:{}\n```", err.line(), err.col()))
.author(|a| {
a.name(&message.author.name)
.icon_url(message.author.avatar_url().unwrap())
})
.colour(0xff6961)
})
});
}
}
Ok(())
}