diff --git a/src/buttons/transcript.js b/src/buttons/transcript.js new file mode 100644 index 0000000..ff38f38 --- /dev/null +++ b/src/buttons/transcript.js @@ -0,0 +1,22 @@ +const { Button } = require('@eartharoid/dbf'); + +module.exports = class ClaimButton extends Button { + constructor(client, options) { + super(client, { + ...options, + id: 'transcript', + }); + } + + /** + * @param {*} id + * @param {import("discord.js").ChatInputCommandInteraction} interaction + */ + async run(id, interaction) { + /** @type {import("client")} */ + const client = this.client; + + const cmd = client.commands.commands.slash.get('transcript'); + return await cmd.run(interaction, id.ticket); + } +}; diff --git a/src/commands/slash/transcript.js b/src/commands/slash/transcript.js index b17959d..0158405 100644 --- a/src/commands/slash/transcript.js +++ b/src/commands/slash/transcript.js @@ -129,12 +129,12 @@ module.exports = class TranscriptSlashCommand extends SlashCommand { /** * @param {import("discord.js").ChatInputCommandInteraction} interaction */ - async run(interaction) { + async run(interaction, ticketId) { /** @type {import("client")} */ const client = this.client; await interaction.deferReply({ ephemeral: true }); - const ticketId = interaction.options.getString('ticket', true); + ticketId = ticketId || interaction.options.getString('ticket', true); const ticket = await client.prisma.ticket.findUnique({ include: { archivedChannels: true, diff --git a/src/i18n/en-GB.yml b/src/i18n/en-GB.yml index 8f6f0ea..fef2acf 100644 --- a/src/i18n/en-GB.yml +++ b/src/i18n/en-GB.yml @@ -26,6 +26,9 @@ buttons: unclaim: emoji: ♻️ text: Release + transcript: + emoji: 📄 + text: Transcript commands: message: create: diff --git a/src/lib/logging.js b/src/lib/logging.js index 52a078b..3472747 100644 --- a/src/lib/logging.js +++ b/src/lib/logging.js @@ -1,4 +1,7 @@ const { + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, cleanCodeBlockContent, EmbedBuilder, } = require('discord.js'); @@ -182,7 +185,24 @@ async function logTicketEvent(client, { ); } - return await channel.send({ embeds }); + return await channel.send({ + components: + action === 'close' ? [ + new ActionRowBuilder() + .addComponents( + new ButtonBuilder() + .setCustomId(JSON.stringify({ + action: 'transcript', + ticket: target.id, + })) + .setStyle(ButtonStyle.Primary) + .setEmoji(getMessage('buttons.transcript.emoji')) + .setLabel(getMessage('buttons.transcript.text')), + + ), + ] : [], + embeds, + }); } /**