Fix a bunch of linter errors
diff --git a/src/actions/createModActionTicket.ts b/src/actions/createModActionTicket.ts
index 1d3406d..41f949c 100644
--- a/src/actions/createModActionTicket.ts
+++ b/src/actions/createModActionTicket.ts
@@ -3,14 +3,35 @@
 import getEmojiByName from "../utils/getEmojiByName.js";
 import client from "../utils/client.js";
 
-export async function create(guild: Discord.Guild, member: Discord.User, createdBy: Discord.User, reason: string, customReason?: string) {
+export async function create(
+    guild: Discord.Guild,
+    member: Discord.User,
+    createdBy: Discord.User,
+    reason: string,
+    customReason?: string
+) {
     const config = await client.database.guilds.read(guild.id);
-    const { log, NucleusColors, entry, renderUser, renderChannel, renderDelta } = client.logger;
-    const overwrites = [{
-        id: member,
-        allow: ["VIEW_CHANNEL", "SEND_MESSAGES", "ATTACH_FILES", "ADD_REACTIONS", "READ_MESSAGE_HISTORY"],
-        type: "member"
-    }] as Discord.OverwriteResolvable[];
+    const {
+        log,
+        NucleusColors,
+        entry,
+        renderUser,
+        renderChannel,
+        renderDelta
+    } = client.logger;
+    const overwrites = [
+        {
+            id: member,
+            allow: [
+                "VIEW_CHANNEL",
+                "SEND_MESSAGES",
+                "ATTACH_FILES",
+                "ADD_REACTIONS",
+                "READ_MESSAGE_HISTORY"
+            ],
+            type: "member"
+        }
+    ] as Discord.OverwriteResolvable[];
     overwrites.push({
         id: guild.roles.everyone,
         deny: ["VIEW_CHANNEL"],
@@ -19,7 +40,13 @@
     if (config.tickets.supportRole !== null) {
         overwrites.push({
             id: guild.roles.cache.get(config.tickets.supportRole),
-            allow: ["VIEW_CHANNEL", "SEND_MESSAGES", "ATTACH_FILES", "ADD_REACTIONS", "READ_MESSAGE_HISTORY"],
+            allow: [
+                "VIEW_CHANNEL",
+                "SEND_MESSAGES",
+                "ATTACH_FILES",
+                "ADD_REACTIONS",
+                "READ_MESSAGE_HISTORY"
+            ],
             type: "role"
         });
     }
@@ -31,40 +58,59 @@
             topic: `${member.id} Active`,
             parent: config.tickets.category,
             nsfw: false,
-            permissionOverwrites: (overwrites as Discord.OverwriteResolvable[]),
+            permissionOverwrites: overwrites as Discord.OverwriteResolvable[],
             reason: "Creating ticket"
         });
     } catch (e) {
         return null;
     }
     try {
-        await c.send(
-            {
-                content: (`<@${member.id}>` + (config.tickets.supportRole !== null ? ` • <@&${config.tickets.supportRole}>` : "")),
-                allowedMentions: {
-                    users: [member.id],
-                    roles: (config.tickets.supportRole !== null ? [config.tickets.supportRole] : [])
-                }
+        await c.send({
+            content:
+                `<@${member.id}>` +
+                (config.tickets.supportRole !== null
+                    ? ` • <@&${config.tickets.supportRole}>`
+                    : ""),
+            allowedMentions: {
+                users: [member.id],
+                roles:
+                    config.tickets.supportRole !== null
+                        ? [config.tickets.supportRole]
+                        : []
             }
-        );
-        await c.send({ embeds: [new EmojiEmbed()
-            .setTitle("New Ticket")
-            .setDescription(
-                "Ticket created by a Moderator\n" +
-                `**Support type:** ${customReason ? customReason : "Appeal submission"}\n` + (reason !== null ? `**Reason:**\n> ${reason}\n` : "") +
-                `**Ticket ID:** \`${c.id}\`\n` +
-                "Type `/ticket close` to close this ticket."
-            )
-            .setStatus("Success")
-            .setEmoji("GUILD.TICKET.OPEN")
-        ], components: [new MessageActionRow().addComponents([new MessageButton()
-            .setLabel("Close")
-            .setStyle("DANGER")
-            .setCustomId("closeticket")
-            .setEmoji(getEmojiByName("CONTROL.CROSS", "id"))
-        ])]});
+        });
+        await c.send({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("New Ticket")
+                    .setDescription(
+                        "Ticket created by a Moderator\n" +
+                            `**Support type:** ${
+                                customReason
+                                    ? customReason
+                                    : "Appeal submission"
+                            }\n` +
+                            (reason !== null
+                                ? `**Reason:**\n> ${reason}\n`
+                                : "") +
+                            `**Ticket ID:** \`${c.id}\`\n` +
+                            "Type `/ticket close` to close this ticket."
+                    )
+                    .setStatus("Success")
+                    .setEmoji("GUILD.TICKET.OPEN")
+            ],
+            components: [
+                new MessageActionRow().addComponents([
+                    new MessageButton()
+                        .setLabel("Close")
+                        .setStyle("DANGER")
+                        .setCustomId("closeticket")
+                        .setEmoji(getEmojiByName("CONTROL.CROSS", "id"))
+                ])
+            ]
+        });
         const data = {
-            meta:{
+            meta: {
                 type: "ticketCreate",
                 displayName: "Ticket Created",
                 calculateType: "ticketUpdate",
@@ -75,7 +121,10 @@
             list: {
                 ticketFor: entry(member.id, renderUser(member)),
                 createdBy: entry(createdBy.id, renderUser(createdBy)),
-                created: entry(new Date().getTime(), renderDelta(new Date().getTime())),
+                created: entry(
+                    new Date().getTime(),
+                    renderDelta(new Date().getTime())
+                ),
                 ticketChannel: entry(c.id, renderChannel(c))
             },
             hidden: {
@@ -83,11 +132,14 @@
             }
         };
         log(data);
-    } catch (e) { console.log(e); return null; }
+    } catch (e) {
+        console.log(e);
+        return null;
+    }
     return c.id;
 }
 
 export async function areTicketsEnabled(guild: string) {
     const config = await client.database.guilds.read(guild);
     return config.tickets.enabled;
-}
\ No newline at end of file
+}
diff --git a/src/actions/roleMenu.ts b/src/actions/roleMenu.ts
index 9a8e80a..dc224e8 100644
--- a/src/actions/roleMenu.ts
+++ b/src/actions/roleMenu.ts
@@ -7,30 +7,47 @@
 
 export async function callback(interaction) {
     const config = await client.database.guilds.read(interaction.guild.id);
-    if (!config.roleMenu.enabled) return await interaction.reply({embeds: [new EmojiEmbed()
-        .setTitle("Roles")
-        .setDescription("Self roles are currently disabled. Please contact a staff member or try again later.")
-        .setStatus("Danger")
-        .setEmoji("CONTROL.BLOCKCROSS")
-    ], ephemeral: true});
-    if (config.roleMenu.options.length === 0) return await interaction.reply({embeds: [new EmojiEmbed()
-        .setTitle("Roles")
-        .setDescription("There are no roles available. Please contact a staff member or try again later.")
-        .setStatus("Danger")
-        .setEmoji("CONTROL.BLOCKCROSS")
-    ], ephemeral: true});
-    await interaction.reply({embeds: LoadingEmbed, ephemeral: true});
+    if (!config.roleMenu.enabled)
+        return await interaction.reply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Roles")
+                    .setDescription(
+                        "Self roles are currently disabled. Please contact a staff member or try again later."
+                    )
+                    .setStatus("Danger")
+                    .setEmoji("CONTROL.BLOCKCROSS")
+            ],
+            ephemeral: true
+        });
+    if (config.roleMenu.options.length === 0)
+        return await interaction.reply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Roles")
+                    .setDescription(
+                        "There are no roles available. Please contact a staff member or try again later."
+                    )
+                    .setStatus("Danger")
+                    .setEmoji("CONTROL.BLOCKCROSS")
+            ],
+            ephemeral: true
+        });
+    await interaction.reply({ embeds: LoadingEmbed, ephemeral: true });
     let m;
     if (config.roleMenu.allowWebUI) {
         let code = "";
         let length = 5;
         let itt = 0;
-        const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+        const chars =
+            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
         let valid = false;
         while (!valid) {
             itt += 1;
             code = "";
-            for (let i = 0; i < length; i++) { code += chars.charAt(Math.floor(Math.random() * chars.length)); }
+            for (let i = 0; i < length; i++) {
+                code += chars.charAt(Math.floor(Math.random() * chars.length));
+            }
             if (code in client.roleMenu) continue;
             if (itt > 1000) {
                 itt = 0;
@@ -42,7 +59,7 @@
         client.roleMenu[code] = {
             guild: interaction.guild.id,
             guildName: interaction.guild.name,
-            guildIcon: interaction.guild.iconURL({format: "png"}),
+            guildIcon: interaction.guild.iconURL({ format: "png" }),
             user: interaction.member.user.id,
             username: interaction.member.user.username,
             data: config.roleMenu.options,
@@ -50,31 +67,44 @@
         };
         let up = true;
         try {
-            const status = await fetch(client.config.baseUrl).then(res => res.status);
+            const status = await fetch(client.config.baseUrl).then(
+                (res) => res.status
+            );
             if (status !== 200) up = false;
-        } catch { up = false; }
+        } catch {
+            up = false;
+        }
         m = await interaction.editReply({
-            embeds: [new EmojiEmbed()
-                .setTitle("Roles")
-                .setDescription("Select how to choose your roles")
-                .setStatus("Success")
-                .setEmoji("GUILD.GREEN")
-            ], components: [new MessageActionRow().addComponents([
-                new MessageButton()
-                    .setLabel("Online")
-                    .setStyle("LINK")
-                    .setDisabled(!up)
-                    .setURL(`${client.config.baseUrl}nucleus/rolemenu?code=${code}`),
-                new MessageButton()
-                    .setLabel("Manual")
-                    .setStyle("PRIMARY")
-                    .setCustomId("manual")
-            ])]
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Roles")
+                    .setDescription("Select how to choose your roles")
+                    .setStatus("Success")
+                    .setEmoji("GUILD.GREEN")
+            ],
+            components: [
+                new MessageActionRow().addComponents([
+                    new MessageButton()
+                        .setLabel("Online")
+                        .setStyle("LINK")
+                        .setDisabled(!up)
+                        .setURL(
+                            `${client.config.baseUrl}nucleus/rolemenu?code=${code}`
+                        ),
+                    new MessageButton()
+                        .setLabel("Manual")
+                        .setStyle("PRIMARY")
+                        .setCustomId("manual")
+                ])
+            ]
         });
     }
     let component;
