use serenity::builder::CreateApplicationCommand; use serenity::client::Context; use serenity::model::application::interaction::Interaction; use serenity::model::application::interaction::application_command::ApplicationCommandInteraction; use serenity::model::id::GuildId; use serenity::model::prelude::command::CommandOptionType; use serenity::model::prelude::interaction::application_command::{ CommandDataOption, CommandDataOptionValue, }; use serenity::model::user::User; use sqlx::{Pool, Sqlite}; use skynet_discord_bot::DataBase; pub async fn run(options: &ApplicationCommandInteraction, ctx: &Context) -> String { let db_lock = { let data_read = ctx.data.read().await; data_read.get::().expect("Expected Config in TypeMap.").clone() }; let db = db_lock.read().await; let option = options.data.options.get(0).expect("Expected email option").resolved.as_ref().expect("Expected email object"); if let CommandDataOptionValue::String(email) = option { format!("Email is {}, user is {} {:?}", email, options.user.name, options.guild_id) } else { "Please provide a valid user".to_string() } } pub fn register(command: &mut CreateApplicationCommand) -> &mut CreateApplicationCommand { command.name("link").description("Set Wolves Email").create_option(|option| { option .name("email") .description("UL Wolves Email") .kind(CommandOptionType::String) .required(true) }) } async fn get_server_member(db: &Pool, server: &GuildId) -> Vec { sqlx::query_as::<_, Accounts>( r#" SELECT * FROM wolves WHERE server = ? AND discord IS NOT NULL AND expiry > ? "#, ) .bind(*server.as_u64() as i64) .bind(get_now_iso(true)) .fetch_all(db) .await .unwrap_or_default() }