import Discord, { CommandInteraction, MessageActionRow, Message } from "discord.js"; import EmojiEmbed from "./generateEmojiEmbed.js" import getEmojiByName from "./getEmojiByName.js"; class confirmationMessage { interaction: CommandInteraction; title: string; emoji: string; description: string; color: string; constructor(interaction: CommandInteraction) { this.interaction = interaction; this.title = ""; this.emoji = ""; this.description = ""; this.color = ""; } setTitle(title: string) { this.title = title; return this } setEmoji(emoji: string) { this.emoji = emoji; return this } setDescription(description: string) { this.description = description; return this } setColor(color: string) { this.color = color; return this } async send(editOnly?: boolean) { let object = { embeds: [ new EmojiEmbed() .setEmoji(this.emoji) .setTitle(this.title) .setDescription(this.description) .setStatus(this.color) ], components: [ new MessageActionRow().addComponents([ new Discord.MessageButton() .setCustomId("yes") .setLabel("Yes") .setStyle("SUCCESS") .setEmoji(getEmojiByName("CONTROL.TICK", "id")), new Discord.MessageButton() .setCustomId("no") .setLabel("Cancel") .setStyle("DANGER") .setEmoji(getEmojiByName("CONTROL.CROSS", "id")) ]) ], ephemeral: true, fetchReply: true } let m; if ( editOnly ) { m = await this.interaction.editReply(object); } else { m = await this.interaction.reply(object) } let component; try { component = await (m as Message).awaitMessageComponent({filter: (m) => m.user.id === this.interaction.user.id, time: 2.5 * 60 * 1000}); } catch (e) { return false; // TODO: Check the type of the error; change the error message here } return component.customId === "yes" } } export default confirmationMessage;