pikadick/commands/
vaporwave.rs1use crate::checks::ENABLED_CHECK;
2use serenity::{
3 client::Context,
4 framework::standard::{
5 macros::command,
6 Args,
7 CommandResult,
8 },
9 model::channel::Message,
10};
11
12#[command]
13#[description("Vaporwave a phrase")]
14#[usage("\"<phrase>\"")]
15#[example("\"Hello World!\"")]
16#[min_args(1)]
17#[max_args(1)]
18#[checks(Enabled)]
19#[bucket("default")]
20pub async fn vaporwave(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult {
21 let phrase = args.single_quoted::<String>()?;
22 msg.channel_id
23 .say(&ctx.http, vaporwave_str(&phrase))
24 .await?;
25 Ok(())
26}
27
28pub fn vaporwave_str(data: &str) -> String {
29 data.chars()
30 .filter_map(|c| {
31 let c = c as u32;
32 if (33..=270).contains(&c) {
33 std::char::from_u32(c + 65248) } else {
35 Some(32 as char)
36 }
37 })
38 .collect()
39}