-    try { component = await m.awaitMessageComponent({time: 300000});
-    } catch (e) { return; }
+    try {
+        component = await m.awaitMessageComponent({ time: 300000 });
+    } catch (e) {
+        return;
+    }
     component.deferUpdate();
     let rolesToAdd = [];
     for (let i = 0; i < config.roleMenu.options.length; i++) {
@@ -84,36 +114,66 @@
                 new EmojiEmbed()
                     .setTitle("Roles")
                     .setEmoji("GUILD.GREEN")
-                    .setDescription(`**${object.name}**` + (object.description ? `\n${object.description}` : "") +
-                        `\n\nSelect ${object.min}` + (object.min !== object.max ? ` to ${object.max}` : "") + ` role${object.max === 1 ? "" : "s"} to add.`)
+                    .setDescription(
+                        `**${object.name}**` +
+                            (object.description
+                                ? `\n${object.description}`
+                                : "") +
+                            `\n\nSelect ${object.min}` +
+                            (object.min !== object.max
+                                ? ` to ${object.max}`
+                                : "") +
+                            ` role${object.max === 1 ? "" : "s"} to add.`
+                    )
                     .setStatus("Success")
-                    .setFooter({text: `Step ${i + 1}/${config.roleMenu.options.length}`})
+                    .setFooter({
+                        text: `Step ${i + 1}/${config.roleMenu.options.length}`
+                    })
             ],
             components: [
+                new MessageActionRow().addComponents(
+                    [
+                        new MessageButton()
+                            .setLabel("Cancel")
+                            .setStyle("DANGER")
+                            .setCustomId("cancel")
+                            .setEmoji(getEmojiByName("CONTROL.CROSS", "id"))
+                    ].concat(
+                        object.min === 0
+                            ? [
+                                  new MessageButton()
+                                      .setLabel("Skip")
+                                      .setStyle("SECONDARY")
+                                      .setCustomId("skip")
+                                      .setEmoji(
+                                          getEmojiByName("CONTROL.RIGHT", "id")
+                                      )
+                              ]
+                            : []
+                    )
+                )
+            ].concat([
                 new MessageActionRow().addComponents([
-                    new MessageButton()
-                        .setLabel("Cancel")
-                        .setStyle("DANGER")
-                        .setCustomId("cancel")
-                        .setEmoji(getEmojiByName("CONTROL.CROSS", "id"))
-                ].concat(object.min === 0 ? [
-                    new MessageButton()
-                        .setLabel("Skip")
-                        .setStyle("SECONDARY")
-                        .setCustomId("skip")
-                        .setEmoji(getEmojiByName("CONTROL.RIGHT", "id"))
-                ] : []))
-            ].concat([new MessageActionRow().addComponents([new MessageSelectMenu()
-                .setPlaceholder(`${object.name}`)
-                .setCustomId("rolemenu")
-                .setMinValues(object.min)
-                .setMaxValues(object.max)
-                .setOptions(object.options.map(o => { return {label: o.name, description: o.description, value: o.role}; }))
-            ])])
+                    new MessageSelectMenu()
+                        .setPlaceholder(`${object.name}`)
+                        .setCustomId("rolemenu")
+                        .setMinValues(object.min)
+                        .setMaxValues(object.max)
+                        .setOptions(
+                            object.options.map((o) => {
+                                return {
+                                    label: o.name,
+                                    description: o.description,
+                                    value: o.role
+                                };
+                            })
+                        )
+                ])
+            ])
         });
         let component;
         try {
-            component = await m.awaitMessageComponent({time: 300000});
+            component = await m.awaitMessageComponent({ time: 300000 });
         } catch (e) {
             return;
         }
