feat: transcript button in log channel

This commit is contained in:
Isaac 2024-11-09 00:08:39 +00:00
parent 412c65c0ff
commit 2a96858782
No known key found for this signature in database
GPG Key ID: 17700D08381EA590
4 changed files with 48 additions and 3 deletions

22
src/buttons/transcript.js Normal file
View File

@ -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);
}
};

View File

@ -129,12 +129,12 @@ module.exports = class TranscriptSlashCommand extends SlashCommand {
/** /**
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async run(interaction) { async run(interaction, ticketId) {
/** @type {import("client")} */ /** @type {import("client")} */
const client = this.client; const client = this.client;
await interaction.deferReply({ ephemeral: true }); 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({ const ticket = await client.prisma.ticket.findUnique({
include: { include: {
archivedChannels: true, archivedChannels: true,

View File

@ -26,6 +26,9 @@ buttons:
unclaim: unclaim:
emoji: ♻️ emoji: ♻️
text: Release text: Release
transcript:
emoji: 📄
text: Transcript
commands: commands:
message: message:
create: create:

View File

@ -1,4 +1,7 @@
const { const {
ActionRowBuilder,
ButtonBuilder,
ButtonStyle,
cleanCodeBlockContent, cleanCodeBlockContent,
EmbedBuilder, EmbedBuilder,
} = require('discord.js'); } = 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,
});
} }
/** /**