silly goober bot
at main 42 lines 1.0 kB view raw
1use crate::types::Context; 2use color_eyre::eyre::Result; 3use poise::{serenity_prelude::all::User, CreateReply}; 4use serenity::all::CreateAttachment; 5 6#[derive(serde::Serialize, serde::Deserialize)] 7struct PetPet { 8 image: String, 9} 10 11/// Displays your or another user's info 12#[poise::command(slash_command)] 13pub async fn pet( 14 ctx: Context<'_>, 15 #[description = "Selected user"] user: Option<User>, 16) -> Result<()> { 17 let user = user.as_ref().unwrap_or_else(|| ctx.author()); 18 19 let pet = PetPet { 20 image: user 21 .avatar_url() 22 .expect("avatar failed") 23 .replace("webp", "png"), 24 }; 25 26 let res = ctx 27 .data() 28 .client 29 .get("https://memeado.vercel.app/api/petpet") 30 .json(&pet) 31 .send() 32 .await? 33 .bytes() 34 .await?; 35 36 let attachment = CreateAttachment::bytes(res, "petpet.gif"); 37 38 let reply = CreateReply::default().attachment(attachment); 39 40 ctx.send(reply).await?; 41 Ok(()) 42}