@@ -121,34 +181,54 @@
         if (component.customId === "rolemenu") {
             rolesToAdd = rolesToAdd.concat(component.values);
         } else if (component.customId === "cancel") {
-            return await interaction.editReply({embeds: [new EmojiEmbed()
-                .setTitle("Roles")
-                .setDescription("Cancelled. No changes were made.")
-                .setStatus("Danger")
-                .setEmoji("GUILD.RED")
-            ], components: []});
+            return await interaction.editReply({
+                embeds: [
+                    new EmojiEmbed()
+                        .setTitle("Roles")
+                        .setDescription("Cancelled. No changes were made.")
+                        .setStatus("Danger")
+                        .setEmoji("GUILD.RED")
+                ],
+                components: []
+            });
         }
     }
-    let rolesToRemove = config.roleMenu.options.map(o => o.options.map(o => o.role)).flat();
-    const memberRoles = interaction.member.roles.cache.map(r => r.id);
-    rolesToRemove = rolesToRemove.filter(r => memberRoles.includes(r)).filter(r => !rolesToAdd.includes(r));
-    rolesToAdd = rolesToAdd.filter(r => !memberRoles.includes(r));
+    let rolesToRemove = config.roleMenu.options
+        .map((o) => o.options.map((o) => o.role))
+        .flat();
+    const memberRoles = interaction.member.roles.cache.map((r) => r.id);
+    rolesToRemove = rolesToRemove
+        .filter((r) => memberRoles.includes(r))
+        .filter((r) => !rolesToAdd.includes(r));
+    rolesToAdd = rolesToAdd.filter((r) => !memberRoles.includes(r));
     try {
         await interaction.member.roles.remove(rolesToRemove);
         await interaction.member.roles.add(rolesToAdd);
     } catch (e) {
-        return await interaction.reply({embeds: [new EmojiEmbed()
-            .setTitle("Roles")
-            .setDescription("Something went wrong and your roles were not added. Please contact a staff member or try again later.")
-            .setStatus("Danger")
-            .setEmoji("GUILD.RED")
-        ], components: []});
+        return await interaction.reply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Roles")
+                    .setDescription(
+                        "Something went wrong and your roles were not added. Please contact a staff member or try again later."
+                    )
+                    .setStatus("Danger")
+                    .setEmoji("GUILD.RED")
+            ],
+            components: []
+        });
     }
