import { ActionRowBuilder, ButtonBuilder, ButtonInteraction, EmbedBuilder, ButtonStyle } from "discord.js"; import { lootdropService } from "./lootdrop.service"; import { createErrorEmbed } from "@/lib/embeds"; export async function handleLootdropInteraction(interaction: ButtonInteraction) { if (interaction.customId === "lootdrop_claim") { await interaction.deferReply({ ephemeral: true }); const result = await lootdropService.tryClaim(interaction.message.id, interaction.user.id, interaction.user.username); if (result.success) { await interaction.editReply({ content: `🎉 You successfully claimed **${result.amount} ${result.currency}**!` }); // Update original message to show claimed state const originalEmbed = interaction.message.embeds[0]; if (!originalEmbed) return; const newEmbed = new EmbedBuilder(originalEmbed.data) .setDescription(`✅ Claimed by <@${interaction.user.id}> for **${result.amount} ${result.currency}**!`) .setColor("#00FF00"); // Disable button // We reconstruct the button using builders for safety const newRow = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId("lootdrop_claim_disabled") .setLabel("CLAIMED") .setStyle(ButtonStyle.Secondary) .setEmoji("✅") .setDisabled(true) ); await interaction.message.edit({ embeds: [newEmbed], components: [newRow] }); } else { await interaction.editReply({ embeds: [createErrorEmbed(result.error || "Failed to claim.")] }); } } }