drunk-venti-rust/src/interactions/genshin/artifacts.rs

45 lines
2 KiB
Rust
Raw Normal View History

2022-01-15 17:38:28 +01:00
use linked_hash_map::LinkedHashMap;
use serenity::client::Context;
2023-07-22 02:30:24 +02:00
use serenity::model::application::interaction::application_command::{ApplicationCommandInteraction, CommandDataOption};
use serenity::model::application::interaction::InteractionResponseType;
use serenity::model::application::interaction::MessageFlags;
use serenity::model::application::interaction::message_component::MessageComponentInteraction;
2022-01-15 17:38:28 +01:00
use crate::data::artifacts::Artifact;
use crate::interactions::utils::create_action_row_basic;
2023-07-22 02:30:24 +02:00
pub async fn genshin_artifact_interaction(ctx: &Context, command: &ApplicationCommandInteraction, opt: &CommandDataOption) {
2022-01-15 17:38:28 +01:00
let weapon = opt.options.get(0).expect("No argument for command Genshin artifact")
.value.as_ref().expect("").as_str().expect("Not a string");
let artifacts = Artifact::search(weapon).await;
let mut artifact_list: LinkedHashMap<String, String> = LinkedHashMap::new();
for a in artifacts {
artifact_list.insert(a.id().to_string(), a.name().to_string());
}
let ar = create_action_row_basic(artifact_list, "artifact");
command.create_interaction_response(&ctx.http, |res| {
res.kind(InteractionResponseType::ChannelMessageWithSource)
.interaction_response_data(|d| {
d.content("Select an Artifact")
.components(|c| c.add_action_row(ar))
2023-07-22 02:30:24 +02:00
.flags(MessageFlags::EPHEMERAL)
2022-01-15 17:38:28 +01:00
})
}).await.expect("Message didn't got sent");
}
pub async fn show_artifact_embed(ctx: &Context, command: &MessageComponentInteraction, artifact_name: String){
let artifact = Artifact::get(artifact_name.as_str()).await;
let embed = artifact.to_embed().await;
command.create_interaction_response(&ctx.http, |res| {
res.kind(InteractionResponseType::UpdateMessage)
.interaction_response_data(|d| {
2023-07-22 02:30:24 +02:00
d.set_embeds(vec!(embed).into_iter())
.flags(MessageFlags::EPHEMERAL)
2022-01-15 17:38:28 +01:00
})
}).await.expect("Interaction failed");
}