-    await interaction.editReply({embeds: [new EmojiEmbed()
-        .setTitle("Roles")
-        .setDescription("Roles have been added. You may close this message.")
-        .setStatus("Success")
-        .setEmoji("GUILD.GREEN")
-    ], components: []});
+    await interaction.editReply({
+        embeds: [
+            new EmojiEmbed()
+                .setTitle("Roles")
+                .setDescription(
+                    "Roles have been added. You may close this message."
+                )
+                .setStatus("Success")
+                .setEmoji("GUILD.GREEN")
+        ],
+        components: []
+    });
     return;
 }
diff --git a/src/actions/tickets/create.ts b/src/actions/tickets/create.ts
index f724728..ca5147a 100644
--- a/src/actions/tickets/create.ts
+++ b/src/actions/tickets/create.ts
@@ -6,50 +6,84 @@
 
 function capitalize(s: string) {
     s = s.replace(/([A-Z])/g, " $1");
-    return s.length < 3 ? s.toUpperCase() : s[0].toUpperCase() + s.slice(1).toLowerCase();
+    return s.length < 3
+        ? s.toUpperCase()
+        : s[0].toUpperCase() + s.slice(1).toLowerCase();
 }
 
 export default async function (interaction) {
-    const { log, NucleusColors, entry, renderUser, renderChannel, renderDelta } = client.logger;
+    const {
+        log,
+        NucleusColors,
+        entry,
+        renderUser,
+        renderChannel,
+        renderDelta
+    } = client.logger;
 
     const config = await client.database.guilds.read(interaction.guild.id);
     if (!config.tickets.enabled || !config.tickets.category) {
-        return await interaction.reply({embeds: [new EmojiEmbed()
-            .setTitle("Tickets are disabled")
-            .setDescription("Please enable tickets in the configuration to use this command.")
-            .setFooter({text: interaction.member.permissions.has("MANAGE_GUILD") ? "You can enable it by running /settings tickets" : ""})
-            .setStatus("Danger")
-            .setEmoji("CONTROL.BLOCKCROSS")
-        ], ephemeral: true});
+        return await interaction.reply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Tickets are disabled")
+                    .setDescription(
+                        "Please enable tickets in the configuration to use this command."
+                    )
+                    .setFooter({
+                        text: interaction.member.permissions.has("MANAGE_GUILD")
+                            ? "You can enable it by running /settings tickets"
+                            : ""
+                    })
+                    .setStatus("Danger")
+                    .setEmoji("CONTROL.BLOCKCROSS")
+            ],
+            ephemeral: true
+        });
     }
-    const category = interaction.guild.channels.cache.get(config.tickets.category) as Discord.CategoryChannel;
+    const category = interaction.guild.channels.cache.get(
+        config.tickets.category
+    ) as Discord.CategoryChannel;
     let count = 0;
-    category.children.forEach(element => {
+    category.children.forEach((element) => {
         if (!(element.type === "GUILD_TEXT")) return;
-        if ((element as Discord.TextChannel).topic.includes(`${interaction.member.user.id}`)) {
+        if (
+            (element as Discord.TextChannel).topic.includes(
+                `${interaction.member.user.id}`
+            )
+        ) {
             if ((element as Discord.TextChannel).topic.endsWith("Active")) {
                 count++;
             }
         }
     });
     if (count >= config.tickets.maxTickets) {
-        return await interaction.reply({embeds: [new EmojiEmbed()
-            .setTitle("Create Ticket")
-            .setDescription(`You have reached the maximum amount of tickets (${config.tickets.maxTickets}). Please close one of your active tickets before creating a new one.`)
-            .setStatus("Danger")
-            .setEmoji("CONTROL.BLOCKCROSS")
-        ], ephemeral: true});
+        return await interaction.reply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Create Ticket")
+                    .setDescription(
+                        `You have reached the maximum amount of tickets (${config.tickets.maxTickets}). Please close one of your active tickets before creating a new one.`
+                    )
+                    .setStatus("Danger")
+                    .setEmoji("CONTROL.BLOCKCROSS")
+            ],
+            ephemeral: true
+        });
     }
     let ticketTypes;
     let custom = false;
