2nd attempt at doing poise stuff
This commit is contained in:
		| @@ -1,33 +1,25 @@ | ||||
| use serenity::{client::Context, model::id::GuildId}; | ||||
| use poise::serenity::{ | ||||
|     client::Context, | ||||
|     model::{ | ||||
|         id::GuildId, interactions::application_command::ApplicationCommandInteractionDataOption, | ||||
|     }, | ||||
| }; | ||||
| use serde::Serialize; | ||||
|  | ||||
| use crate::{framework::CommandOptions, SQLPool}; | ||||
| #[derive(Serialize)] | ||||
| pub struct RecordedCommand<U, E> { | ||||
|     #[serde(skip)] | ||||
|     action: for<'a> fn( | ||||
|         poise::ApplicationContext<'a, U, E>, | ||||
|         &'a [ApplicationCommandInteractionDataOption], | ||||
|     ) -> poise::BoxFuture<'a, Result<(), poise::FrameworkError<'a, U, E>>>, | ||||
|     command_name: String, | ||||
|     options: Vec<ApplicationCommandInteractionDataOption>, | ||||
| } | ||||
|  | ||||
| pub struct CommandMacro { | ||||
| pub struct CommandMacro<U, E> { | ||||
|     pub guild_id: GuildId, | ||||
|     pub name: String, | ||||
|     pub description: Option<String>, | ||||
|     pub commands: Vec<CommandOptions>, | ||||
| } | ||||
|  | ||||
| impl CommandMacro { | ||||
|     pub async fn from_guild(ctx: &Context, guild_id: impl Into<GuildId>) -> Vec<Self> { | ||||
|         let pool = ctx.data.read().await.get::<SQLPool>().cloned().unwrap(); | ||||
|         let guild_id = guild_id.into(); | ||||
|  | ||||
|         sqlx::query!( | ||||
|             "SELECT * FROM macro WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)", | ||||
|             guild_id.0 | ||||
|         ) | ||||
|         .fetch_all(&pool) | ||||
|         .await | ||||
|         .unwrap() | ||||
|         .iter() | ||||
|         .map(|row| Self { | ||||
|             guild_id, | ||||
|             name: row.name.clone(), | ||||
|             description: row.description.clone(), | ||||
|             commands: serde_json::from_str(&row.commands).unwrap(), | ||||
|         }) | ||||
|         .collect::<Vec<Self>>() | ||||
|     } | ||||
|     pub commands: Vec<RecordedCommand<U, E>>, | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user