use serenity::builder::CreateApplicationCommand; use serenity::client::Context; 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::CommandDataOptionValue; use skynet_discord_bot::{get_now_iso, DataBase, Wolves}; use sqlx::{Pool, Sqlite}; 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_bulk(db: &Pool, server: &GuildId) -> Vec { sqlx::query_as::<_, Wolves>( r#" SELECT * FROM server_members JOIN wolves ON server_members.id_wolves = wolves.id_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() }