pikadick/commands/
vaporwave.rs

1use 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) // unwrap or c ?
34            } else {
35                Some(32 as char)
36            }
37        })
38        .collect()
39}