forked from sorceress/rustcord
55 lines
1.7 KiB
Rust
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(())
|
|
}
|