-    if (config.tickets.customTypes && config.tickets.useCustom) { ticketTypes = config.tickets.customTypes; custom = true; }
-    else if (config.tickets.types) ticketTypes = toHexArray(config.tickets.types, tickets);
+    if (config.tickets.customTypes && config.tickets.useCustom) {
+        ticketTypes = config.tickets.customTypes;
+        custom = true;
+    } else if (config.tickets.types)
+        ticketTypes = toHexArray(config.tickets.types, tickets);
     else ticketTypes = [];
     let chosenType;
     let splitFormattedTicketTypes = [];
     if (ticketTypes.length > 0) {
         let formattedTicketTypes = [];
-        formattedTicketTypes = ticketTypes.map(type => {
+        formattedTicketTypes = ticketTypes.map((type) => {
             if (custom) {
                 return new MessageButton()
                     .setLabel(type)
@@ -60,28 +94,43 @@
                     .setLabel(capitalize(type))
                     .setStyle("PRIMARY")
                     .setCustomId(type)
-                    .setEmoji(getEmojiByName(("TICKETS." + type.toString().toUpperCase()), "id"));
+                    .setEmoji(
+                        getEmojiByName(
+                            "TICKETS." + type.toString().toUpperCase(),
+                            "id"
+                        )
+                    );
             }
         });
         for (let i = 0; i < formattedTicketTypes.length; i += 5) {
-            splitFormattedTicketTypes.push(new MessageActionRow().addComponents(formattedTicketTypes.slice(i, i + 5)));
+            splitFormattedTicketTypes.push(
+                new MessageActionRow().addComponents(
+                    formattedTicketTypes.slice(i, i + 5)
+                )
+            );
         }
-        const m = await interaction.reply({embeds: [new EmojiEmbed()
-            .setTitle("Create Ticket")
-            .setDescription("Select a ticket type")
-            .setStatus("Success")
-            .setEmoji("GUILD.TICKET.OPEN")
-        ], ephemeral: true, fetchReply: true, components: splitFormattedTicketTypes});
+        const m = await interaction.reply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Create Ticket")
+                    .setDescription("Select a ticket type")
+                    .setStatus("Success")
+                    .setEmoji("GUILD.TICKET.OPEN")
+            ],
+            ephemeral: true,
+            fetchReply: true,
+            components: splitFormattedTicketTypes
+        });
         let component;
         try {
-            component = await m.awaitMessageComponent({time: 300000});
+            component = await m.awaitMessageComponent({ time: 300000 });
         } catch (e) {
             return;
         }
         chosenType = component.customId;
         splitFormattedTicketTypes = [];
         formattedTicketTypes = [];
-        formattedTicketTypes = ticketTypes.map(type => {
+        formattedTicketTypes = ticketTypes.map((type) => {
             if (custom) {
                 return new MessageButton()
                     .setLabel(type)
@@ -93,31 +142,57 @@
                     .setLabel(capitalize(type))
                     .setStyle(chosenType === type ? "SUCCESS" : "SECONDARY")
                     .setCustomId(type)
-                    .setEmoji(getEmojiByName(("TICKETS." + type.toString().toUpperCase()), "id"))
+                    .setEmoji(
+                        getEmojiByName(
+                            "TICKETS." + type.toString().toUpperCase(),
+                            "id"
+                        )
+                    )
                     .setDisabled(true);
             }
         });
         for (let i = 0; i < formattedTicketTypes.length; i += 5) {
-            splitFormattedTicketTypes.push(new MessageActionRow().addComponents(formattedTicketTypes.slice(i, i + 5)));
+            splitFormattedTicketTypes.push(
+                new MessageActionRow().addComponents(
+                    formattedTicketTypes.slice(i, i + 5)
+                )
+            );
         }
-        component.update({embeds: [new EmojiEmbed()
-            .setTitle("Create Ticket")
-            .setDescription("Select a ticket type")
-            .setStatus("Success")
-            .setEmoji("GUILD.TICKET.OPEN")
-        ], components: splitFormattedTicketTypes});
+        component.update({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Create Ticket")
+                    .setDescription("Select a ticket type")
+                    .setStatus("Success")
+                    .setEmoji("GUILD.TICKET.OPEN")
+            ],
+            components: splitFormattedTicketTypes
+        });
     } else {
         chosenType = null;
-        await interaction.reply({embeds: [new EmojiEmbed()
-            .setTitle("Create Ticket")
-            .setEmoji("GUILD.TICKET.OPEN")
-        ], ephemeral: true, components: splitFormattedTicketTypes});
+        await interaction.reply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Create Ticket")
+                    .setEmoji("GUILD.TICKET.OPEN")
+            ],
+            ephemeral: true,
+            components: splitFormattedTicketTypes
+        });
     }
