import { EmbedBuilder } from "discord.js"; import type { ItemUsageData } from "@shared/lib/types"; import { EffectType } from "@shared/lib/constants"; /** * Inventory entry with item details */ interface InventoryEntry { quantity: bigint | null; item: { id: number; name: string; [key: string]: any; }; } /** * Creates an embed displaying a user's inventory */ export function getInventoryEmbed(items: InventoryEntry[], username: string): EmbedBuilder { const description = items.map(entry => { return `**${entry.item.name}** x${entry.quantity}`; }).join("\n"); return new EmbedBuilder() .setTitle(`📦 ${username}'s Inventory`) .setDescription(description) .setColor(0x3498db); // Blue } /** * Creates an embed showing the results of using an item */ export function getItemUseResultEmbed(results: string[], item?: { name: string, iconUrl: string | null, usageData: any }): EmbedBuilder { const description = results.map(r => `• ${r}`).join("\n"); // Check if it was a lootbox const isLootbox = item?.usageData?.effects?.some((e: any) => e.type === EffectType.LOOTBOX); const embed = new EmbedBuilder() .setDescription(description) .setColor(isLootbox ? 0xFFD700 : 0x2ecc71); // Gold for lootbox, Green otherwise if (isLootbox && item) { embed.setTitle(`🎁 ${item.name} Opened!`); if (item.iconUrl) { embed.setThumbnail(item.iconUrl); } } else { embed.setTitle(item ? `✅ Used ${item.name}` : "✅ Item Used!"); } return embed; }