feat: ticket v2 select+modal, counter top+human-only, help interactive

This commit is contained in:
loki5512344 2026-09-21 20:41:06 +02:00
parent 589238570a
commit ac96cfcb59
Signed by: boba
GPG key ID: 253067914055423B
9 changed files with 825 additions and 105 deletions

View file

@ -1,26 +1,13 @@
use crate::feature::Ctx;
use crate::feature::ticket::service;
use crate::util::i18n::{self, Lang};
use poise::CreateReply;
use serenity::all::{CreateActionRow, CreateButton, CreateEmbed};
use serenity::all::CreateEmbed;
/// Panel with ticket open buttons.
/// Re-posts modern ticket panel (select + modal).
#[poise::command(slash_command, prefix_command, guild_only)]
pub async fn ticket_panel(ctx: Ctx<'_>) -> anyhow::Result<()> {
let lang = if let Some(member) = ctx.author_member().await {
let ids: Vec<u64> = member.roles.iter().map(|r| r.get()).collect();
i18n::from_roles(&ids)
} else {
Lang::En
};
let embed = CreateEmbed::new()
.title(i18n::t("ticket.title", lang))
.description(i18n::t("ticket.desc", lang))
.color(0x0058_65F2);
let row = CreateActionRow::Buttons(vec![
CreateButton::new("ticket_general").label("General").emoji('🛠'),
CreateButton::new("ticket_bug").label("Bug").emoji('🐛'),
]);
let embed = crate::feature::ticket::handler::panel_embed();
let row = crate::feature::ticket::handler::panel_select_row();
ctx.send(CreateReply::default().embed(embed).components(vec![row])).await?;
Ok(())
}