-    const overwrites = [{
-        id: interaction.member,
-        allow: ["VIEW_CHANNEL", "SEND_MESSAGES", "ATTACH_FILES", "ADD_REACTIONS", "READ_MESSAGE_HISTORY"],
-        type: "member"
-    }] as Discord.OverwriteResolvable[];
+    const overwrites = [
+        {
+            id: interaction.member,
+            allow: [
+                "VIEW_CHANNEL",
+                "SEND_MESSAGES",
+                "ATTACH_FILES",
+                "ADD_REACTIONS",
+                "READ_MESSAGE_HISTORY"
+            ],
+            type: "member"
+        }
+    ] as Discord.OverwriteResolvable[];
     overwrites.push({
         id: interaction.guild.roles.everyone,
         deny: ["VIEW_CHANNEL"],
@@ -126,60 +201,93 @@
     if (config.tickets.supportRole !== null) {
         overwrites.push({
             id: interaction.guild.roles.cache.get(config.tickets.supportRole),
-            allow: ["VIEW_CHANNEL", "SEND_MESSAGES", "ATTACH_FILES", "ADD_REACTIONS", "READ_MESSAGE_HISTORY"],
+            allow: [
+                "VIEW_CHANNEL",
+                "SEND_MESSAGES",
+                "ATTACH_FILES",
+                "ADD_REACTIONS",
+                "READ_MESSAGE_HISTORY"
+            ],
             type: "role"
         });
     }
 
     let c;
     try {
-        c = await interaction.guild.channels.create(interaction.member.user.username, {
-            type: "GUILD_TEXT",
-            topic: `${interaction.member.user.id} Active`,
-            parent: config.tickets.category,
-            nsfw: false,
-            permissionOverwrites: (overwrites as Discord.OverwriteResolvable[]),
-            reason: "Creating ticket"
-        });
-    } catch (e) {
-        return await interaction.editReply({embeds: [new EmojiEmbed()
-            .setTitle("Create Ticket")
-            .setDescription("Failed to create ticket")
-            .setStatus("Danger")
-            .setEmoji("CONTROL.BLOCKCROSS")
-        ]});
-    }
-    try {
-        await c.send(
+        c = await interaction.guild.channels.create(
+            interaction.member.user.username,
             {
-                content: (`<@${interaction.member.user.id}>` + (config.tickets.supportRole !== null ? ` • <@&${config.tickets.supportRole}>` : "")),
-                allowedMentions: {
-                    users: [(interaction.member as Discord.GuildMember).id],
-                    roles: (config.tickets.supportRole !== null ? [config.tickets.supportRole] : [])
-                }
+                type: "GUILD_TEXT",
+                topic: `${interaction.member.user.id} Active`,
+                parent: config.tickets.category,
+                nsfw: false,
+                permissionOverwrites:
+                    overwrites as Discord.OverwriteResolvable[],
+                reason: "Creating ticket"
             }
         );
-        let content = interaction.options ? interaction.options.getString("message") || "" : "";
+    } catch (e) {
+        return await interaction.editReply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Create Ticket")
+                    .setDescription("Failed to create ticket")
+                    .setStatus("Danger")
+                    .setEmoji("CONTROL.BLOCKCROSS")
+            ]
+        });
+    }
+    try {
+        await c.send({
+            content:
+                `<@${interaction.member.user.id}>` +
+                (config.tickets.supportRole !== null
+                    ? ` • <@&${config.tickets.supportRole}>`
+                    : ""),
+            allowedMentions: {
+                users: [(interaction.member as Discord.GuildMember).id],
+                roles:
+                    config.tickets.supportRole !== null
+                        ? [config.tickets.supportRole]
+                        : []
+            }
+        });
+        let content = interaction.options
+            ? interaction.options.getString("message") || ""
+            : "";
         if (content) content = `**Message:**\n> ${content}\n`;
-        const emoji = custom ? "" : getEmojiByName("TICKETS." + chosenType.toUpperCase());
-        await c.send({ embeds: [new EmojiEmbed()
-            .setTitle("New Ticket")
-            .setDescription(
-                `Ticket created by <@${interaction.member.user.id}>\n` +
-                `**Support type:** ${chosenType !== null ? (emoji) + " " + capitalize(chosenType) : "General"}\n` +
-                `**Ticket ID:** \`${c.id}\`\n${content}\n` +
-                "Type `/ticket close` to close this ticket."
-            )
-            .setStatus("Success")
-            .setEmoji("GUILD.TICKET.OPEN")
-        ], components: [new MessageActionRow().addComponents([new MessageButton()
-            .setLabel("Close")
-            .setStyle("DANGER")
-            .setCustomId("closeticket")
-            .setEmoji(getEmojiByName("CONTROL.CROSS", "id"))
-        ])]});
+        const emoji = custom
+            ? ""
+            : getEmojiByName("TICKETS." + chosenType.toUpperCase());
+        await c.send({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("New Ticket")
+                    .setDescription(
+                        `Ticket created by <@${interaction.member.user.id}>\n` +
+                            `**Support type:** ${
+                                chosenType !== null
+                                    ? emoji + " " + capitalize(chosenType)
+                                    : "General"
+                            }\n` +
+                            `**Ticket ID:** \`${c.id}\`\n${content}\n` +
+                            "Type `/ticket close` to close this ticket."
+                    )
+                    .setStatus("Success")
+                    .setEmoji("GUILD.TICKET.OPEN")
+            ],
+            components: [
+                new MessageActionRow().addComponents([
+                    new MessageButton()
+                        .setLabel("Close")
+                        .setStyle("DANGER")
+                        .setCustomId("closeticket")
+                        .setEmoji(getEmojiByName("CONTROL.CROSS", "id"))
+                ])
+            ]
+        });
         const data = {
-            meta:{
+            meta: {
                 type: "ticketCreate",
                 displayName: "Ticket Created",
                 calculateType: "ticketUpdate",
@@ -188,8 +296,14 @@
                 timestamp: new Date().getTime()
             },
             list: {
-                ticketFor: entry(interaction.member.user.id, renderUser(interaction.member.user)),
-                created: entry(new Date().getTime(), renderDelta(new Date().getTime())),
+                ticketFor: entry(
+                    interaction.member.user.id,
+                    renderUser(interaction.member.user)
+                ),
+                created: entry(
+                    new Date().getTime(),
+                    renderDelta(new Date().getTime())
+                ),
                 ticketChannel: entry(c.id, renderChannel(c))
             },
             hidden: {
@@ -197,11 +311,19 @@
             }
         };
         log(data);
-    } catch (e) { console.log(e);}
-    await interaction.editReply({embeds: [new EmojiEmbed()
-        .setTitle("Create Ticket")
-        .setDescription(`Ticket created. You can view it here: <#${c.id}>`)
-        .setStatus("Success")
-        .setEmoji("GUILD.TICKET.OPEN")
-    ], components: splitFormattedTicketTypes});
-}
\ No newline at end of file
+    } catch (e) {
+        console.log(e);
+    }
+    await interaction.editReply({
+        embeds: [
+            new EmojiEmbed()
+                .setTitle("Create Ticket")
+                .setDescription(
+                    `Ticket created. You can view it here: <#${c.id}>`
+                )
+                .setStatus("Success")
+                .setEmoji("GUILD.TICKET.OPEN")
+        ],
+        components: splitFormattedTicketTypes
+    });
+}
diff --git a/src/actions/tickets/delete.ts b/src/actions/tickets/delete.ts
index e5c017f..6509c03 100644
--- a/src/actions/tickets/delete.ts
+++ b/src/actions/tickets/delete.ts
@@ -4,31 +4,53 @@
 import getEmojiByName from "../../utils/getEmojiByName.js";
 
 export default async function (interaction) {
-    const { log, NucleusColors, entry, renderUser, renderChannel, renderDelta } = client.logger;
+    const {
+        log,
+        NucleusColors,
+        entry,
+        renderUser,
+        renderChannel,
+        renderDelta
+    } = client.logger;
 
     const config = await client.database.guilds.read(interaction.guild.id);
     let thread = false;
     if (interaction.channel instanceof Discord.ThreadChannel) thread = true;
     const threadChannel = interaction.channel as Discord.ThreadChannel;
-    const channel = (interaction.channel as Discord.TextChannel);
-    if (!channel.parent || config.tickets.category !== channel.parent.id || (thread ? (threadChannel.parent.parent.id !== config.tickets.category) : false)) {
-        return interaction.reply({embeds: [new EmojiEmbed()
-            .setTitle("Deleting Ticket...")
-            .setDescription("This ticket is not in your tickets category, so cannot be deleted. You cannot run close in a thread.")
-            .setStatus("Danger")
-            .setEmoji("CONTROL.BLOCKCROSS")
-        ], ephemeral: true});
+    const channel = interaction.channel as Discord.TextChannel;
+    if (
+        !channel.parent ||
+        config.tickets.category !== channel.parent.id ||
+        (thread
+            ? threadChannel.parent.parent.id !== config.tickets.category
+            : false)
+    ) {
+        return interaction.reply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Deleting Ticket...")
+                    .setDescription(
+                        "This ticket is not in your tickets category, so cannot be deleted. You cannot run close in a thread."
+                    )
+                    .setStatus("Danger")
+                    .setEmoji("CONTROL.BLOCKCROSS")
+            ],
+            ephemeral: true
+        });
     }
     const status = channel.topic.split(" ")[1];
     if (status === "Archived") {
-        await interaction.reply({embeds: [new EmojiEmbed()
-            .setTitle("Delete Ticket")
-            .setDescription("Your ticket is being deleted...")
-            .setStatus("Danger")
-            .setEmoji("GUILD.TICKET.CLOSE")
-        ]});
+        await interaction.reply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Delete Ticket")
+                    .setDescription("Your ticket is being deleted...")
+                    .setStatus("Danger")
+                    .setEmoji("GUILD.TICKET.CLOSE")
+            ]
+        });
         const data = {
-            meta:{
+            meta: {
                 type: "ticketDeleted",
                 displayName: "Ticket Deleted",
                 calculateType: "ticketUpdate",
@@ -37,9 +59,24 @@
                 timestamp: new Date().getTime()
             },
             list: {
-                ticketFor: entry(channel.topic.split(" ")[0], renderUser((await interaction.guild.members.fetch(channel.topic.split(" ")[0])).user)),
-                deletedBy: entry(interaction.member.user.id, renderUser(interaction.member.user)),
-                deleted: entry(new Date().getTime(), renderDelta(new Date().getTime()))
+                ticketFor: entry(
+                    channel.topic.split(" ")[0],
+                    renderUser(
+                        (
+                            await interaction.guild.members.fetch(
+                                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
@@ -49,12 +86,15 @@
         interaction.channel.delete();
         return;
     } else if (status === "Active") {
-        await interaction.reply({embeds: [new EmojiEmbed()
-            .setTitle("Close Ticket")
-            .setDescription("Your ticket is being closed...")
-            .setStatus("Warning")
-            .setEmoji("GUILD.TICKET.ARCHIVED")
-        ]});
+        await interaction.reply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Close Ticket")
+                    .setDescription("Your ticket is being closed...")
+                    .setStatus("Warning")
+                    .setEmoji("GUILD.TICKET.ARCHIVED")
+            ]
+        });
         const overwrites = [
             {
                 id: channel.topic.split(" ")[0],
@@ -69,15 +109,23 @@
         ] as Discord.OverwriteResolvable[];
         if (config.tickets.supportRole !== null) {
             overwrites.push({
-                id: interaction.guild.roles.cache.get(config.tickets.supportRole),
-                allow: ["VIEW_CHANNEL", "SEND_MESSAGES", "ATTACH_FILES", "ADD_REACTIONS", "READ_MESSAGE_HISTORY"],
+                id: interaction.guild.roles.cache.get(
+                    config.tickets.supportRole
+                ),
+                allow: [
+                    "VIEW_CHANNEL",
+                    "SEND_MESSAGES",
+                    "ATTACH_FILES",
+                    "ADD_REACTIONS",
+                    "READ_MESSAGE_HISTORY"
+                ],
                 type: "role"
             });
         }
-        channel.edit({permissionOverwrites: overwrites});
+        channel.edit({ permissionOverwrites: overwrites });
         channel.setTopic(`${channel.topic.split(" ")[0]} Archived`);
         const data = {
-            meta:{
+            meta: {
                 type: "ticketClosed",
                 displayName: "Ticket Closed",
                 calculateType: "ticketUpdate",
@@ -86,9 +134,24 @@
                 timestamp: new Date().getTime()
             },
             list: {
-                ticketFor: entry(channel.topic.split(" ")[0], renderUser((await interaction.guild.members.fetch(channel.topic.split(" ")[0])).user)),
-                closedBy: entry(interaction.member.user.id, renderUser(interaction.member.user)),
-                closed: entry(new Date().getTime(), renderDelta(new Date().getTime())),
+                ticketFor: entry(
+                    channel.topic.split(" ")[0],
+                    renderUser(
+                        (
+                            await interaction.guild.members.fetch(
+                                channel.topic.split(" ")[0]
+                            )
+                        ).user
+                    )
+                ),
+                closedBy: entry(
+                    interaction.member.user.id,
+                    renderUser(interaction.member.user)
+                ),
+                closed: entry(
+                    new Date().getTime(),
+                    renderDelta(new Date().getTime())
+                ),
                 ticketChannel: entry(channel.id, renderChannel(channel))
             },
             hidden: {
@@ -96,26 +159,43 @@
             }
         };
         log(data);
-        await interaction.editReply({embeds: [new EmojiEmbed()
-            .setTitle("Close Ticket")
-            .setDescription("This ticket has been closed.\nType `/ticket close` again to delete it.\n\nNote: Check `/privacy` for details about transcripts.")
-            .setStatus("Warning")
-            .setEmoji("GUILD.TICKET.ARCHIVED")
-        ], components: [
-            new MessageActionRow().addComponents([
-                new MessageButton()
-                    .setLabel("Delete")
-                    .setStyle("DANGER")
-                    .setCustomId("closeticket")
-                    .setEmoji(getEmojiByName("CONTROL.CROSS", "id"))
-            ].concat(client.database.premium.hasPremium(interaction.guild.id) ? [
-                new MessageButton()
-                    .setLabel("Create Transcript and Delete")
-                    .setStyle("PRIMARY")
-                    .setCustomId("createtranscript")
-                    .setEmoji(getEmojiByName("CONTROL.DOWNLOAD", "id"))
-            ] : []))
-        ]});
+        await interaction.editReply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Close Ticket")
+                    .setDescription(
+                        "This ticket has been closed.\nType `/ticket close` again to delete it.\n\nNote: Check `/privacy` for details about transcripts."
+                    )
+                    .setStatus("Warning")
+                    .setEmoji("GUILD.TICKET.ARCHIVED")
+            ],
+            components: [
+                new MessageActionRow().addComponents(
+                    [
+                        new MessageButton()
+                            .setLabel("Delete")
+                            .setStyle("DANGER")
+                            .setCustomId("closeticket")
+                            .setEmoji(getEmojiByName("CONTROL.CROSS", "id"))
+                    ].concat(
+                        client.database.premium.hasPremium(interaction.guild.id)
+                            ? [
+                                  new MessageButton()
+                                      .setLabel("Create Transcript and Delete")
+                                      .setStyle("PRIMARY")
+                                      .setCustomId("createtranscript")
+                                      .setEmoji(
+                                          getEmojiByName(
+                                              "CONTROL.DOWNLOAD",
+                                              "id"
+                                          )
+                                      )
+                              ]
+                            : []
+                    )
+                )
+            ]
+        });
         return;
     }
 }
@@ -127,19 +207,22 @@
     if (!tickets) return;
     const ticketChannels = tickets.children;
     let deleted = 0;
-    ticketChannels.forEach(element => {
+    ticketChannels.forEach((element) => {
         if (element.type !== "GUILD_TEXT") return;
         if (element.topic.split(" ")[0] === member) {
             try {
                 element.delete();
-            } catch { /* Errors if the channel does not exist (deleted already) */ }
+            } catch {
+                /* Errors if the channel does not exist (deleted already) */
+            }
             deleted++;
         }
     });
     if (deleted) {
-        const { log, NucleusColors, entry, renderUser, renderDelta } = member.client.logger;
+        const { log, NucleusColors, entry, renderUser, renderDelta } =
+            member.client.logger;
         const data = {
-            meta:{
+            meta: {
                 type: "ticketPurge",
                 displayName: "Tickets Purged",
                 calculateType: "ticketUpdate",
@@ -150,7 +233,10 @@
             list: {
                 ticketFor: entry(member, renderUser(member)),
                 deletedBy: entry(null, "Member left server"),
-                deleted: entry(new Date().getTime(), renderDelta(new Date().getTime())),
+                deleted: entry(
+                    new Date().getTime(),
+                    renderDelta(new Date().getTime())
+                ),
                 ticketsDeleted: deleted
             },
             hidden: {
@@ -161,4 +247,4 @@
     }
 }
 
-export { purgeByUser };
\ No newline at end of file
+export { purgeByUser };