From 680e627f7a690d6bfeffa3eeb654f4976551696b Mon Sep 17 00:00:00 2001 From: Ethan Lane Date: Sat, 21 Sep 2024 15:24:17 +0100 Subject: [PATCH] Handle dropdown --- src/helpers/InventoryHelper.ts | 4 ++-- src/stringDropdowns/Inventory.ts | 37 +++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/helpers/InventoryHelper.ts b/src/helpers/InventoryHelper.ts index 714fb96..4b3a500 100644 --- a/src/helpers/InventoryHelper.ts +++ b/src/helpers/InventoryHelper.ts @@ -123,9 +123,9 @@ export default class InventoryHelper { .addOptions(...pages.map(x => new StringSelectMenuOptionBuilder() .setLabel(`${x.name} (${x.seriesSubpage + 1})`.substring(0, 100)) - .setDescription("Quick navigate to page...") + .setDescription(`Page ${pageNum + 1}`) .setDefault(currentPage.id == x.id) - .setValue((pageNum++).toString())))); + .setValue(`${userid} ${pageNum++}`)))); const buffer = await ImageHelper.GenerateCardImageGrid(currentPage.cards.map(x => ({ id: x.id, path: x.path }))); const image = new AttachmentBuilder(buffer, { name: "page.png" }); diff --git a/src/stringDropdowns/Inventory.ts b/src/stringDropdowns/Inventory.ts index 65d16f6..2a218ea 100644 --- a/src/stringDropdowns/Inventory.ts +++ b/src/stringDropdowns/Inventory.ts @@ -1,8 +1,43 @@ import {StringSelectMenuInteraction} from "discord.js"; import {StringDropdownEvent} from "../type/stringDropdownEvent"; +import AppLogger from "../client/appLogger"; +import InventoryHelper from "../helpers/InventoryHelper"; export default class Inventory extends StringDropdownEvent { public override async execute(interaction: StringSelectMenuInteraction) { - await interaction.reply(`Test: ${interaction.customId}, ${interaction.values.join(",")}`); + if (!interaction.guild) return; + + const userid = interaction.values[0].split(" ")[0]; + const page = interaction.values[0].split(" ")[1]; + + AppLogger.LogDebug("StringDropdown/Inventory", `Parameters: userid=${userid}, page=${page}`); + + await interaction.deferUpdate(); + + const member = interaction.guild.members.cache.find(x => x.id == userid) || await interaction.guild.members.fetch(userid); + + if (!member) { + await interaction.reply("Unable to find user."); + return; + } + + try { + const embed = await InventoryHelper.GenerateInventoryPage(member.user.username, member.user.id, Number(page)); + + if (!embed) { + await interaction.followUp("No page for user found."); + return; + } + + await interaction.editReply({ + files: [ embed.image ], + embeds: [ embed.embed ], + components: [ embed.row1, embed.row2 ], + }); + } catch (e) { + AppLogger.LogError("StringDropdown/Inventory", `Error generating inventory page for ${member.user.username} with id ${member.user.id}: ${e}`); + + await interaction.followUp("An error has occurred running this command."); + } } }