forgot to add files
diff --git a/src/premium/createTranscript.ts b/src/premium/createTranscript.ts
new file mode 100644
index 0000000..92b268c
--- /dev/null
+++ b/src/premium/createTranscript.ts
@@ -0,0 +1,104 @@
+import { MessageActionRow, MessageButton, TextChannel } from "discord.js";
+import EmojiEmbed from "../utils/generateEmojiEmbed.js";
+import getEmojiByName from "../utils/getEmojiByName.js";
+import { PasteClient, Publicity, ExpireDate } from "pastebin-api";
+import config from '../config/main.json' assert {type: 'json'};
+import client from "../utils/client.js";
+
+const pbClient = new PasteClient(config.pastebinApiKey)
+
+export default async function (interaction) {
+ const { log, NucleusColors, entry, renderUser, renderChannel, renderDelta } = client.logger
+
+ let messages = []
+ let deleted = 100;
+
+ while (deleted == 100) {
+ let fetched;
+ await (interaction.channel as TextChannel).messages.fetch({limit: 100}).then(async (ms) => {
+ fetched = await (interaction.channel as TextChannel).bulkDelete(ms, true);
+ })
+ deleted = fetched.size
+ if (fetched) {
+ messages = messages.concat(fetched.map(m => m))
+ }
+ }
+ let out = ""
+ messages.reverse().forEach(message => {
+ if (!message.author.bot) {
+ let sentDate = new Date(message.createdTimestamp)
+ out += `${message.author.username}#${message.author.discriminator} (${message.author.id}) [${sentDate.toUTCString()}]\n`
+ let lines = message.content.split("\n")
+ lines.forEach(line => {out += `> ${line}\n`})
+ out += `\n\n`
+ }
+ })
+ let member = interaction.channel.guild.members.cache.get(interaction.channel.topic.split(" ")[0])
+ let m;
+ if (out !== "") {
+ const url = await pbClient.createPaste({
+ code: out,
+ expireDate: ExpireDate.Never,
+ name: `Ticket Transcript for ${member.user.username}#${member.user.discriminator} (Created at ${new Date(interaction.channel.createdTimestamp).toDateString()})`,
+ publicity: Publicity.Unlisted,
+ })
+ let guildConfig = await client.database.guilds.read(interaction.guild.id);
+ m = await interaction.reply({embeds: [new EmojiEmbed()
+ .setTitle("Transcript")
+ .setDescription(`You can view the transcript using the link below. You can save the link for later` + (guildConfig.logging.logs.channel ?
+ ` or find it in <#${guildConfig.logging.logs.channel}> once you press delete below. After this the channel will be deleted.`
+ : "."))
+ .setStatus("Success")
+ .setEmoji("CONTROL.DOWNLOAD")
+ ], components: [new MessageActionRow().addComponents([
+ new MessageButton()
+ .setLabel("View")
+ .setStyle("LINK")
+ .setURL(url),
+ new MessageButton()
+ .setLabel("Delete")
+ .setStyle("DANGER")
+ .setCustomId("close")
+ .setEmoji(getEmojiByName("CONTROL.CROSS", "id"))
+ ])], fetchReply: true});
+ } else {
+ m = await interaction.reply({embeds: [new EmojiEmbed()
+ .setTitle("Transcript")
+ .setDescription(`The transcript was empty, so no changes were made. To delete this ticket, press the delete button below.`)
+ .setStatus("Success")
+ .setEmoji("CONTROL.DOWNLOAD")
+ ], components: [new MessageActionRow().addComponents([
+ new MessageButton()
+ .setLabel("Delete")
+ .setStyle("DANGER")
+ .setCustomId("close")
+ .setEmoji(getEmojiByName("CONTROL.CROSS", "id"))
+ ])], fetchReply: true});
+ }
+ let i;
+ try {
+ i = await m.awaitMessageComponent({ time: 300000 });
+ i.deferUpdate()
+ } catch (e) { }
+ let data = {
+ meta:{
+ type: 'ticketDeleted',
+ displayName: 'Ticket Deleted',
+ calculateType: "ticketUpdate",
+ color: NucleusColors.red,
+ emoji: 'GUILD.TICKET.CLOSE',
+ timestamp: new Date().getTime()
+ },
+ list: {
+ ticketFor: entry(interaction.channel.topic.split(" ")[0], renderUser((await interaction.guild.members.fetch(interaction.channel.topic.split(" ")[0])).user)),
+ deletedBy: entry(interaction.member.user.id, renderUser(interaction.member.user)),
+ deleted: entry(new Date().getTime(), renderDelta(new Date().getTime()))
+ },
+ hidden: {
+ guild: interaction.guild.id
+ }
+ }
+ log(data);
+ await interaction.channel.delete()
+ return
+}
\ No newline at end of file