mirror of
https://github.com/eRgo35/lyra.git
synced 2026-02-04 12:26:10 +01:00
48 lines
1.4 KiB
Rust
48 lines
1.4 KiB
Rust
use poise::serenity_prelude::{
|
|
Color, CreateEmbed, CreateEmbedAuthor, CreateEmbedFooter, Timestamp,
|
|
};
|
|
use poise::CreateReply;
|
|
|
|
use crate::{Context, Error};
|
|
use url::form_urlencoded;
|
|
|
|
/// Creates a qr code from text
|
|
#[poise::command(prefix_command, slash_command, category = "Tools")]
|
|
pub async fn qr(
|
|
ctx: Context<'_>,
|
|
#[description = "Message to encode"]
|
|
#[rest]
|
|
message: String,
|
|
) -> Result<(), Error> {
|
|
let response = CreateReply::default().embed(generate_embed(ctx, message).await.unwrap());
|
|
ctx.send(response).await?;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
async fn generate_embed(ctx: Context<'_>, message: String) -> Result<CreateEmbed, Error> {
|
|
let timestamp = Timestamp::now();
|
|
let data: String = form_urlencoded::byte_serialize(message.as_bytes()).collect();
|
|
let url = format!(
|
|
"http://api.qrserver.com/v1/create-qr-code/?data={}&size=1000x1000&ecc=Q&margin=8",
|
|
data
|
|
);
|
|
|
|
let embed = CreateEmbed::default()
|
|
.author(
|
|
CreateEmbedAuthor::new("Your message as a QR Code!")
|
|
.icon_url(ctx.author().clone().face()),
|
|
)
|
|
.colour(Color::from_rgb(255, 58, 97))
|
|
.title("Your QR Code:")
|
|
.url(url.clone())
|
|
.image(url)
|
|
.timestamp(timestamp)
|
|
.footer(
|
|
CreateEmbedFooter::new(ctx.cache().current_user().name.to_string())
|
|
.icon_url(ctx.cache().current_user().face()),
|
|
);
|
|
|
|
Ok(embed)
|
|
}
|