import { ButtonInteraction } from "discord.js"; import { lootdropService } from "./lootdrop.service"; import { UserError } from "@/lib/errors"; import { getLootdropClaimedMessage } from "./lootdrop.view"; 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) { throw new UserError(result.error || "Failed to claim."); } 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 { embeds, components } = getLootdropClaimedMessage( originalEmbed.title || "💰 LOOTDROP!", interaction.user.id, result.amount || 0, result.currency || "Coins" ); await interaction.message.edit({ embeds, components }); } }