Reformat using prettier
diff --git a/src/commands/settings/_meta.ts b/src/commands/settings/_meta.ts
index 666dbf4..1acc511 100644
--- a/src/commands/settings/_meta.ts
+++ b/src/commands/settings/_meta.ts
@@ -3,9 +3,6 @@
 const name = "settings";
 const description = "Change bot settings";
 
+const subcommand = await command(name, description, "settings", undefined, undefined, undefined, ["ManageGuild"]);
 
-const subcommand = await command(name, description, "settings", undefined, undefined, undefined, [
-    "ManageGuild"
-])
-
-export { name, description, subcommand as command};
+export { name, description, subcommand as command };
diff --git a/src/commands/settings/automod.ts b/src/commands/settings/automod.ts
index ff9e0b2..9d59520 100644
--- a/src/commands/settings/automod.ts
+++ b/src/commands/settings/automod.ts
@@ -1,5 +1,6 @@
 import type Discord from "discord.js";
-import { ActionRowBuilder,
+import {
+    ActionRowBuilder,
     AnySelectMenuInteraction,
     APIMessageComponentEmoji,
     ButtonBuilder,
@@ -28,49 +29,77 @@
 import { modalInteractionCollector } from "../../utils/dualCollector.js";
 import listToAndMore from "../../utils/listToAndMore.js";
 
-
 const command = (builder: SlashCommandSubcommandBuilder) =>
     builder.setName("automod").setDescription("Setting for automatic moderation features");
 
+const emojiFromBoolean = (bool: boolean, id?: string) =>
+    bool ? getEmojiByName("CONTROL.TICK", id) : getEmojiByName("CONTROL.CROSS", id);
 
-const emojiFromBoolean = (bool: boolean, id?: string) => bool ? getEmojiByName("CONTROL.TICK", id) : getEmojiByName("CONTROL.CROSS", id);
-
-const toSelectMenu = async (interaction: StringSelectMenuInteraction, m: Message, ids: string[], type: "member" | "role" | "channel", title: string): Promise<string[]> => {
-
-    const back = new ActionRowBuilder<ButtonBuilder>().addComponents(new ButtonBuilder().setCustomId("back").setLabel("Back").setStyle(ButtonStyle.Secondary).setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji));
+const toSelectMenu = async (
+    interaction: StringSelectMenuInteraction,
+    m: Message,
+    ids: string[],
+    type: "member" | "role" | "channel",
+    title: string
+): Promise<string[]> => {
+    const back = new ActionRowBuilder<ButtonBuilder>().addComponents(
+        new ButtonBuilder()
+            .setCustomId("back")
+            .setLabel("Back")
+            .setStyle(ButtonStyle.Secondary)
+            .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
+    );
     let closed;
     do {
-        let render: string[] = []
+        let render: string[] = [];
         let mapped: string[] = [];
         let menu: UserSelectMenuBuilder | RoleSelectMenuBuilder | ChannelSelectMenuBuilder;
-        switch(type) {
+        switch (type) {
             case "member": {
                 menu = new UserSelectMenuBuilder().setCustomId("user").setPlaceholder("Select users").setMaxValues(25);
-                mapped = await Promise.all(ids.map(async (id) => { return (await client.users.fetch(id).then(user => user.tag)) || "Unknown User" }));
-                render = ids.map(id => client.logger.renderUser(id))
+                mapped = await Promise.all(
+                    ids.map(async (id) => {
+                        return (await client.users.fetch(id).then((user) => user.tag)) || "Unknown User";
+                    })
+                );
+                render = ids.map((id) => client.logger.renderUser(id));
                 break;
             }
             case "role": {
                 menu = new RoleSelectMenuBuilder().setCustomId("role").setPlaceholder("Select roles").setMaxValues(25);
-                mapped = await Promise.all(ids.map(async (id) => { return (await interaction.guild!.roles.fetch(id).then(role => role?.name ?? "Unknown Role"))}));
-                render = ids.map(id => client.logger.renderRole(id, interaction.guild!))
+                mapped = await Promise.all(
+                    ids.map(async (id) => {
+                        return await interaction.guild!.roles.fetch(id).then((role) => role?.name ?? "Unknown Role");
+                    })
+                );
+                render = ids.map((id) => client.logger.renderRole(id, interaction.guild!));
                 break;
             }
             case "channel": {
-                menu = new ChannelSelectMenuBuilder().setCustomId("channel").setPlaceholder("Select channels").setMaxValues(25);
-                mapped = await Promise.all(ids.map(async (id) => { return (await interaction.guild!.channels.fetch(id).then(channel => channel?.name ?? "Unknown Role")) }));
-                render = ids.map(id => client.logger.renderChannel(id))
+                menu = new ChannelSelectMenuBuilder()
+                    .setCustomId("channel")
+                    .setPlaceholder("Select channels")
+                    .setMaxValues(25);
+                mapped = await Promise.all(
+                    ids.map(async (id) => {
+                        return await interaction
+                            .guild!.channels.fetch(id)
+                            .then((channel) => channel?.name ?? "Unknown Role");
+                    })
+                );
+                render = ids.map((id) => client.logger.renderChannel(id));
                 break;
             }
         }
-        const removeOptions = new ActionRowBuilder<StringSelectMenuBuilder>()
-            .addComponents(
-                new StringSelectMenuBuilder()
-                    .setCustomId("remove")
-                    .setPlaceholder("Remove")
-                    .addOptions(mapped.map((name, i) => new StringSelectMenuOptionBuilder().setLabel(name).setValue(ids[i]!)))
-                    .setDisabled(ids.length === 0)
-            );
+        const removeOptions = new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(
+            new StringSelectMenuBuilder()
+                .setCustomId("remove")
+                .setPlaceholder("Remove")
+                .addOptions(
+                    mapped.map((name, i) => new StringSelectMenuOptionBuilder().setLabel(name).setValue(ids[i]!))
+                )
+                .setDisabled(ids.length === 0)
+        );
 
         const embed = new EmojiEmbed()
             .setTitle(title)
@@ -78,96 +107,100 @@
             .setDescription(`Select ${type}s:\n\nCurrent:\n` + (render.length > 0 ? render.join("\n") : "None"))
             .setStatus("Success");
         const components: ActionRowBuilder<
-            StringSelectMenuBuilder |
-            ButtonBuilder |
-            ChannelSelectMenuBuilder |
-            UserSelectMenuBuilder |
-            RoleSelectMenuBuilder
-        >[] = [new ActionRowBuilder<typeof menu>().addComponents(menu)]
-        if(ids.length > 0) components.push(removeOptions);
+            | StringSelectMenuBuilder
+            | ButtonBuilder
+            | ChannelSelectMenuBuilder
+            | UserSelectMenuBuilder
+            | RoleSelectMenuBuilder
+        >[] = [new ActionRowBuilder<typeof menu>().addComponents(menu)];
+        if (ids.length > 0) components.push(removeOptions);
         components.push(back);
 
-        await interaction.editReply({embeds: [embed], components: components})
+        await interaction.editReply({ embeds: [embed], components: components });
 
         let i: AnySelectMenuInteraction | ButtonInteraction;
         try {
-            i = await m.awaitMessageComponent({filter: i => i.user.id === interaction.user.id, time: 300000});
-        } catch(e) {
+            i = await m.awaitMessageComponent({ filter: (i) => i.user.id === interaction.user.id, time: 300000 });
+        } catch (e) {
             closed = true;
             continue;
         }
 
-        if(i.isButton()) {
+        if (i.isButton()) {
             await i.deferUpdate();
-            if(i.customId === "back") {
+            if (i.customId === "back") {
                 closed = true;
                 break;
             }
-        } else if(i.isStringSelectMenu()) {
+        } else if (i.isStringSelectMenu()) {
             await i.deferUpdate();
-            if(i.customId === "remove") {
-                ids = ids.filter(id => id !== (i as StringSelectMenuInteraction).values[0]);
-                if(ids.length === 0) {
+            if (i.customId === "remove") {
+                ids = ids.filter((id) => id !== (i as StringSelectMenuInteraction).values[0]);
+                if (ids.length === 0) {
                     menu.data.disabled = true;
                 }
             }
         } else {
             await i.deferUpdate();
-            if(i.customId === "user") {
+            if (i.customId === "user") {
                 ids = ids.concat((i as UserSelectMenuInteraction).values);
-            } else if(i.customId === "role") {
+            } else if (i.customId === "role") {
                 ids = ids.concat((i as RoleSelectMenuInteraction).values);
-            } else if(i.customId === "channel") {
+            } else if (i.customId === "channel") {
                 ids = ids.concat((i as ChannelSelectMenuInteraction).values);
             }
         }
-
-    } while(!closed)
+    } while (!closed);
     return ids;
-}
+};
 
-const imageMenu = async (interaction: StringSelectMenuInteraction, m: Message, current: {
-    NSFW: boolean,
-    size: boolean
-}): Promise<{NSFW: boolean, size: boolean}> => {
+const imageMenu = async (
+    interaction: StringSelectMenuInteraction,
+    m: Message,
+    current: {
+        NSFW: boolean;
+        size: boolean;
+    }
+): Promise<{ NSFW: boolean; size: boolean }> => {
     let closed = false;
     do {
-        const options = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("back")
-                    .setLabel("Back")
-                    .setStyle(ButtonStyle.Secondary)
-                    .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("nsfw")
-                    .setLabel("NSFW")
-                    .setStyle(current.NSFW ? ButtonStyle.Success : ButtonStyle.Danger)
-                    .setEmoji(emojiFromBoolean(current.NSFW, "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("size")
-                    .setLabel("Size")
-                    .setStyle(current.size ? ButtonStyle.Success : ButtonStyle.Danger)
-                    .setEmoji(emojiFromBoolean(current.size, "id") as APIMessageComponentEmoji)
-            )
+        const options = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("back")
+                .setLabel("Back")
+                .setStyle(ButtonStyle.Secondary)
+                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
+            new ButtonBuilder()
+                .setCustomId("nsfw")
+                .setLabel("NSFW")
+                .setStyle(current.NSFW ? ButtonStyle.Success : ButtonStyle.Danger)
+                .setEmoji(emojiFromBoolean(current.NSFW, "id") as APIMessageComponentEmoji),
+            new ButtonBuilder()
+                .setCustomId("size")
+                .setLabel("Size")
+                .setStyle(current.size ? ButtonStyle.Success : ButtonStyle.Danger)
+                .setEmoji(emojiFromBoolean(current.size, "id") as APIMessageComponentEmoji)
+        );
 
         const embed = new EmojiEmbed()
             .setTitle("Image Settings")
             .setDescription(
-                `${emojiFromBoolean(current.NSFW)} **NSFW**\n` +
-                `${emojiFromBoolean(current.size)} **Size**\n`
-            )
+                `${emojiFromBoolean(current.NSFW)} **NSFW**\n` + `${emojiFromBoolean(current.size)} **Size**\n`
+            );
 
-        await interaction.editReply({embeds: [embed], components: [options]});
+        await interaction.editReply({ embeds: [embed], components: [options] });
 
         let i: ButtonInteraction;
         try {
-            i = await m.awaitMessageComponent({filter: (i) => interaction.user.id === i.user.id && i.message.id === m.id, time: 300000}) as ButtonInteraction;
+            i = (await m.awaitMessageComponent({
+                filter: (i) => interaction.user.id === i.user.id && i.message.id === m.id,
+                time: 300000
+            })) as ButtonInteraction;
         } catch (e) {
             return current;
         }
         await i.deferUpdate();
-        switch(i.customId) {
+        switch (i.customId) {
             case "back": {
                 closed = true;
                 break;
@@ -181,87 +214,106 @@
                 break;
             }
         }
-    } while(!closed);
+    } while (!closed);
     return current;
-}
+};
 
-const wordMenu = async (interaction: StringSelectMenuInteraction, m: Message, current: {
-    enabled: boolean,
-    words: {strict: string[], loose: string[]},
-    allowed: {users: string[], roles: string[], channels: string[]}
-}): Promise<{
-    enabled: boolean,
-    words: {strict: string[], loose: string[]},
-    allowed: {users: string[], roles: string[], channels: string[]}
+const wordMenu = async (
+    interaction: StringSelectMenuInteraction,
+    m: Message,
+    current: {
+        enabled: boolean;
+        words: { strict: string[]; loose: string[] };
+        allowed: { users: string[]; roles: string[]; channels: string[] };
+    }
+): Promise<{
+    enabled: boolean;
+    words: { strict: string[]; loose: string[] };
+    allowed: { users: string[]; roles: string[]; channels: string[] };
 }> => {
     let closed = false;
     do {
-        const buttons = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("back")
-                    .setLabel("Back")
-                    .setStyle(ButtonStyle.Secondary)
-                    .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("enabled")
-                    .setLabel("Enabled")
-                    .setStyle(current.enabled ? ButtonStyle.Success : ButtonStyle.Danger)
-                    .setEmoji(emojiFromBoolean(current.enabled, "id") as APIMessageComponentEmoji),
-            );
+        const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("back")
+                .setLabel("Back")
+                .setStyle(ButtonStyle.Secondary)
+                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
+            new ButtonBuilder()
+                .setCustomId("enabled")
+                .setLabel("Enabled")
+                .setStyle(current.enabled ? ButtonStyle.Success : ButtonStyle.Danger)
+                .setEmoji(emojiFromBoolean(current.enabled, "id") as APIMessageComponentEmoji)
+        );
 
-        const selectMenu = new ActionRowBuilder<StringSelectMenuBuilder>()
-            .addComponents(
-                new StringSelectMenuBuilder()
-                    .setCustomId("edit")
-                    .setPlaceholder("Edit... ")
-                    .addOptions(
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Words")
-                            .setDescription("Edit your list of words to filter")
-                            .setValue("words"),
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Allowed Users")
-                            .setDescription("Users who will be unaffected by the word filter")
-                            .setValue("allowedUsers"),
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Allowed Roles")
-                            .setDescription("Roles that will be unaffected by the word filter")
-                            .setValue("allowedRoles"),
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Allowed Channels")
-                            .setDescription("Channels where the word filter will not apply")
-                            .setValue("allowedChannels")
-                    )
-                    .setDisabled(!current.enabled)
-            );
+        const selectMenu = new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(
+            new StringSelectMenuBuilder()
+                .setCustomId("edit")
+                .setPlaceholder("Edit... ")
+                .addOptions(
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Words")
+                        .setDescription("Edit your list of words to filter")
+                        .setValue("words"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Allowed Users")
+                        .setDescription("Users who will be unaffected by the word filter")
+                        .setValue("allowedUsers"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Allowed Roles")
+                        .setDescription("Roles that will be unaffected by the word filter")
+                        .setValue("allowedRoles"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Allowed Channels")
+                        .setDescription("Channels where the word filter will not apply")
+                        .setValue("allowedChannels")
+                )
+                .setDisabled(!current.enabled)
+        );
 
         const embed = new EmojiEmbed()
             .setTitle("Word Filters")
             .setDescription(
                 `${emojiFromBoolean(current.enabled)} **Enabled**\n` +
-                `**Strict Words:** ${listToAndMore(current.words.strict, 5)}\n` +
-                `**Loose Words:** ${listToAndMore(current.words.loose, 5)}\n\n` +
-                `**Users:** ` + listToAndMore(current.allowed.users.map(user => `<@${user}>`), 5) + `\n` +
-                `**Roles:** ` + listToAndMore(current.allowed.roles.map(role => `<@&${role}>`), 5) + `\n` +
-                `**Channels:** ` + listToAndMore(current.allowed.channels.map(channel => `<#${channel}>`), 5)
+                    `**Strict Words:** ${listToAndMore(current.words.strict, 5)}\n` +
+                    `**Loose Words:** ${listToAndMore(current.words.loose, 5)}\n\n` +
+                    `**Users:** ` +
+                    listToAndMore(
+                        current.allowed.users.map((user) => `<@${user}>`),
+                        5
+                    ) +
+                    `\n` +
+                    `**Roles:** ` +
+                    listToAndMore(
+                        current.allowed.roles.map((role) => `<@&${role}>`),
+                        5
+                    ) +
+                    `\n` +
+                    `**Channels:** ` +
+                    listToAndMore(
+                        current.allowed.channels.map((channel) => `<#${channel}>`),
+                        5
+                    )
             )
             .setStatus("Success")
-            .setEmoji("GUILD.SETTINGS.GREEN")
+            .setEmoji("GUILD.SETTINGS.GREEN");
 
-        await interaction.editReply({embeds: [embed], components: [selectMenu, buttons]});
+        await interaction.editReply({ embeds: [embed], components: [selectMenu, buttons] });
 
         let i: ButtonInteraction | StringSelectMenuInteraction;
         try {
-            i = await m.awaitMessageComponent({filter: (i) => interaction.user.id === i.user.id && i.message.id === m.id, time: 300000}) as ButtonInteraction | StringSelectMenuInteraction;
+            i = (await m.awaitMessageComponent({
+                filter: (i) => interaction.user.id === i.user.id && i.message.id === m.id,
+                time: 300000
+            })) as ButtonInteraction | StringSelectMenuInteraction;
         } catch (e) {
             closed = true;
             break;
         }
 
-        if(i.isButton()) {
+        if (i.isButton()) {
             await i.deferUpdate();
-            switch(i.customId) {
+            switch (i.customId) {
                 case "back": {
                     closed = true;
                     break;
@@ -272,44 +324,53 @@
                 }
             }
         } else {
-            switch(i.values[0]) {
+            switch (i.values[0]) {
                 case "words": {
-                    await interaction.editReply({embeds: [new EmojiEmbed()
-                        .setTitle("Word Filter")
-                        .setDescription("Modal opened. If you can't see it, click back and try again.")
-                        .setStatus("Success")
-                        .setEmoji("GUILD.SETTINGS.GREEN")
-                    ], components: [new ActionRowBuilder<ButtonBuilder>().addComponents(new ButtonBuilder()
-                        .setLabel("Back")
-                        .setEmoji(getEmojiByName("CONTROL.LEFT", "id"))
-                        .setStyle(ButtonStyle.Primary)
-                        .setCustomId("back")
-                    )]})
+                    await interaction.editReply({
+                        embeds: [
+                            new EmojiEmbed()
+                                .setTitle("Word Filter")
+                                .setDescription("Modal opened. If you can't see it, click back and try again.")
+                                .setStatus("Success")
+                                .setEmoji("GUILD.SETTINGS.GREEN")
+                        ],
+                        components: [
+                            new ActionRowBuilder<ButtonBuilder>().addComponents(
+                                new ButtonBuilder()
+                                    .setLabel("Back")
+                                    .setEmoji(getEmojiByName("CONTROL.LEFT", "id"))
+                                    .setStyle(ButtonStyle.Primary)
+                                    .setCustomId("back")
+                            )
+                        ]
+                    });
                     const modal = new ModalBuilder()
                         .setTitle("Word Filter")
                         .setCustomId("wordFilter")
                         .addComponents(
-                            new ActionRowBuilder<TextInputBuilder>()
-                                .addComponents(
-                                    new TextInputBuilder()
-                                        .setCustomId("wordStrict")
-                                        .setLabel("Strict Words")
-                                        .setPlaceholder("Matches anywhere in the message, including surrounded by other characters")
-                                        .setValue(current.words.strict.join(", "))
-                                        .setStyle(TextInputStyle.Paragraph)
-                                        .setRequired(false)
-                                ),
-                            new ActionRowBuilder<TextInputBuilder>()
-                                .addComponents(
-                                    new TextInputBuilder()
-                                        .setCustomId("wordLoose")
-                                        .setLabel("Loose Words")
-                                        .setPlaceholder("Matches only if the word is by itself, surrounded by spaces or punctuation")
-                                        .setValue(current.words.loose.join(", "))
-                                        .setStyle(TextInputStyle.Paragraph)
-                                        .setRequired(false)
-                                )
-                        )
+                            new ActionRowBuilder<TextInputBuilder>().addComponents(
+                                new TextInputBuilder()
+                                    .setCustomId("wordStrict")
+                                    .setLabel("Strict Words")
+                                    .setPlaceholder(
+                                        "Matches anywhere in the message, including surrounded by other characters"
+                                    )
+                                    .setValue(current.words.strict.join(", "))
+                                    .setStyle(TextInputStyle.Paragraph)
+                                    .setRequired(false)
+                            ),
+                            new ActionRowBuilder<TextInputBuilder>().addComponents(
+                                new TextInputBuilder()
+                                    .setCustomId("wordLoose")
+                                    .setLabel("Loose Words")
+                                    .setPlaceholder(
+                                        "Matches only if the word is by itself, surrounded by spaces or punctuation"
+                                    )
+                                    .setValue(current.words.loose.join(", "))
+                                    .setStyle(TextInputStyle.Paragraph)
+                                    .setRequired(false)
+                            )
+                        );
 
                     await i.showModal(modal);
                     let out;
@@ -319,103 +380,146 @@
                         break;
                     }
                     if (!out) break;
-                    if(out.isButton()) break;
-                    current.words.strict = out.fields.getTextInputValue("wordStrict")
-                        .split(",").map(s => s.trim()).filter(s => s.length > 0);
-                    current.words.loose = out.fields.getTextInputValue("wordLoose")
-                        .split(",").map(s => s.trim()).filter(s => s.length > 0);
+                    if (out.isButton()) break;
+                    current.words.strict = out.fields
+                        .getTextInputValue("wordStrict")
+                        .split(",")
+                        .map((s) => s.trim())
+                        .filter((s) => s.length > 0);
+                    current.words.loose = out.fields
+                        .getTextInputValue("wordLoose")
+                        .split(",")
+                        .map((s) => s.trim())
+                        .filter((s) => s.length > 0);
                     break;
                 }
                 case "allowedUsers": {
                     await i.deferUpdate();
-                    current.allowed.users = await toSelectMenu(interaction, m, current.allowed.users, "member", "Word Filter");
+                    current.allowed.users = await toSelectMenu(
+                        interaction,
+                        m,
+                        current.allowed.users,
+                        "member",
+                        "Word Filter"
+                    );
                     break;
                 }
                 case "allowedRoles": {
                     await i.deferUpdate();
-                    current.allowed.roles = await toSelectMenu(interaction, m, current.allowed.roles, "role", "Word Filter");
+                    current.allowed.roles = await toSelectMenu(
+                        interaction,
+                        m,
+                        current.allowed.roles,
+                        "role",
+                        "Word Filter"
+                    );
                     break;
                 }
                 case "allowedChannels": {
                     await i.deferUpdate();
-                    current.allowed.channels = await toSelectMenu(interaction, m, current.allowed.channels, "channel", "Word Filter");
+                    current.allowed.channels = await toSelectMenu(
+                        interaction,
+                        m,
+                        current.allowed.channels,
+                        "channel",
+                        "Word Filter"
+                    );
                     break;
                 }
             }
         }
-    } while(!closed);
+    } while (!closed);
     return current;
-}
+};
 
-const inviteMenu = async (interaction: StringSelectMenuInteraction, m: Message, current: {
-    enabled: boolean,
-    allowed: {users: string[], roles: string[], channels: string[]}
-}): Promise<{
-    enabled: boolean,
-    allowed: {users: string[], roles: string[], channels: string[]}
+const inviteMenu = async (
+    interaction: StringSelectMenuInteraction,
+    m: Message,
+    current: {
+        enabled: boolean;
+        allowed: { users: string[]; roles: string[]; channels: string[] };
+    }
+): Promise<{
+    enabled: boolean;
+    allowed: { users: string[]; roles: string[]; channels: string[] };
 }> => {
-
     let closed = false;
     do {
-        const buttons = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("back")
-                    .setLabel("Back")
-                    .setStyle(ButtonStyle.Secondary)
-                    .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("enabled")
-                    .setLabel(current.enabled ? "Enabled" : "Disabled")
-                    .setStyle(current.enabled ? ButtonStyle.Success : ButtonStyle.Danger)
-                    .setEmoji(emojiFromBoolean(current.enabled, "id") as APIMessageComponentEmoji)
-            );
-        const menu = new ActionRowBuilder<StringSelectMenuBuilder>()
-                .addComponents(
-                    new StringSelectMenuBuilder()
-                        .setCustomId("toEdit")
-                        .setPlaceholder("Edit your allow list")
-                        .addOptions(
-                            new StringSelectMenuOptionBuilder()
-                                .setLabel("Users")
-                                .setDescription("Users that are allowed to send invites")
-                                .setValue("users"),
-                            new StringSelectMenuOptionBuilder()
-                                .setLabel("Roles")
-                                .setDescription("Roles that are allowed to send invites")
-                                .setValue("roles"),
-                            new StringSelectMenuOptionBuilder()
-                                .setLabel("Channels")
-                                .setDescription("Channels that anyone is allowed to send invites in")
-                                .setValue("channels")
-                        ).setDisabled(!current.enabled)
+        const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("back")
+                .setLabel("Back")
+                .setStyle(ButtonStyle.Secondary)
+                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
+            new ButtonBuilder()
+                .setCustomId("enabled")
+                .setLabel(current.enabled ? "Enabled" : "Disabled")
+                .setStyle(current.enabled ? ButtonStyle.Success : ButtonStyle.Danger)
+                .setEmoji(emojiFromBoolean(current.enabled, "id") as APIMessageComponentEmoji)
+        );
+        const menu = new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(
+            new StringSelectMenuBuilder()
+                .setCustomId("toEdit")
+                .setPlaceholder("Edit your allow list")
+                .addOptions(
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Users")
+                        .setDescription("Users that are allowed to send invites")
+                        .setValue("users"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Roles")
+                        .setDescription("Roles that are allowed to send invites")
+                        .setValue("roles"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Channels")
+                        .setDescription("Channels that anyone is allowed to send invites in")
+                        .setValue("channels")
                 )
+                .setDisabled(!current.enabled)
+        );
 
         const embed = new EmojiEmbed()
             .setTitle("Invite Settings")
             .setDescription(
-                "Automatically deletes invites sent by users (outside of staff members and self promotion channels)" + `\n\n` +
-                `${emojiFromBoolean(current.enabled)} **${current.enabled ? "Enabled" : "Disabled"}**\n\n` +
-                `**Users:** ` + listToAndMore(current.allowed.users.map(user => `<@${user}>`), 5) + `\n` +
-                `**Roles:** ` + listToAndMore(current.allowed.roles.map(role => `<@&${role}>`), 5) + `\n` +
-                `**Channels:** ` + listToAndMore(current.allowed.channels.map(channel => `<#${channel}>`), 5)
+                "Automatically deletes invites sent by users (outside of staff members and self promotion channels)" +
+                    `\n\n` +
+                    `${emojiFromBoolean(current.enabled)} **${current.enabled ? "Enabled" : "Disabled"}**\n\n` +
+                    `**Users:** ` +
+                    listToAndMore(
+                        current.allowed.users.map((user) => `<@${user}>`),
+                        5
+                    ) +
+                    `\n` +
+                    `**Roles:** ` +
+                    listToAndMore(
+                        current.allowed.roles.map((role) => `<@&${role}>`),
+                        5
+                    ) +
+                    `\n` +
+                    `**Channels:** ` +
+                    listToAndMore(
+                        current.allowed.channels.map((channel) => `<#${channel}>`),
+                        5
+                    )
             )
             .setStatus("Success")
-            .setEmoji("GUILD.SETTINGS.GREEN")
+            .setEmoji("GUILD.SETTINGS.GREEN");
 
-
-        await interaction.editReply({embeds: [embed], components: [menu, buttons]});
+        await interaction.editReply({ embeds: [embed], components: [menu, buttons] });
 
         let i: ButtonInteraction | StringSelectMenuInteraction;
         try {
-            i = await m.awaitMessageComponent({filter: (i) => interaction.user.id === i.user.id && i.message.id === m.id, time: 300000}) as ButtonInteraction | StringSelectMenuInteraction;
+            i = (await m.awaitMessageComponent({
+                filter: (i) => interaction.user.id === i.user.id && i.message.id === m.id,
+                time: 300000
+            })) as ButtonInteraction | StringSelectMenuInteraction;
         } catch (e) {
             return current;
         }
 
-        if(i.isButton()) {
+        if (i.isButton()) {
             await i.deferUpdate();
-            switch(i.customId) {
+            switch (i.customId) {
                 case "back": {
                     closed = true;
                     break;
@@ -427,135 +531,181 @@
             }
         } else {
             await i.deferUpdate();
-            switch(i.values[0]) {
+            switch (i.values[0]) {
                 case "users": {
-                    current.allowed.users = await toSelectMenu(interaction, m, current.allowed.users, "member", "Invite Settings");
+                    current.allowed.users = await toSelectMenu(
+                        interaction,
+                        m,
+                        current.allowed.users,
+                        "member",
+                        "Invite Settings"
+                    );
                     break;
                 }
                 case "roles": {
-                    current.allowed.roles = await toSelectMenu(interaction, m, current.allowed.roles, "role", "Invite Settings");
+                    current.allowed.roles = await toSelectMenu(
+                        interaction,
+                        m,
+                        current.allowed.roles,
+                        "role",
+                        "Invite Settings"
+                    );
                     break;
                 }
                 case "channels": {
-                    current.allowed.channels = await toSelectMenu(interaction, m, current.allowed.channels, "channel", "Invite Settings");
+                    current.allowed.channels = await toSelectMenu(
+                        interaction,
+                        m,
+                        current.allowed.channels,
+                        "channel",
+                        "Invite Settings"
+                    );
                     break;
                 }
             }
         }
-
-    } while(!closed);
+    } while (!closed);
     return current;
-}
+};
 
-const mentionMenu = async (interaction: StringSelectMenuInteraction, m: Message, current: {
-    mass: number,
-    everyone: boolean,
-    roles: boolean,
-    allowed: {
-        roles: string[],
-        rolesToMention: string[],
-        users: string[],
-        channels: string[]
+const mentionMenu = async (
+    interaction: StringSelectMenuInteraction,
+    m: Message,
+    current: {
+        mass: number;
+        everyone: boolean;
+        roles: boolean;
+        allowed: {
+            roles: string[];
+            rolesToMention: string[];
+            users: string[];
+            channels: string[];
+        };
     }
-}): Promise<{
-    mass: number,
-    everyone: boolean,
-    roles: boolean,
+): Promise<{
+    mass: number;
+    everyone: boolean;
+    roles: boolean;
     allowed: {
-        roles: string[],
-        rolesToMention: string[],
-        users: string[],
-        channels: string[]
-    }
+        roles: string[];
+        rolesToMention: string[];
+        users: string[];
+        channels: string[];
+    };
 }> => {
     let closed = false;
 
     do {
+        const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("back")
+                .setLabel("Back")
+                .setStyle(ButtonStyle.Secondary)
+                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
+            new ButtonBuilder()
+                .setCustomId("everyone")
+                .setLabel(current.everyone ? "Everyone" : "No one")
+                .setStyle(current.everyone ? ButtonStyle.Success : ButtonStyle.Danger)
+                .setEmoji(emojiFromBoolean(current.everyone, "id") as APIMessageComponentEmoji),
+            new ButtonBuilder()
+                .setCustomId("roles")
+                .setLabel(current.roles ? "Roles" : "No roles")
+                .setStyle(current.roles ? ButtonStyle.Success : ButtonStyle.Danger)
+                .setEmoji(emojiFromBoolean(current.roles, "id") as APIMessageComponentEmoji)
+        );
+        const menu = new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(
+            new StringSelectMenuBuilder()
+                .setCustomId("toEdit")
+                .setPlaceholder("Edit mention settings")
+                .addOptions(
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Mass Mention Amount")
+                        .setDescription("The amount of mentions before the bot will delete the message")
+                        .setValue("mass"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Roles")
+                        .setDescription("Roles that are able to be mentioned")
+                        .setValue("roles")
+                )
+        );
 
-        const buttons = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("back")
-                    .setLabel("Back")
-                    .setStyle(ButtonStyle.Secondary)
-                    .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("everyone")
-                    .setLabel(current.everyone ? "Everyone" : "No one")
-                    .setStyle(current.everyone ? ButtonStyle.Success : ButtonStyle.Danger)
-                    .setEmoji(emojiFromBoolean(current.everyone, "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("roles")
-                    .setLabel(current.roles ? "Roles" : "No roles")
-                    .setStyle(current.roles ? ButtonStyle.Success : ButtonStyle.Danger)
-                    .setEmoji(emojiFromBoolean(current.roles, "id") as APIMessageComponentEmoji)
-            );
-        const menu = new ActionRowBuilder<StringSelectMenuBuilder>()
-            .addComponents(
-                new StringSelectMenuBuilder()
-                    .setCustomId("toEdit")
-                    .setPlaceholder("Edit mention settings")
-                    .addOptions(
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Mass Mention Amount")
-                            .setDescription("The amount of mentions before the bot will delete the message")
-                            .setValue("mass"),
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Roles")
-                            .setDescription("Roles that are able to be mentioned")
-                            .setValue("roles"),
-                    )
-            )
-
-        const allowedMenu = new ActionRowBuilder<StringSelectMenuBuilder>()
-            .addComponents(
-                new StringSelectMenuBuilder()
-                    .setCustomId("allowed")
-                    .setPlaceholder("Edit exceptions")
-                    .addOptions(
-                        new StringSelectMenuOptionBuilder()
-                                .setLabel("Users")
-                                .setDescription("Users that are unaffected by the mention filter")
-                                .setValue("users"),
-                            new StringSelectMenuOptionBuilder()
-                                .setLabel("Roles")
-                                .setDescription("Roles that are unaffected by the mention filter")
-                                .setValue("roles"),
-                            new StringSelectMenuOptionBuilder()
-                                .setLabel("Channels")
-                                .setDescription("Channels where anyone is unaffected by the mention filter")
-                                .setValue("channels")
-                    )
-            )
+        const allowedMenu = new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(
+            new StringSelectMenuBuilder()
+                .setCustomId("allowed")
+                .setPlaceholder("Edit exceptions")
+                .addOptions(
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Users")
+                        .setDescription("Users that are unaffected by the mention filter")
+                        .setValue("users"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Roles")
+                        .setDescription("Roles that are unaffected by the mention filter")
+                        .setValue("roles"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Channels")
+                        .setDescription("Channels where anyone is unaffected by the mention filter")
+                        .setValue("channels")
+                )
+        );
 
         const embed = new EmojiEmbed()
             .setTitle("Mention Settings")
             .setDescription(
                 `Log when members mention:\n` +
-                `${emojiFromBoolean(true)} **${current.mass}+ members** in one message\n` +
-                `${emojiFromBoolean(current.everyone)} **Everyone**\n` +
-                `${emojiFromBoolean(current.roles)} **Roles**\n` +
-                (current.allowed.rolesToMention.length > 0 ? `> *Except for ${listToAndMore(current.allowed.rolesToMention.map(r => `<@&${r}>`), 3)}*\n` : "") +
-                "\n" +
-                `Except if...\n` +
-                `> ${current.allowed.users.length > 0 ? `Member is: ${listToAndMore(current.allowed.users.map(u => `<@${u}>`), 3)}\n` : ""}` +
-                `> ${current.allowed.roles.length > 0 ? `Member has role: ${listToAndMore(current.allowed.roles.map(r => `<@&${r}>`), 3)}\n` : ""}` +
-                `> ${current.allowed.channels.length > 0 ? `In channel: ${listToAndMore(current.allowed.channels.map(c => `<#${c}>`), 3)}\n` : ""}`
+                    `${emojiFromBoolean(true)} **${current.mass}+ members** in one message\n` +
+                    `${emojiFromBoolean(current.everyone)} **Everyone**\n` +
+                    `${emojiFromBoolean(current.roles)} **Roles**\n` +
+                    (current.allowed.rolesToMention.length > 0
+                        ? `> *Except for ${listToAndMore(
+                              current.allowed.rolesToMention.map((r) => `<@&${r}>`),
+                              3
+                          )}*\n`
+                        : "") +
+                    "\n" +
+                    `Except if...\n` +
+                    `> ${
+                        current.allowed.users.length > 0
+                            ? `Member is: ${listToAndMore(
+                                  current.allowed.users.map((u) => `<@${u}>`),
+                                  3
+                              )}\n`
+                            : ""
+                    }` +
+                    `> ${
+                        current.allowed.roles.length > 0
+                            ? `Member has role: ${listToAndMore(
+                                  current.allowed.roles.map((r) => `<@&${r}>`),
+                                  3
+                              )}\n`
+                            : ""
+                    }` +
+                    `> ${
+                        current.allowed.channels.length > 0
+                            ? `In channel: ${listToAndMore(
+                                  current.allowed.channels.map((c) => `<#${c}>`),
+                                  3
+                              )}\n`
+                            : ""
+                    }`
             )
             .setStatus("Success")
-            .setEmoji("GUILD.SETTINGS.GREEN")
+            .setEmoji("GUILD.SETTINGS.GREEN");
 
-        await interaction.editReply({embeds: [embed], components: [menu, allowedMenu, buttons]});
+        await interaction.editReply({ embeds: [embed], components: [menu, allowedMenu, buttons] });
 
         let i: ButtonInteraction | StringSelectMenuInteraction;
         try {
-            i = await m.awaitMessageComponent({filter: (i) => interaction.user.id === i.user.id && i.message.id === m.id, time: 300000}) as ButtonInteraction | StringSelectMenuInteraction;
+            i = (await m.awaitMessageComponent({
+                filter: (i) => interaction.user.id === i.user.id && i.message.id === m.id,
+                time: 300000
+            })) as ButtonInteraction | StringSelectMenuInteraction;
         } catch (e) {
             closed = true;
             break;
         }
 
-        if(i.isButton()) {
+        if (i.isButton()) {
             await i.deferUpdate();
             switch (i.customId) {
                 case "back": {
@@ -576,31 +726,37 @@
                 case "toEdit": {
                     switch (i.values[0]) {
                         case "mass": {
-                            await interaction.editReply({embeds: [new EmojiEmbed()
-                                .setTitle("Word Filter")
-                                .setDescription("Modal opened. If you can't see it, click back and try again.")
-                                .setStatus("Success")
-                                .setEmoji("GUILD.SETTINGS.GREEN")
-                            ], components: [new ActionRowBuilder<ButtonBuilder>().addComponents(new ButtonBuilder()
-                                .setLabel("Back")
-                                .setEmoji(getEmojiByName("CONTROL.LEFT", "id"))
-                                .setStyle(ButtonStyle.Primary)
-                                .setCustomId("back")
-                            )]})
+                            await interaction.editReply({
+                                embeds: [
+                                    new EmojiEmbed()
+                                        .setTitle("Word Filter")
+                                        .setDescription("Modal opened. If you can't see it, click back and try again.")
+                                        .setStatus("Success")
+                                        .setEmoji("GUILD.SETTINGS.GREEN")
+                                ],
+                                components: [
+                                    new ActionRowBuilder<ButtonBuilder>().addComponents(
+                                        new ButtonBuilder()
+                                            .setLabel("Back")
+                                            .setEmoji(getEmojiByName("CONTROL.LEFT", "id"))
+                                            .setStyle(ButtonStyle.Primary)
+                                            .setCustomId("back")
+                                    )
+                                ]
+                            });
                             const modal = new ModalBuilder()
                                 .setTitle("Mass Mention Amount")
                                 .setCustomId("mass")
                                 .addComponents(
-                                    new ActionRowBuilder<TextInputBuilder>()
-                                        .addComponents(
-                                            new TextInputBuilder()
-                                                .setCustomId("mass")
-                                                .setPlaceholder("Amount")
-                                                .setMinLength(1)
-                                                .setMaxLength(3)
-                                                .setStyle(TextInputStyle.Short)
-                                        )
-                                )
+                                    new ActionRowBuilder<TextInputBuilder>().addComponents(
+                                        new TextInputBuilder()
+                                            .setCustomId("mass")
+                                            .setPlaceholder("Amount")
+                                            .setMinLength(1)
+                                            .setMaxLength(3)
+                                            .setStyle(TextInputStyle.Short)
+                                    )
+                                );
                             await i.showModal(modal);
                             let out;
                             try {
@@ -609,13 +765,19 @@
                                 break;
                             }
                             if (!out) break;
-                            if(out.isButton()) break;
+                            if (out.isButton()) break;
                             current.mass = parseInt(out.fields.getTextInputValue("mass"));
                             break;
                         }
                         case "roles": {
                             await i.deferUpdate();
-                            current.allowed.rolesToMention = await toSelectMenu(interaction, m, current.allowed.rolesToMention, "role", "Mention Settings");
+                            current.allowed.rolesToMention = await toSelectMenu(
+                                interaction,
+                                m,
+                                current.allowed.rolesToMention,
+                                "role",
+                                "Mention Settings"
+                            );
                             break;
                         }
                     }
@@ -625,15 +787,33 @@
                     await i.deferUpdate();
                     switch (i.values[0]) {
                         case "users": {
-                            current.allowed.users = await toSelectMenu(interaction, m, current.allowed.users, "member", "Mention Settings");
+                            current.allowed.users = await toSelectMenu(
+                                interaction,
+                                m,
+                                current.allowed.users,
+                                "member",
+                                "Mention Settings"
+                            );
                             break;
                         }
                         case "roles": {
-                            current.allowed.roles = await toSelectMenu(interaction, m, current.allowed.roles, "role", "Mention Settings");
+                            current.allowed.roles = await toSelectMenu(
+                                interaction,
+                                m,
+                                current.allowed.roles,
+                                "role",
+                                "Mention Settings"
+                            );
                             break;
                         }
                         case "channels": {
-                            current.allowed.channels = await toSelectMenu(interaction, m, current.allowed.channels, "channel", "Mention Settings");
+                            current.allowed.channels = await toSelectMenu(
+                                interaction,
+                                m,
+                                current.allowed.channels,
+                                "channel",
+                                "Mention Settings"
+                            );
                             break;
                         }
                     }
@@ -641,85 +821,91 @@
                 }
             }
         }
+    } while (!closed);
+    return current;
+};
 
-    } while(!closed);
-    return current
-}
-
-const cleanMenu = async (interaction: StringSelectMenuInteraction, m: Message, current?: {
-    channels?: string[],
-    allowed?: {
-        roles: string[],
-        users: string[]
+const cleanMenu = async (
+    interaction: StringSelectMenuInteraction,
+    m: Message,
+    current?: {
+        channels?: string[];
+        allowed?: {
+            roles: string[];
+            users: string[];
+        };
     }
-}): Promise<{
-    channels: string[],
+): Promise<{
+    channels: string[];
     allowed: {
-        roles: string[],
-        users: string[]
-    }
+        roles: string[];
+        users: string[];
+    };
 }> => {
     let closed = false;
-    if(!current) current = {channels: [], allowed: {roles: [], users: []}};
-    if(!current.channels) current.channels = [];
-    if(!current.allowed) current.allowed = {roles: [], users: []};
+    if (!current) current = { channels: [], allowed: { roles: [], users: [] } };
+    if (!current.channels) current.channels = [];
+    if (!current.allowed) current.allowed = { roles: [], users: [] };
 
-    const channelMenu = new ActionRowBuilder<ChannelSelectMenuBuilder>()
-        .addComponents(
-            new ChannelSelectMenuBuilder()
-                .setCustomId("toAdd")
-                .setPlaceholder("Select a channel")
-        )
+    const channelMenu = new ActionRowBuilder<ChannelSelectMenuBuilder>().addComponents(
+        new ChannelSelectMenuBuilder().setCustomId("toAdd").setPlaceholder("Select a channel")
+    );
 
-    const allowedMenu = new ActionRowBuilder<StringSelectMenuBuilder>()
-        .addComponents(
-            new StringSelectMenuBuilder()
-                .setCustomId("allowed")
-                .setPlaceholder("Edit exceptions")
-                .addOptions(
-                    new StringSelectMenuOptionBuilder()
-                            .setLabel("Users")
-                            .setDescription("Users that are unaffected by the mention filter")
-                            .setValue("users"),
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Roles")
-                            .setDescription("Roles that are unaffected by the mention filter")
-                            .setValue("roles")
-                )
-        )
+    const allowedMenu = new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(
+        new StringSelectMenuBuilder()
+            .setCustomId("allowed")
+            .setPlaceholder("Edit exceptions")
+            .addOptions(
+                new StringSelectMenuOptionBuilder()
+                    .setLabel("Users")
+                    .setDescription("Users that are unaffected by the mention filter")
+                    .setValue("users"),
+                new StringSelectMenuOptionBuilder()
+                    .setLabel("Roles")
+                    .setDescription("Roles that are unaffected by the mention filter")
+                    .setValue("roles")
+            )
+    );
 
     do {
-
-        const buttons = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("back")
-                    .setLabel("Back")
-                    .setStyle(ButtonStyle.Primary)
-                    .setEmoji(getEmojiByName("CONTROL.LEFT", "id"))
-            )
+        const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("back")
+                .setLabel("Back")
+                .setStyle(ButtonStyle.Primary)
+                .setEmoji(getEmojiByName("CONTROL.LEFT", "id"))
+        );
 
         const embed = new EmojiEmbed()
             .setTitle("Clean Settings")
             .setEmoji("GUILD.SETTINGS.GREEN")
             .setDescription(
                 `Current clean channels:\n\n` +
-                `${current.channels.length > 0 ? listToAndMore(current.channels.map(c => `<#${c}>`), 10) : "None"}\n\n`
+                    `${
+                        current.channels.length > 0
+                            ? listToAndMore(
+                                  current.channels.map((c) => `<#${c}>`),
+                                  10
+                              )
+                            : "None"
+                    }\n\n`
             )
-            .setStatus("Success")
+            .setStatus("Success");
 
-
-        await interaction.editReply({embeds: [embed], components: [channelMenu, allowedMenu, buttons]});
+        await interaction.editReply({ embeds: [embed], components: [channelMenu, allowedMenu, buttons] });
 
         let i: ButtonInteraction | ChannelSelectMenuInteraction;
         try {
-            i = await m.awaitMessageComponent({filter: (i) => interaction.user.id === i.user.id && i.message.id === m.id, time: 300000}) as ButtonInteraction | ChannelSelectMenuInteraction;
+            i = (await m.awaitMessageComponent({
+                filter: (i) => interaction.user.id === i.user.id && i.message.id === m.id,
+                time: 300000
+            })) as ButtonInteraction | ChannelSelectMenuInteraction;
         } catch (e) {
             closed = true;
             break;
         }
         await i.deferUpdate();
-        if(i.isButton()) {
+        if (i.isButton()) {
             switch (i.customId) {
                 case "back": {
                     closed = true;
@@ -733,24 +919,28 @@
                         .setTitle("Clean Settings")
                         .setDescription(`Editing <#${i.values[0]}>`)
                         .setEmoji("GUILD.SETTINGS.GREEN")
-                        .setStatus("Success")
-                    const channelButtons = new ActionRowBuilder<ButtonBuilder>()
-                        .addComponents(
-                            new ButtonBuilder()
-                                .setCustomId("back")
-                                .setLabel("Back")
-                                .setStyle(ButtonStyle.Primary)
-                                .setEmoji(getEmojiByName("CONTROL.LEFT", "id")),
-                            new ButtonBuilder()
-                                .setCustomId("switch")
-                                .setLabel(current.channels.includes(i.values[0]!) ? "Remove" : "Add")
-                                .setStyle(current.channels.includes(i.values[0]!) ? ButtonStyle.Danger : ButtonStyle.Success)
-                        )
+                        .setStatus("Success");
+                    const channelButtons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+                        new ButtonBuilder()
+                            .setCustomId("back")
+                            .setLabel("Back")
+                            .setStyle(ButtonStyle.Primary)
+                            .setEmoji(getEmojiByName("CONTROL.LEFT", "id")),
+                        new ButtonBuilder()
+                            .setCustomId("switch")
+                            .setLabel(current.channels.includes(i.values[0]!) ? "Remove" : "Add")
+                            .setStyle(
+                                current.channels.includes(i.values[0]!) ? ButtonStyle.Danger : ButtonStyle.Success
+                            )
+                    );
 
-                    await i.editReply({embeds: [channelEmbed], components: [channelButtons]});
+                    await i.editReply({ embeds: [channelEmbed], components: [channelButtons] });
                     let j: ButtonInteraction;
                     try {
-                        j = await m.awaitMessageComponent({filter: (i) => interaction.user.id === i.user.id && i.message.id === m.id, time: 300000}) as ButtonInteraction;
+                        j = (await m.awaitMessageComponent({
+                            filter: (i) => interaction.user.id === i.user.id && i.message.id === m.id,
+                            time: 300000
+                        })) as ButtonInteraction;
                     } catch (e) {
                         closed = true;
                         break;
@@ -761,7 +951,7 @@
                             break;
                         }
                         case "switch": {
-                            if(current.channels.includes(i.values[0]!)) {
+                            if (current.channels.includes(i.values[0]!)) {
                                 current.channels.splice(current.channels.indexOf(i.values[0]!), 1);
                             } else {
                                 current.channels.push(i.values[0]!);
@@ -773,11 +963,23 @@
                 case "allowed": {
                     switch (i.values[0]) {
                         case "users": {
-                            current.allowed.users = await toSelectMenu(interaction, m, current.allowed.users, "member", "Mention Settings");
+                            current.allowed.users = await toSelectMenu(
+                                interaction,
+                                m,
+                                current.allowed.users,
+                                "member",
+                                "Mention Settings"
+                            );
                             break;
                         }
                         case "roles": {
-                            current.allowed.roles = await toSelectMenu(interaction, m, current.allowed.roles, "role", "Mention Settings");
+                            current.allowed.roles = await toSelectMenu(
+                                interaction,
+                                m,
+                                current.allowed.roles,
+                                "role",
+                                "Mention Settings"
+                            );
                             break;
                         }
                     }
@@ -785,98 +987,94 @@
                 }
             }
         }
-
-    } while(!closed);
+    } while (!closed);
 
     return current as {
-        channels: string[],
+        channels: string[];
         allowed: {
-            roles: string[],
-            users: string[]
-        }
+            roles: string[];
+            users: string[];
+        };
     };
-
-}
+};
 
 const callback = async (interaction: CommandInteraction): Promise<void> => {
     if (!interaction.guild) return;
-    const m = await interaction.reply({embeds: LoadingEmbed, fetchReply: true, ephemeral: true});
+    const m = await interaction.reply({ embeds: LoadingEmbed, fetchReply: true, ephemeral: true });
     const config = (await client.database.guilds.read(interaction.guild.id)).filters;
 
     let closed = false;
 
-    const button = new ActionRowBuilder<ButtonBuilder>()
-        .addComponents(
-            new ButtonBuilder()
-                .setCustomId("save")
-                .setLabel("Save")
-                .setStyle(ButtonStyle.Success)
-        )
+    const button = new ActionRowBuilder<ButtonBuilder>().addComponents(
+        new ButtonBuilder().setCustomId("save").setLabel("Save").setStyle(ButtonStyle.Success)
+    );
 
     do {
-
-        const selectMenu = new ActionRowBuilder<StringSelectMenuBuilder>()
-            .addComponents(
-                new StringSelectMenuBuilder()
-                    .setCustomId("filter")
-                    .setPlaceholder("Select a filter to edit")
-                    .addOptions(
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Invites")
-                            .setDescription("Automatically delete messages containing server invites")
-                            .setValue("invites"),
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Mentions")
-                            .setDescription("Deletes messages with excessive mentions")
-                            .setValue("mentions"),
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Words")
-                            .setDescription("Delete messages containing filtered words")
-                            .setValue("words"),
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Malware")
-                            .setDescription("Automatically delete files and links containing malware")
-                            .setValue("malware"),
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Images")
-                            .setDescription("Checks performed on images (NSFW, size checking, etc.)")
-                            .setValue("images"),
-                        new StringSelectMenuOptionBuilder()
-                            .setLabel("Clean")
-                            .setDescription("Automatically delete new messages in specific channels")
-                            .setValue("clean")
-                    )
-            );
+        const selectMenu = new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(
+            new StringSelectMenuBuilder()
+                .setCustomId("filter")
+                .setPlaceholder("Select a filter to edit")
+                .addOptions(
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Invites")
+                        .setDescription("Automatically delete messages containing server invites")
+                        .setValue("invites"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Mentions")
+                        .setDescription("Deletes messages with excessive mentions")
+                        .setValue("mentions"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Words")
+                        .setDescription("Delete messages containing filtered words")
+                        .setValue("words"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Malware")
+                        .setDescription("Automatically delete files and links containing malware")
+                        .setValue("malware"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Images")
+                        .setDescription("Checks performed on images (NSFW, size checking, etc.)")
+                        .setValue("images"),
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel("Clean")
+                        .setDescription("Automatically delete new messages in specific channels")
+                        .setValue("clean")
+                )
+        );
 
         const embed = new EmojiEmbed()
             .setTitle("Automod Settings")
             .setDescription(
                 `${emojiFromBoolean(config.invite.enabled)} **Invites**\n` +
-                `${emojiFromBoolean(config.pings.everyone || config.pings.mass > 0 || config.pings.roles)} **Mentions**\n` +
-                `${emojiFromBoolean(config.wordFilter.enabled)} **Words**\n` +
-                `${emojiFromBoolean(config.malware)} **Malware**\n` +
-                `${emojiFromBoolean(config.images.NSFW || config.images.size)} **Images**\n` +
-                `${emojiFromBoolean(config.clean.channels.length > 0)} **Clean**\n`
+                    `${emojiFromBoolean(
+                        config.pings.everyone || config.pings.mass > 0 || config.pings.roles
+                    )} **Mentions**\n` +
+                    `${emojiFromBoolean(config.wordFilter.enabled)} **Words**\n` +
+                    `${emojiFromBoolean(config.malware)} **Malware**\n` +
+                    `${emojiFromBoolean(config.images.NSFW || config.images.size)} **Images**\n` +
+                    `${emojiFromBoolean(config.clean.channels.length > 0)} **Clean**\n`
             )
             .setStatus("Success")
-            .setEmoji("GUILD.SETTINGS.GREEN")
+            .setEmoji("GUILD.SETTINGS.GREEN");
 
-
-        await interaction.editReply({embeds: [embed], components: [selectMenu, button]});
+        await interaction.editReply({ embeds: [embed], components: [selectMenu, button] });
 
         let i: StringSelectMenuInteraction | ButtonInteraction;
         try {
-            i = await m.awaitMessageComponent({filter: (i) => i.user.id === interaction.user.id && i.message.id === m.id, time: 300000}) as StringSelectMenuInteraction | ButtonInteraction;
+            i = (await m.awaitMessageComponent({
+                filter: (i) => i.user.id === interaction.user.id && i.message.id === m.id,
+                time: 300000
+            })) as StringSelectMenuInteraction | ButtonInteraction;
         } catch (e) {
             closed = true;
             continue;
         }
         await i.deferUpdate();
-        if(i.isButton()) {
-            await client.database.guilds.write(interaction.guild.id, {filters: config});
+        if (i.isButton()) {
+            await client.database.guilds.write(interaction.guild.id, { filters: config });
             await client.memory.forceUpdate(interaction.guild.id);
         } else {
-            switch(i.values[0]) {
+            switch (i.values[0]) {
                 case "invites": {
                     config.invite = await inviteMenu(i, m, config.invite);
                     break;
@@ -905,10 +1103,8 @@
                 }
             }
         }
-
-    } while(!closed);
-    await interaction.deleteReply()
-
+    } while (!closed);
+    await interaction.deleteReply();
 };
 
 const check = (interaction: CommandInteraction, _partial: boolean = false) => {
diff --git a/src/commands/settings/autopublish.ts b/src/commands/settings/autopublish.ts
index 27d01bd..afc4e7d 100644
--- a/src/commands/settings/autopublish.ts
+++ b/src/commands/settings/autopublish.ts
@@ -1,4 +1,13 @@
-import { ActionRowBuilder, APIMessageComponentEmoji, ButtonBuilder, ButtonStyle, ChannelSelectMenuBuilder, ChannelType, CommandInteraction, SlashCommandSubcommandBuilder } from "discord.js";
+import {
+    ActionRowBuilder,
+    APIMessageComponentEmoji,
+    ButtonBuilder,
+    ButtonStyle,
+    ChannelSelectMenuBuilder,
+    ChannelType,
+    CommandInteraction,
+    SlashCommandSubcommandBuilder
+} from "discord.js";
 import type Discord from "discord.js";
 import client from "../../utils/client.js";
 import { LoadingEmbed } from "../../utils/defaults.js";
@@ -21,62 +30,62 @@
     let config = await client.database.guilds.read(interaction.guild!.id);
     let data = _.cloneDeep(config.autoPublish);
     do {
-        const buttons = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("switch")
-                    .setLabel(data.enabled ? "Enabled" : "Disabled")
-                    .setStyle(data.enabled ? ButtonStyle.Success : ButtonStyle.Danger)
-                    .setEmoji(getEmojiByName("CONTROL." + (data.enabled ? "TICK" : "CROSS"), "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("save")
-                    .setLabel("Save")
-                    .setStyle(ButtonStyle.Success)
-                    .setEmoji(getEmojiByName("ICONS.SAVE", "id") as APIMessageComponentEmoji)
-                    .setDisabled(_.isEqual(data, config.autoPublish))
-            );
+        const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("switch")
+                .setLabel(data.enabled ? "Enabled" : "Disabled")
+                .setStyle(data.enabled ? ButtonStyle.Success : ButtonStyle.Danger)
+                .setEmoji(
+                    getEmojiByName("CONTROL." + (data.enabled ? "TICK" : "CROSS"), "id") as APIMessageComponentEmoji
+                ),
+            new ButtonBuilder()
+                .setCustomId("save")
+                .setLabel("Save")
+                .setStyle(ButtonStyle.Success)
+                .setEmoji(getEmojiByName("ICONS.SAVE", "id") as APIMessageComponentEmoji)
+                .setDisabled(_.isEqual(data, config.autoPublish))
+        );
 
-        const channelSelect = new ActionRowBuilder<ChannelSelectMenuBuilder>()
-            .addComponents(
-                new ChannelSelectMenuBuilder()
-                    .setCustomId("channel")
-                    .setPlaceholder("Select a channel")
-                    .setMinValues(1)
-                    .setChannelTypes(ChannelType.GuildAnnouncement, ChannelType.AnnouncementThread)
-            );
+        const channelSelect = new ActionRowBuilder<ChannelSelectMenuBuilder>().addComponents(
+            new ChannelSelectMenuBuilder()
+                .setCustomId("channel")
+                .setPlaceholder("Select a channel")
+                .setMinValues(1)
+                .setChannelTypes(ChannelType.GuildAnnouncement, ChannelType.AnnouncementThread)
+        );
 
         const current = data.channels.map((c) => `> <#${c}>`).join("\n") || "*None set*";
 
         const embed = new EmojiEmbed()
             .setTitle("Auto Publish")
             .setDescription("Currently enabled in:\n" + current)
-            .setStatus('Success')
-            .setEmoji("ICONS.PUBLISH")
+            .setStatus("Success")
+            .setEmoji("ICONS.PUBLISH");
 
-            await interaction.editReply({
+        await interaction.editReply({
             embeds: [embed],
             components: [channelSelect, buttons]
         });
 
         let i: Discord.ButtonInteraction | Discord.ChannelSelectMenuInteraction;
         try {
-            i = await interaction.channel!.awaitMessageComponent({
+            i = (await interaction.channel!.awaitMessageComponent({
                 filter: (i: Discord.Interaction) => i.user.id === interaction.user.id,
                 time: 300000
-            }) as Discord.ButtonInteraction | Discord.ChannelSelectMenuInteraction;
+            })) as Discord.ButtonInteraction | Discord.ChannelSelectMenuInteraction;
         } catch (e) {
             closed = true;
             continue;
         }
         await i.deferUpdate();
-        if(i.isButton()) {
-            switch(i.customId) {
+        if (i.isButton()) {
+            switch (i.customId) {
                 case "switch": {
                     data.enabled = !data.enabled;
                     break;
                 }
                 case "save": {
-                    await client.database.guilds.write(interaction.guild!.id, { "autoPublish": data });
+                    await client.database.guilds.write(interaction.guild!.id, { autoPublish: data });
                     config = await client.database.guilds.read(interaction.guild!.id);
                     data = _.cloneDeep(config.autoPublish);
                     await client.memory.forceUpdate(interaction.guild!.id);
@@ -84,16 +93,17 @@
                 }
             }
         } else {
-            await interaction.editReply({embeds: LoadingEmbed, components: []})
-            for(const channel of i.values) {
-                data.channels.includes(channel) ? data.channels.splice(data.channels.indexOf(channel), 1) : data.channels.push(channel);
+            await interaction.editReply({ embeds: LoadingEmbed, components: [] });
+            for (const channel of i.values) {
+                data.channels.includes(channel)
+                    ? data.channels.splice(data.channels.indexOf(channel), 1)
+                    : data.channels.push(channel);
             }
         }
-
     } while (!closed);
 
     await interaction.deleteReply();
-}
+};
 
 export const check = (interaction: CommandInteraction, _partial: boolean = false) => {
     const member = interaction.member as Discord.GuildMember;
diff --git a/src/commands/settings/logs/_meta.ts b/src/commands/settings/logs/_meta.ts
index 24a1e54..b1fe78e 100644
--- a/src/commands/settings/logs/_meta.ts
+++ b/src/commands/settings/logs/_meta.ts
@@ -3,6 +3,6 @@
 const name = "logs";
 const description = "Settings for logging";
 
-const subcommand = await group(name, description, `settings/logs`)
+const subcommand = await group(name, description, `settings/logs`);
 
-export { name, description, subcommand as command};
+export { name, description, subcommand as command };
diff --git a/src/commands/settings/logs/attachment.ts b/src/commands/settings/logs/attachment.ts
index 8f0b257..3ee7675 100644
--- a/src/commands/settings/logs/attachment.ts
+++ b/src/commands/settings/logs/attachment.ts
@@ -1,5 +1,12 @@
 import { LoadingEmbed } from "../../../utils/defaults.js";
-import Discord, { CommandInteraction, ActionRowBuilder, ButtonBuilder, ButtonStyle, ChannelSelectMenuBuilder, ChannelType } from "discord.js";
+import Discord, {
+    CommandInteraction,
+    ActionRowBuilder,
+    ButtonBuilder,
+    ButtonStyle,
+    ChannelSelectMenuBuilder,
+    ChannelType
+} from "discord.js";
 import EmojiEmbed from "../../../utils/generateEmojiEmbed.js";
 import getEmojiByName from "../../../utils/getEmojiByName.js";
 import type { SlashCommandSubcommandBuilder } from "discord.js";
@@ -7,9 +14,7 @@
 import { getCommandMentionByName } from "../../../utils/getCommandDataByName.js";
 
 const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-        .setName("attachments")
-        .setDescription("Where attachments should be logged to (Premium only)")
+    builder.setName("attachments").setDescription("Where attachments should be logged to (Premium only)");
 
 const callback = async (interaction: CommandInteraction): Promise<unknown> => {
     if (interaction.guild) client.database.premium.hasPremium(interaction.guild.id).finally(() => {});
@@ -17,54 +22,55 @@
         embeds: LoadingEmbed,
         ephemeral: true,
         fetchReply: true
-    })
-
-    if(!await client.database.premium.hasPremium(interaction.guild!.id)) return interaction.editReply({
-        embeds: [
-            new EmojiEmbed()
-                .setTitle("Premium Required")
-                .setDescription(`This feature is exclusive to ${getCommandMentionByName("nucleus/premium")} servers.`)
-                .setStatus("Danger")
-                .setEmoji("NUCLEUS.PREMIUM")
-        ]
     });
 
+    if (!(await client.database.premium.hasPremium(interaction.guild!.id)))
+        return interaction.editReply({
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Premium Required")
+                    .setDescription(
+                        `This feature is exclusive to ${getCommandMentionByName("nucleus/premium")} servers.`
+                    )
+                    .setStatus("Danger")
+                    .setEmoji("NUCLEUS.PREMIUM")
+            ]
+        });
+
     let data = await client.database.guilds.read(interaction.guild!.id);
     let channel = data.logging.staff.channel;
 
     let closed = false;
     do {
-        const channelMenu = new ActionRowBuilder<ChannelSelectMenuBuilder>()
-            .addComponents(
-                new ChannelSelectMenuBuilder()
-                    .setCustomId("channel")
-                    .setPlaceholder("Select a channel")
-                    .setChannelTypes(ChannelType.GuildText)
-            );
-        const buttons = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("clear")
-                    .setLabel("Clear")
-                    .setStyle(ButtonStyle.Danger)
-                    .setEmoji(getEmojiByName("CONTROL.CROSS", "id") as Discord.APIMessageComponentEmoji)
-                    .setDisabled(!channel),
-                new ButtonBuilder()
-                    .setCustomId("save")
-                    .setLabel("Save")
-                    .setStyle(ButtonStyle.Success)
-                    .setEmoji(getEmojiByName("ICONS.SAVE", "id") as Discord.APIMessageComponentEmoji)
-                    .setDisabled(channel === data.logging.staff.channel)
-            );
+        const channelMenu = new ActionRowBuilder<ChannelSelectMenuBuilder>().addComponents(
+            new ChannelSelectMenuBuilder()
+                .setCustomId("channel")
+                .setPlaceholder("Select a channel")
+                .setChannelTypes(ChannelType.GuildText)
+        );
+        const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("clear")
+                .setLabel("Clear")
+                .setStyle(ButtonStyle.Danger)
+                .setEmoji(getEmojiByName("CONTROL.CROSS", "id") as Discord.APIMessageComponentEmoji)
+                .setDisabled(!channel),
+            new ButtonBuilder()
+                .setCustomId("save")
+                .setLabel("Save")
+                .setStyle(ButtonStyle.Success)
+                .setEmoji(getEmojiByName("ICONS.SAVE", "id") as Discord.APIMessageComponentEmoji)
+                .setDisabled(channel === data.logging.staff.channel)
+        );
 
         const embed = new EmojiEmbed()
             .setTitle("Attachments")
             .setDescription(
                 `The channel to send all attachments from the server, allowing you to check them if they are deleted\n` +
-                `**Channel:** ${channel ? `<#${channel}>` : "*None*"}\n`
+                    `**Channel:** ${channel ? `<#${channel}>` : "*None*"}\n`
             )
             .setStatus("Success")
-            .setEmoji("CHANNEL.TEXT.CREATE")
+            .setEmoji("CHANNEL.TEXT.CREATE");
 
         await interaction.editReply({
             embeds: [embed],
@@ -82,7 +88,7 @@
             continue;
         }
         await i.deferUpdate();
-        if(i.isButton()) {
+        if (i.isButton()) {
             switch (i.customId) {
                 case "clear": {
                     channel = null;
@@ -100,9 +106,8 @@
         } else {
             channel = i.values[0]!;
         }
-
     } while (!closed);
-    await interaction.deleteReply()
+    await interaction.deleteReply();
 };
 
 const check = (interaction: CommandInteraction, _partial: boolean = false) => {
diff --git a/src/commands/settings/logs/events.ts b/src/commands/settings/logs/events.ts
index 05d6928..4cffab7 100644
--- a/src/commands/settings/logs/events.ts
+++ b/src/commands/settings/logs/events.ts
@@ -1,5 +1,18 @@
 import { LoadingEmbed } from "../../../utils/defaults.js";
-import Discord, { CommandInteraction, ActionRowBuilder, ChannelSelectMenuBuilder, ChannelType, ButtonBuilder, ButtonStyle, StringSelectMenuBuilder, StringSelectMenuOptionBuilder, ButtonInteraction, StringSelectMenuInteraction, ChannelSelectMenuInteraction, APIMessageComponentEmoji } from "discord.js";
+import Discord, {
+    CommandInteraction,
+    ActionRowBuilder,
+    ChannelSelectMenuBuilder,
+    ChannelType,
+    ButtonBuilder,
+    ButtonStyle,
+    StringSelectMenuBuilder,
+    StringSelectMenuOptionBuilder,
+    ButtonInteraction,
+    StringSelectMenuInteraction,
+    ChannelSelectMenuInteraction,
+    APIMessageComponentEmoji
+} from "discord.js";
 import type { SlashCommandSubcommandBuilder } from "discord.js";
 import client from "../../../utils/client.js";
 import compare from "lodash";
@@ -26,14 +39,12 @@
     webhookUpdate: "Webhooks created or deleted",
     guildMemberVerify: "Member runs verify",
     autoModeratorDeleted: "Messages auto deleted by Nucleus",
-    ticketUpdate: "Tickets created or deleted",
+    ticketUpdate: "Tickets created or deleted"
     //nucleusSettingsUpdated: "Nucleus' settings updated by a moderator"  // TODO
 };
 
 const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-        .setName("events")
-        .setDescription("The general log channel for the server, and setting what events to show")
+    builder.setName("events").setDescription("The general log channel for the server, and setting what events to show");
 
 const callback = async (interaction: CommandInteraction): Promise<void> => {
     const m = (await interaction.reply({
@@ -47,52 +58,45 @@
     let closed = false;
     let show = false;
     do {
-        const channelMenu = new ActionRowBuilder<ChannelSelectMenuBuilder>()
-            .addComponents(
-                new ChannelSelectMenuBuilder()
-                    .setCustomId("channel")
-                    .setPlaceholder("Select a channel")
-                    .setChannelTypes(ChannelType.GuildText)
-            )
-        const buttons = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("switch")
-                    .setLabel(data.enabled ? "Enabled" : "Disabled")
-                    .setStyle(data.enabled ? ButtonStyle.Success : ButtonStyle.Danger)
-                    .setEmoji(getEmojiByName((data.enabled ? "CONTROL.TICK" : "CONTROL.CROSS"), "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("remove")
-                    .setLabel("Remove")
-                    .setStyle(ButtonStyle.Danger)
-                    .setDisabled(!data.channel),
-                new ButtonBuilder()
-                    .setCustomId("show")
-                    .setLabel("Manage Events")
-                    .setStyle(ButtonStyle.Primary),
-                new ButtonBuilder()
-                    .setCustomId("save")
-                    .setLabel("Save")
-                    .setStyle(ButtonStyle.Success)
-                    .setDisabled(compare.isEqual(data, config.logging.logs))
-            )
+        const channelMenu = new ActionRowBuilder<ChannelSelectMenuBuilder>().addComponents(
+            new ChannelSelectMenuBuilder()
+                .setCustomId("channel")
+                .setPlaceholder("Select a channel")
+                .setChannelTypes(ChannelType.GuildText)
+        );
+        const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("switch")
+                .setLabel(data.enabled ? "Enabled" : "Disabled")
+                .setStyle(data.enabled ? ButtonStyle.Success : ButtonStyle.Danger)
+                .setEmoji(
+                    getEmojiByName(data.enabled ? "CONTROL.TICK" : "CONTROL.CROSS", "id") as APIMessageComponentEmoji
+                ),
+            new ButtonBuilder()
+                .setCustomId("remove")
+                .setLabel("Remove")
+                .setStyle(ButtonStyle.Danger)
+                .setDisabled(!data.channel),
+            new ButtonBuilder().setCustomId("show").setLabel("Manage Events").setStyle(ButtonStyle.Primary),
+            new ButtonBuilder()
+                .setCustomId("save")
+                .setLabel("Save")
+                .setStyle(ButtonStyle.Success)
+                .setDisabled(compare.isEqual(data, config.logging.logs))
+        );
 
         const converted = toHexArray(data.toLog);
-        const toLogMenu = new ActionRowBuilder<StringSelectMenuBuilder>()
-            .addComponents(
-                new StringSelectMenuBuilder()
-                    .setPlaceholder("Set events to log")
-                    .setMaxValues(Object.keys(logs).length)
-                    .setCustomId("logs")
-                    .setMinValues(0)
-            )
+        const toLogMenu = new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(
+            new StringSelectMenuBuilder()
+                .setPlaceholder("Set events to log")
+                .setMaxValues(Object.keys(logs).length)
+                .setCustomId("logs")
+                .setMinValues(0)
+        );
         Object.keys(logs).map((e) => {
             toLogMenu.components[0]!.addOptions(
-                new StringSelectMenuOptionBuilder()
-                    .setLabel(logs[e]!)
-                    .setValue(e)
-                    .setDefault(converted.includes(e))
-            )
+                new StringSelectMenuOptionBuilder().setLabel(logs[e]!).setValue(e).setDefault(converted.includes(e))
+            );
         });
 
         const embed = new EmojiEmbed()
@@ -101,11 +105,14 @@
             .setEmoji("CHANNEL.TEXT.CREATE")
             .setDescription(
                 `This is the channel that all events you set to be logged will be stored\n` +
-                `**Channel:** ${data.channel ? `<#${data.channel}>` : "None"}\n`
-            )
+                    `**Channel:** ${data.channel ? `<#${data.channel}>` : "None"}\n`
+            );
 
-        const components: ActionRowBuilder<ButtonBuilder | ChannelSelectMenuBuilder | StringSelectMenuBuilder>[] = [channelMenu, buttons];
-        if(show) components.push(toLogMenu);
+        const components: ActionRowBuilder<ButtonBuilder | ChannelSelectMenuBuilder | StringSelectMenuBuilder>[] = [
+            channelMenu,
+            buttons
+        ];
+        if (show) components.push(toLogMenu);
 
         await interaction.editReply({
             embeds: [embed],
@@ -114,10 +121,10 @@
 
         let i: ButtonInteraction | StringSelectMenuInteraction | ChannelSelectMenuInteraction;
         try {
-            i = await m.awaitMessageComponent({
+            i = (await m.awaitMessageComponent({
                 filter: (i) => i.user.id === interaction.user.id,
                 time: 300000
-            }) as ButtonInteraction | StringSelectMenuInteraction | ChannelSelectMenuInteraction;
+            })) as ButtonInteraction | StringSelectMenuInteraction | ChannelSelectMenuInteraction;
         } catch (e) {
             closed = true;
             continue;
@@ -125,8 +132,8 @@
 
         await i.deferUpdate();
 
-        if(i.isButton()) {
-            switch(i.customId) {
+        if (i.isButton()) {
+            switch (i.customId) {
                 case "show": {
                     show = !show;
                     break;
@@ -136,10 +143,10 @@
                     break;
                 }
                 case "save": {
-                    await client.database.guilds.write(interaction.guild!.id, {"logging.logs": data});
+                    await client.database.guilds.write(interaction.guild!.id, { "logging.logs": data });
                     config = await client.database.guilds.read(interaction.guild!.id);
                     data = Object.assign({}, config.logging.logs);
-                    await client.memory.forceUpdate(interaction.guild!.id)
+                    await client.memory.forceUpdate(interaction.guild!.id);
                     break;
                 }
                 case "remove": {
@@ -147,15 +154,14 @@
                     break;
                 }
             }
-        } else if(i.isStringSelectMenu()) {
+        } else if (i.isStringSelectMenu()) {
             const hex = toHexInteger(i.values);
             data.toLog = hex;
-        } else if(i.isChannelSelectMenu()) {
+        } else if (i.isChannelSelectMenu()) {
             data.channel = i.values[0]!;
         }
-
     } while (!closed);
-    await interaction.deleteReply()
+    await interaction.deleteReply();
 };
 
 const check = (interaction: CommandInteraction, _partial: boolean = false) => {
diff --git a/src/commands/settings/logs/warnings.ts b/src/commands/settings/logs/warnings.ts
index 4d9a3fa..38b645a 100644
--- a/src/commands/settings/logs/warnings.ts
+++ b/src/commands/settings/logs/warnings.ts
@@ -1,14 +1,19 @@
 import { LoadingEmbed } from "../../../utils/defaults.js";
-import Discord, { CommandInteraction, ActionRowBuilder, ButtonBuilder, ButtonStyle, ChannelSelectMenuBuilder, ChannelType } from "discord.js";
+import Discord, {
+    CommandInteraction,
+    ActionRowBuilder,
+    ButtonBuilder,
+    ButtonStyle,
+    ChannelSelectMenuBuilder,
+    ChannelType
+} from "discord.js";
 import EmojiEmbed from "../../../utils/generateEmojiEmbed.js";
 import getEmojiByName from "../../../utils/getEmojiByName.js";
 import type { SlashCommandSubcommandBuilder } from "discord.js";
 import client from "../../../utils/client.js";
 
 const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-        .setName("warnings")
-        .setDescription("Settings for the staff notifications channel")
+    builder.setName("warnings").setDescription("Settings for the staff notifications channel");
 
 const callback = async (interaction: CommandInteraction): Promise<unknown> => {
     if (!interaction.guild) return;
@@ -16,34 +21,32 @@
         embeds: LoadingEmbed,
         ephemeral: true,
         fetchReply: true
-    })
+    });
 
     let data = await client.database.guilds.read(interaction.guild.id);
     let channel = data.logging.staff.channel;
     let closed = false;
     do {
-        const channelMenu = new ActionRowBuilder<ChannelSelectMenuBuilder>()
-        .addComponents(
+        const channelMenu = new ActionRowBuilder<ChannelSelectMenuBuilder>().addComponents(
             new ChannelSelectMenuBuilder()
                 .setCustomId("channel")
                 .setPlaceholder("Select a channel")
                 .setChannelTypes(ChannelType.GuildText)
         );
-        const buttons = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("clear")
-                    .setLabel("Clear")
-                    .setStyle(ButtonStyle.Danger)
-                    .setEmoji(getEmojiByName("CONTROL.CROSS", "id") as Discord.APIMessageComponentEmoji)
-                    .setDisabled(!channel),
-                new ButtonBuilder()
-                    .setCustomId("save")
-                    .setLabel("Save")
-                    .setStyle(ButtonStyle.Success)
-                    .setEmoji(getEmojiByName("ICONS.SAVE", "id") as Discord.APIMessageComponentEmoji)
-                    .setDisabled(channel === data.logging.staff.channel)
-            );
+        const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("clear")
+                .setLabel("Clear")
+                .setStyle(ButtonStyle.Danger)
+                .setEmoji(getEmojiByName("CONTROL.CROSS", "id") as Discord.APIMessageComponentEmoji)
+                .setDisabled(!channel),
+            new ButtonBuilder()
+                .setCustomId("save")
+                .setLabel("Save")
+                .setStyle(ButtonStyle.Success)
+                .setEmoji(getEmojiByName("ICONS.SAVE", "id") as Discord.APIMessageComponentEmoji)
+                .setDisabled(channel === data.logging.staff.channel)
+        );
 
         const embed = new EmojiEmbed()
             .setTitle("Staff Notifications Channel")
@@ -51,8 +54,8 @@
             .setEmoji("CHANNEL.TEXT.CREATE")
             .setDescription(
                 `Logs which require an action from a moderator or administrator will be sent to this channel.\n` +
-                `**Channel:** ${channel ? `<#${channel}>` : "*None*"}\n`
-            )
+                    `**Channel:** ${channel ? `<#${channel}>` : "*None*"}\n`
+            );
 
         await interaction.editReply({
             embeds: [embed],
@@ -70,7 +73,7 @@
             continue;
         }
         await i.deferUpdate();
-        if(i.isButton()) {
+        if (i.isButton()) {
             switch (i.customId) {
                 case "clear": {
                     channel = null;
@@ -90,7 +93,7 @@
         }
     } while (!closed);
 
-    await interaction.deleteReply()
+    await interaction.deleteReply();
 };
 
 const check = (interaction: CommandInteraction, _partial: boolean = false) => {
diff --git a/src/commands/settings/moderation.ts b/src/commands/settings/moderation.ts
index 336e53a..6ee6e1e 100644
--- a/src/commands/settings/moderation.ts
+++ b/src/commands/settings/moderation.ts
@@ -1,5 +1,13 @@
 import { LoadingEmbed } from "../../utils/defaults.js";
-import Discord, { CommandInteraction, ActionRowBuilder, ButtonBuilder, ButtonStyle, ButtonComponent, TextInputBuilder, RoleSelectMenuBuilder } from "discord.js";
+import Discord, {
+    CommandInteraction,
+    ActionRowBuilder,
+    ButtonBuilder,
+    ButtonStyle,
+    ButtonComponent,
+    TextInputBuilder,
+    RoleSelectMenuBuilder
+} from "discord.js";
 import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
 import getEmojiByName from "../../utils/getEmojiByName.js";
 import type { SlashCommandSubcommandBuilder } from "discord.js";
@@ -9,7 +17,7 @@
 const command = (builder: SlashCommandSubcommandBuilder) =>
     builder
         .setName("moderation")
-        .setDescription("Links and text shown to a user after a moderator action is performed")
+        .setDescription("Links and text shown to a user after a moderator action is performed");
 
 const callback = async (interaction: CommandInteraction): Promise<void> => {
     const m = await interaction.reply({
@@ -21,7 +29,7 @@
     while (!timedOut) {
         const config = await client.database.guilds.read(interaction.guild!.id);
         const moderation = config.moderation;
-        console.log(moderation)
+        console.log(moderation);
         await interaction.editReply({
             embeds: [
                 new EmojiEmbed()
@@ -30,7 +38,8 @@
                     .setStatus("Success")
                     .setDescription(
                         "These links are shown below the message sent in a user's DM when they are punished.\n\n" +
-                            "**Mute Role:** " + (moderation.mute.role ? `<@&${moderation.mute.role}>` : "*None set*")
+                            "**Mute Role:** " +
+                            (moderation.mute.role ? `<@&${moderation.mute.role}>` : "*None set*")
                     )
             ],
             components: [
@@ -76,9 +85,7 @@
                         .setEmoji(getEmojiByName("CONTROL." + (moderation.mute.timeout ? "TICK" : "CROSS"), "id"))
                 ]),
                 new ActionRowBuilder<RoleSelectMenuBuilder>().addComponents(
-                    new RoleSelectMenuBuilder()
-                        .setCustomId("muteRole")
-                        .setPlaceholder("Select a new mute role")
+                    new RoleSelectMenuBuilder().setCustomId("muteRole").setPlaceholder("Select a new mute role")
                 )
             ]
         });
@@ -86,7 +93,13 @@
         try {
             i = await m.awaitMessageComponent({
                 time: 300000,
-                filter: (i) => { return i.user.id === interaction.user.id && i.channel!.id === interaction.channel!.id && i.message.id === m.id }
+                filter: (i) => {
+                    return (
+                        i.user.id === interaction.user.id &&
+                        i.channel!.id === interaction.channel!.id &&
+                        i.message.id === m.id
+                    );
+                }
             });
         } catch (e) {
             timedOut = true;
@@ -112,24 +125,28 @@
                     .setCustomId("modal")
                     .setTitle(`Options for ${i.customId}`)
                     .addComponents(
-                        new ActionRowBuilder<TextInputBuilder>().addComponents(
-                            new TextInputBuilder()
-                                .setCustomId("name")
-                                .setLabel("Button text")
-                                .setMaxLength(100)
-                                .setRequired(false)
-                                .setStyle(Discord.TextInputStyle.Short)
-                                .setValue(chosen.text ?? "")
-                        ).toJSON(),
-                        new ActionRowBuilder<TextInputBuilder>().addComponents(
-                            new TextInputBuilder()
-                                .setCustomId("url")
-                                .setLabel("URL - Type {id} to insert the user's ID")
-                                .setMaxLength(2000)
-                                .setRequired(false)
-                                .setStyle(Discord.TextInputStyle.Short)
-                                .setValue(chosen.link ?? "")
-                        ).toJSON()
+                        new ActionRowBuilder<TextInputBuilder>()
+                            .addComponents(
+                                new TextInputBuilder()
+                                    .setCustomId("name")
+                                    .setLabel("Button text")
+                                    .setMaxLength(100)
+                                    .setRequired(false)
+                                    .setStyle(Discord.TextInputStyle.Short)
+                                    .setValue(chosen.text ?? "")
+                            )
+                            .toJSON(),
+                        new ActionRowBuilder<TextInputBuilder>()
+                            .addComponents(
+                                new TextInputBuilder()
+                                    .setCustomId("url")
+                                    .setLabel("URL - Type {id} to insert the user's ID")
+                                    .setMaxLength(2000)
+                                    .setRequired(false)
+                                    .setStyle(Discord.TextInputStyle.Short)
+                                    .setValue(chosen.link ?? "")
+                            )
+                            .toJSON()
                     )
             );
             await interaction.editReply({
@@ -152,11 +169,11 @@
             });
             let out: Discord.ModalSubmitInteraction | null;
             try {
-                out = await modalInteractionCollector(m, interaction.user) as Discord.ModalSubmitInteraction | null;
+                out = (await modalInteractionCollector(m, interaction.user)) as Discord.ModalSubmitInteraction | null;
             } catch (e) {
                 continue;
             }
-            if (!out || out.isButton()) continue
+            if (!out || out.isButton()) continue;
             const buttonText = out.fields.getTextInputValue("name");
             const buttonLink = out.fields.getTextInputValue("url").replace(/{id}/gi, "{id}");
             const current = chosen;
@@ -171,7 +188,7 @@
             }
         }
     }
-    await interaction.deleteReply()
+    await interaction.deleteReply();
 };
 
 const check = (interaction: CommandInteraction, _partial: boolean = false) => {
diff --git a/src/commands/settings/rolemenu.ts b/src/commands/settings/rolemenu.ts
index ae174b3..11c6b67 100644
--- a/src/commands/settings/rolemenu.ts
+++ b/src/commands/settings/rolemenu.ts
@@ -1,5 +1,21 @@
 import type Discord from "discord.js";
-import { ActionRowBuilder, APIMessageComponentEmoji, ButtonBuilder, ButtonInteraction, ButtonStyle, CommandInteraction, Message, ModalBuilder, RoleSelectMenuBuilder, RoleSelectMenuInteraction, StringSelectMenuBuilder, StringSelectMenuInteraction, StringSelectMenuOptionBuilder, TextInputBuilder, TextInputStyle } from "discord.js";
+import {
+    ActionRowBuilder,
+    APIMessageComponentEmoji,
+    ButtonBuilder,
+    ButtonInteraction,
+    ButtonStyle,
+    CommandInteraction,
+    Message,
+    ModalBuilder,
+    RoleSelectMenuBuilder,
+    RoleSelectMenuInteraction,
+    StringSelectMenuBuilder,
+    StringSelectMenuInteraction,
+    StringSelectMenuOptionBuilder,
+    TextInputBuilder,
+    TextInputStyle
+} from "discord.js";
 import type { SlashCommandSubcommandBuilder } from "discord.js";
 import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
 import { LoadingEmbed } from "../../utils/defaults.js";
@@ -9,14 +25,11 @@
 import { configToDropdown } from "../../actions/roleMenu.js";
 import { modalInteractionCollector } from "../../utils/dualCollector.js";
 import ellipsis from "../../utils/ellipsis.js";
-import lodash from 'lodash';
+import lodash from "lodash";
 
 const isEqual = lodash.isEqual;
 
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-        .setName("rolemenu")
-        .setDescription("rolemenu")
+const command = (builder: SlashCommandSubcommandBuilder) => builder.setName("rolemenu").setDescription("rolemenu");
 
 interface ObjectSchema {
     name: string;
@@ -35,34 +48,27 @@
     description: "A new role menu page",
     min: 0,
     max: 0,
-    options: [
-        {name: "Role 1", description: null, role: "No role set"}
-    ]
-}
+    options: [{ name: "Role 1", description: null, role: "No role set" }]
+};
 
 const reorderRoleMenuPages = async (interaction: CommandInteraction, m: Message, currentObj: ObjectSchema[]) => {
-    const reorderRow = new ActionRowBuilder<StringSelectMenuBuilder>()
-        .addComponents(
-            new StringSelectMenuBuilder()
-                .setCustomId("reorder")
-                .setPlaceholder("Select all pages in the order you want them to appear.")
-                .setMinValues(currentObj.length)
-                .setMaxValues(currentObj.length)
-                .addOptions(
-                    currentObj.map((o, i) => new StringSelectMenuOptionBuilder()
-                        .setLabel(o.name)
-                        .setValue(i.toString())
-                    )
-                )
-        );
-    const buttonRow = new ActionRowBuilder<ButtonBuilder>()
-        .addComponents(
-            new ButtonBuilder()
-                .setCustomId("back")
-                .setLabel("Back")
-                .setStyle(ButtonStyle.Secondary)
-                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
-        )
+    const reorderRow = new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(
+        new StringSelectMenuBuilder()
+            .setCustomId("reorder")
+            .setPlaceholder("Select all pages in the order you want them to appear.")
+            .setMinValues(currentObj.length)
+            .setMaxValues(currentObj.length)
+            .addOptions(
+                currentObj.map((o, i) => new StringSelectMenuOptionBuilder().setLabel(o.name).setValue(i.toString()))
+            )
+    );
+    const buttonRow = new ActionRowBuilder<ButtonBuilder>().addComponents(
+        new ButtonBuilder()
+            .setCustomId("back")
+            .setLabel("Back")
+            .setStyle(ButtonStyle.Secondary)
+            .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
+    );
     await interaction.editReply({
         embeds: [
             new EmojiEmbed()
@@ -74,64 +80,65 @@
     });
     let out: StringSelectMenuInteraction | ButtonInteraction | null;
     try {
-        out = await m.awaitMessageComponent({
+        out = (await m.awaitMessageComponent({
             filter: (i) => i.channel!.id === interaction.channel!.id,
             time: 300000
-        }) as StringSelectMenuInteraction | ButtonInteraction | null;
+        })) as StringSelectMenuInteraction | ButtonInteraction | null;
     } catch (e) {
         console.error(e);
         out = null;
     }
-    if(!out) return;
+    if (!out) return;
     out.deferUpdate();
     if (out.isButton()) return;
     const values = out.values;
 
     const newOrder: ObjectSchema[] = currentObj.map((_, i) => {
-        const index = values.findIndex(v => v === i.toString());
+        const index = values.findIndex((v) => v === i.toString());
         return currentObj[index];
     }) as ObjectSchema[];
 
     return newOrder;
-}
+};
 
-const editNameDescription = async (i: ButtonInteraction, interaction: StringSelectMenuInteraction | ButtonInteraction, m: Message, data: {name?: string, description?: string}) => {
-
-    let {name, description} = data;
+const editNameDescription = async (
+    i: ButtonInteraction,
+    interaction: StringSelectMenuInteraction | ButtonInteraction,
+    m: Message,
+    data: { name?: string; description?: string }
+) => {
+    let { name, description } = data;
     const modal = new ModalBuilder()
         .setTitle("Edit Name and Description")
         .setCustomId("editNameDescription")
         .addComponents(
-            new ActionRowBuilder<TextInputBuilder>()
-                .addComponents(
-                    new TextInputBuilder()
-                        .setLabel("Name")
-                        .setCustomId("name")
-                        .setPlaceholder("The name of the role (e.g. Programmer)")
-                        .setStyle(TextInputStyle.Short)
-                        .setValue(name ?? "")
-                        .setRequired(true)
-                ),
-            new ActionRowBuilder<TextInputBuilder>()
-                .addComponents(
-                    new TextInputBuilder()
-                        .setLabel("Description")
-                        .setCustomId("description")
-                        .setPlaceholder("A short description of the role (e.g. A role for people who code)")
-                        .setStyle(TextInputStyle.Short)
-                        .setValue(description ?? "")
-                )
-        )
-    const button = new ActionRowBuilder<ButtonBuilder>()
-        .addComponents(
-            new ButtonBuilder()
-                .setCustomId("back")
-                .setLabel("Back")
-                .setStyle(ButtonStyle.Secondary)
-                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
-        )
+            new ActionRowBuilder<TextInputBuilder>().addComponents(
+                new TextInputBuilder()
+                    .setLabel("Name")
+                    .setCustomId("name")
+                    .setPlaceholder("The name of the role (e.g. Programmer)")
+                    .setStyle(TextInputStyle.Short)
+                    .setValue(name ?? "")
+                    .setRequired(true)
+            ),
+            new ActionRowBuilder<TextInputBuilder>().addComponents(
+                new TextInputBuilder()
+                    .setLabel("Description")
+                    .setCustomId("description")
+                    .setPlaceholder("A short description of the role (e.g. A role for people who code)")
+                    .setStyle(TextInputStyle.Short)
+                    .setValue(description ?? "")
+            )
+        );
+    const button = new ActionRowBuilder<ButtonBuilder>().addComponents(
+        new ButtonBuilder()
+            .setCustomId("back")
+            .setLabel("Back")
+            .setStyle(ButtonStyle.Secondary)
+            .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
+    );
 
-    await i.showModal(modal)
+    await i.showModal(modal);
     await interaction.editReply({
         embeds: [
             new EmojiEmbed()
@@ -144,76 +151,93 @@
 
     let out: Discord.ModalSubmitInteraction | null;
     try {
-        out = await modalInteractionCollector(m, interaction.user) as Discord.ModalSubmitInteraction | null;
+        out = (await modalInteractionCollector(m, interaction.user)) as Discord.ModalSubmitInteraction | null;
     } catch (e) {
         console.error(e);
         out = null;
     }
-    if(!out) return [name, description];
+    if (!out) return [name, description];
     if (out.isButton()) return [name, description];
     name = out.fields.fields.find((f) => f.customId === "name")?.value ?? name;
     description = out.fields.fields.find((f) => f.customId === "description")?.value ?? description;
-    return [name, description]
+    return [name, description];
+};
 
-}
+const editRoleMenuPage = async (
+    interaction: StringSelectMenuInteraction | ButtonInteraction,
+    m: Message,
+    data?: ObjectSchema
+): Promise<ObjectSchema | null> => {
+    if (!data)
+        data = {
+            name: "Role Menu Page",
+            description: "A new role menu page",
+            min: 0,
+            max: 0,
+            options: []
+        };
+    const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+        new ButtonBuilder()
+            .setCustomId("back")
+            .setLabel("Back")
+            .setStyle(ButtonStyle.Secondary)
+            .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
+        new ButtonBuilder()
+            .setCustomId("edit")
+            .setLabel("Edit")
+            .setStyle(ButtonStyle.Primary)
+            .setEmoji(getEmojiByName("ICONS.EDIT", "id") as APIMessageComponentEmoji),
+        new ButtonBuilder()
+            .setCustomId("addRole")
+            .setLabel("Add Role")
+            .setStyle(ButtonStyle.Secondary)
+            .setEmoji(getEmojiByName("TICKETS.SUGGESTION", "id") as APIMessageComponentEmoji)
+    );
 
-const editRoleMenuPage = async (interaction: StringSelectMenuInteraction | ButtonInteraction, m: Message, data?: ObjectSchema): Promise<ObjectSchema | null> => {
-    if (!data) data = {
-        name: "Role Menu Page",
-        description: "A new role menu page",
-        min: 0,
-        max: 0,
-        options: []
-    };
-    const buttons = new ActionRowBuilder<ButtonBuilder>()
-        .addComponents(
-            new ButtonBuilder()
-                .setCustomId("back")
-                .setLabel("Back")
-                .setStyle(ButtonStyle.Secondary)
-                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
-            new ButtonBuilder()
-                .setCustomId("edit")
-                .setLabel("Edit")
-                .setStyle(ButtonStyle.Primary)
-                .setEmoji(getEmojiByName("ICONS.EDIT", "id") as APIMessageComponentEmoji),
-            new ButtonBuilder()
-                .setCustomId("addRole")
-                .setLabel("Add Role")
-                .setStyle(ButtonStyle.Secondary)
-                .setEmoji(getEmojiByName("TICKETS.SUGGESTION", "id") as APIMessageComponentEmoji)
-        );
-
-    let back = false
-    if(data.options.length === 0) {
-        data.options = [
-            {name: "Role 1", description: null, role: "No role set"}
-        ]
+    let back = false;
+    if (data.options.length === 0) {
+        data.options = [{ name: "Role 1", description: null, role: "No role set" }];
     }
     do {
-        const previewSelect = configToDropdown("Edit Roles", {name: data.name, description: data.description, min: 1, max: 1, options: data.options});
+        const previewSelect = configToDropdown("Edit Roles", {
+            name: data.name,
+            description: data.description,
+            min: 1,
+            max: 1,
+            options: data.options
+        });
         const embed = new EmojiEmbed()
             .setTitle(`${data.name}`)
             .setStatus("Success")
             .setDescription(
                 `**Description:**\n> ${data.description}\n\n` +
-                `**Min:** ${data.min}` + (data.min === 0 ? " (Members will be given a skip button)" : "") + "\n" +
-                `**Max:** ${data.max}\n`
-            )
+                    `**Min:** ${data.min}` +
+                    (data.min === 0 ? " (Members will be given a skip button)" : "") +
+                    "\n" +
+                    `**Max:** ${data.max}\n`
+            );
 
-        interaction.editReply({embeds: [embed], components: [previewSelect, buttons]});
+        interaction.editReply({ embeds: [embed], components: [previewSelect, buttons] });
         let i: StringSelectMenuInteraction | ButtonInteraction;
         try {
-            i = await m.awaitMessageComponent({ time: 300000, filter: (i) => i.user.id === interaction.user.id && i.message.id === m.id && i.channelId === interaction.channelId}) as ButtonInteraction | StringSelectMenuInteraction;
+            i = (await m.awaitMessageComponent({
+                time: 300000,
+                filter: (i) =>
+                    i.user.id === interaction.user.id && i.message.id === m.id && i.channelId === interaction.channelId
+            })) as ButtonInteraction | StringSelectMenuInteraction;
         } catch (e) {
             back = true;
             break;
         }
 
         if (i.isStringSelectMenu()) {
-            if(i.customId === "roles") {
+            if (i.customId === "roles") {
                 await i.deferUpdate();
-                await createRoleMenuOptionPage(interaction, m, data.options.find((o) => o.role === (i as StringSelectMenuInteraction).values[0]));
+                await createRoleMenuOptionPage(
+                    interaction,
+                    m,
+                    data.options.find((o) => o.role === (i as StringSelectMenuInteraction).values[0])
+                );
             }
         } else if (i.isButton()) {
             switch (i.customId) {
@@ -235,55 +259,69 @@
                 }
             }
         }
-
     } while (!back);
-    if(isEqual(data, defaultRolePageConfig)) return null;
+    if (isEqual(data, defaultRolePageConfig)) return null;
     return data;
-}
+};
 
-const createRoleMenuOptionPage = async (interaction: StringSelectMenuInteraction | ButtonInteraction, m: Message, data?: {name: string; description: string | null; role: string}) => {
-    const { renderRole} = client.logger;
-    if (!data) data = {
-        name: "New role Menu Option",
-        description: null,
-        role: ""
-    };
+const createRoleMenuOptionPage = async (
+    interaction: StringSelectMenuInteraction | ButtonInteraction,
+    m: Message,
+    data?: { name: string; description: string | null; role: string }
+) => {
+    const { renderRole } = client.logger;
+    if (!data)
+        data = {
+            name: "New role Menu Option",
+            description: null,
+            role: ""
+        };
     let back = false;
-    const buttons = new ActionRowBuilder<ButtonBuilder>()
-        .addComponents(
-            new ButtonBuilder()
-                .setCustomId("back")
-                .setLabel("Back")
-                .setStyle(ButtonStyle.Secondary)
-                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
-            new ButtonBuilder()
-                .setCustomId("edit")
-                .setLabel("Edit Details")
-                .setStyle(ButtonStyle.Primary)
-                .setEmoji(getEmojiByName("ICONS.EDIT", "id") as APIMessageComponentEmoji)
-        );
+    const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+        new ButtonBuilder()
+            .setCustomId("back")
+            .setLabel("Back")
+            .setStyle(ButtonStyle.Secondary)
+            .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
+        new ButtonBuilder()
+            .setCustomId("edit")
+            .setLabel("Edit Details")
+            .setStyle(ButtonStyle.Primary)
+            .setEmoji(getEmojiByName("ICONS.EDIT", "id") as APIMessageComponentEmoji)
+    );
     do {
-        const roleSelect = new RoleSelectMenuBuilder().setCustomId("role").setPlaceholder(data.role ? "Set role to" : "Set the role");
+        const roleSelect = new RoleSelectMenuBuilder()
+            .setCustomId("role")
+            .setPlaceholder(data.role ? "Set role to" : "Set the role");
         const embed = new EmojiEmbed()
             .setTitle(`${data.name}`)
             .setStatus("Success")
             .setDescription(
                 `**Description:**\n> ${data.description ?? "No description set"}\n\n` +
-                `**Role:** ${data.role ? renderRole((await interaction.guild!.roles.fetch(data.role))!) : "No role set"}\n`
-            )
+                    `**Role:** ${
+                        data.role ? renderRole((await interaction.guild!.roles.fetch(data.role))!) : "No role set"
+                    }\n`
+            );
 
-        interaction.editReply({embeds: [embed], components: [new ActionRowBuilder<RoleSelectMenuBuilder>().addComponents(roleSelect), buttons]});
+        interaction.editReply({
+            embeds: [embed],
+            components: [new ActionRowBuilder<RoleSelectMenuBuilder>().addComponents(roleSelect), buttons]
+        });
 
         let i: RoleSelectMenuInteraction | ButtonInteraction;
         try {
-            i = await m.awaitMessageComponent({ time: 300000, filter: (i) => i.user.id === interaction.user.id && i.message.id === m.id && i.channelId === interaction.channelId}) as ButtonInteraction | RoleSelectMenuInteraction;
+            i = (await m.awaitMessageComponent({
+                time: 300000,
+                filter: (i) =>
+                    i.user.id === interaction.user.id && i.message.id === m.id && i.channelId === interaction.channelId
+            })) as ButtonInteraction | RoleSelectMenuInteraction;
         } catch (e) {
             back = true;
             break;
         }
 
         if (i.isRoleSelectMenu()) {
-            if(i.customId === "role") {
+            if (i.customId === "role") {
                 await i.deferUpdate();
                 data.role = (i as RoleSelectMenuInteraction).values[0]!;
             }
@@ -296,7 +334,12 @@
                 }
                 case "edit": {
                     await i.deferUpdate();
-                    const [name, description] = await editNameDescription(i, interaction, m, data as {name: string; description: string});
+                    const [name, description] = await editNameDescription(
+                        i,
+                        interaction,
+                        m,
+                        data as { name: string; description: string }
+                    );
                     data.name = name ? name : data.name;
                     data.description = description ? description : data.description;
                     break;
@@ -305,11 +348,11 @@
         }
     } while (!back);
     return data;
-}
+};
 
 const callback = async (interaction: CommandInteraction): Promise<void> => {
     if (!interaction.guild) return;
-    const m = await interaction.reply({embeds: LoadingEmbed, ephemeral: true, fetchReply: true});
+    const m = await interaction.reply({ embeds: LoadingEmbed, ephemeral: true, fetchReply: true });
 
     let page = 0;
     let closed = false;
@@ -317,10 +360,7 @@
     let currentObject: ObjectSchema[] = config.roleMenu.options;
     let modified = false;
     do {
-        const embed = new EmojiEmbed()
-            .setTitle("Role Menu")
-            .setEmoji("GUILD.GREEN")
-            .setStatus("Success");
+        const embed = new EmojiEmbed().setTitle("Role Menu").setEmoji("GUILD.GREEN").setStatus("Success");
         const noRoleMenus = currentObject.length === 0;
         let current: ObjectSchema;
 
@@ -341,54 +381,52 @@
                     .setDescription("Delete this page")
                     .setValue("delete")
                     .setEmoji(getEmojiByName("TICKETS.ISSUE", "id") as APIMessageComponentEmoji)
-        );
-        const buttonRow = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("back")
-                    .setStyle(ButtonStyle.Primary)
-                    .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
-                    .setDisabled(page === 0),
-                new ButtonBuilder()
-                    .setCustomId("next")
-                    .setEmoji(getEmojiByName("CONTROL.RIGHT", "id") as APIMessageComponentEmoji)
-                    .setStyle(ButtonStyle.Primary)
-                    .setDisabled(page === Object.keys(currentObject).length - 1),
-                new ButtonBuilder()
-                    .setCustomId("add")
-                    .setLabel("New Page")
-                    .setEmoji(getEmojiByName("TICKETS.SUGGESTION", "id") as APIMessageComponentEmoji)
-                    .setStyle(ButtonStyle.Secondary)
-                    .setDisabled(Object.keys(currentObject).length >= 24),
-                new ButtonBuilder()
-                    .setCustomId("reorder")
-                    .setLabel("Reorder Pages")
-                    .setEmoji(getEmojiByName("ICONS.REORDER", "id") as APIMessageComponentEmoji)
-                    .setStyle(ButtonStyle.Secondary)
-                    .setDisabled(Object.keys(currentObject).length <= 1),
-                new ButtonBuilder()
-                    .setCustomId("save")
-                    .setLabel("Save")
-                    .setEmoji(getEmojiByName("ICONS.SAVE", "id") as APIMessageComponentEmoji)
-                    .setStyle(ButtonStyle.Success)
-                    .setDisabled(!modified),
             );
-        if(noRoleMenus) {
-            embed.setDescription("No role menu pages have been set up yet. Use the button below to add one.\n\n" +
-                createPageIndicator(1, 1, undefined, true)
+        const buttonRow = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("back")
+                .setStyle(ButtonStyle.Primary)
+                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
+                .setDisabled(page === 0),
+            new ButtonBuilder()
+                .setCustomId("next")
+                .setEmoji(getEmojiByName("CONTROL.RIGHT", "id") as APIMessageComponentEmoji)
+                .setStyle(ButtonStyle.Primary)
+                .setDisabled(page === Object.keys(currentObject).length - 1),
+            new ButtonBuilder()
+                .setCustomId("add")
+                .setLabel("New Page")
+                .setEmoji(getEmojiByName("TICKETS.SUGGESTION", "id") as APIMessageComponentEmoji)
+                .setStyle(ButtonStyle.Secondary)
+                .setDisabled(Object.keys(currentObject).length >= 24),
+            new ButtonBuilder()
+                .setCustomId("reorder")
+                .setLabel("Reorder Pages")
+                .setEmoji(getEmojiByName("ICONS.REORDER", "id") as APIMessageComponentEmoji)
+                .setStyle(ButtonStyle.Secondary)
+                .setDisabled(Object.keys(currentObject).length <= 1),
+            new ButtonBuilder()
+                .setCustomId("save")
+                .setLabel("Save")
+                .setEmoji(getEmojiByName("ICONS.SAVE", "id") as APIMessageComponentEmoji)
+                .setStyle(ButtonStyle.Success)
+                .setDisabled(!modified)
+        );
+        if (noRoleMenus) {
+            embed.setDescription(
+                "No role menu pages have been set up yet. Use the button below to add one.\n\n" +
+                    createPageIndicator(1, 1, undefined, true)
             );
             pageSelect.setDisabled(true);
             actionSelect.setDisabled(true);
-            pageSelect.addOptions(new StringSelectMenuOptionBuilder()
-                .setLabel("No role menu pages")
-                .setValue("none")
-            );
+            pageSelect.addOptions(new StringSelectMenuOptionBuilder().setLabel("No role menu pages").setValue("none"));
         } else {
             page = Math.min(page, Object.keys(currentObject).length - 1);
             current = currentObject[page]!;
-            embed.setDescription(`**Currently Editing:** ${current.name}\n\n` +
-                `**Description:**\n> ${current.description}\n` +
-                `\n\n${createPageIndicator(Object.keys(config.roleMenu.options).length, page)}`
+            embed.setDescription(
+                `**Currently Editing:** ${current.name}\n\n` +
+                    `**Description:**\n> ${current.description}\n` +
+                    `\n\n${createPageIndicator(Object.keys(config.roleMenu.options).length, page)}`
             );
 
             pageSelect.addOptions(
@@ -399,13 +437,23 @@
                         .setValue(index.toString());
                 })
             );
-
         }
 
-        await interaction.editReply({embeds: [embed], components: [new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(actionSelect), new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(pageSelect), buttonRow]});
+        await interaction.editReply({
+            embeds: [embed],
+            components: [
+                new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(actionSelect),
+                new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(pageSelect),
+                buttonRow
+            ]
+        });
         let i: StringSelectMenuInteraction | ButtonInteraction;
         try {
-            i = await m.awaitMessageComponent({ time: 300000, filter: (i) => i.user.id === interaction.user.id && i.message.id === m.id && i.channelId === interaction.channelId}) as ButtonInteraction | StringSelectMenuInteraction;
+            i = (await m.awaitMessageComponent({
+                time: 300000,
+                filter: (i) =>
+                    i.user.id === interaction.user.id && i.message.id === m.id && i.channelId === interaction.channelId
+            })) as ButtonInteraction | StringSelectMenuInteraction;
         } catch (e) {
             closed = true;
             continue;
@@ -423,20 +471,20 @@
                     break;
                 }
                 case "add": {
-                    const newPage = await editRoleMenuPage(i, m)
-                    if(!newPage) break;
+                    const newPage = await editRoleMenuPage(i, m);
+                    if (!newPage) break;
                     currentObject.push();
                     page = currentObject.length - 1;
                     break;
                 }
                 case "reorder": {
                     const reordered = await reorderRoleMenuPages(interaction, m, currentObject);
-                    if(!reordered) break;
+                    if (!reordered) break;
                     currentObject = reordered;
                     break;
                 }
                 case "save": {
-                    await client.database.guilds.write(interaction.guild.id, {"roleMenu.options": currentObject});
+                    await client.database.guilds.write(interaction.guild.id, { "roleMenu.options": currentObject });
                     modified = false;
                     await client.memory.forceUpdate(interaction.guild.id);
                     break;
@@ -445,16 +493,16 @@
         } else if (i.isStringSelectMenu()) {
             switch (i.customId) {
                 case "action": {
-                    switch(i.values[0]) {
+                    switch (i.values[0]) {
                         case "edit": {
                             const edited = await editRoleMenuPage(i, m, current!);
-                            if(!edited) break;
+                            if (!edited) break;
                             currentObject[page] = edited;
                             modified = true;
                             break;
                         }
                         case "delete": {
-                            if(page === 0 && currentObject.keys.length - 1 > 0) page++;
+                            if (page === 0 && currentObject.keys.length - 1 > 0) page++;
                             else page--;
                             currentObject.splice(page, 1);
                             break;
@@ -468,9 +516,8 @@
                 }
             }
         }
-
     } while (!closed);
-    await interaction.deleteReply()
+    await interaction.deleteReply();
 };
 
 const check = (interaction: CommandInteraction, _partial: boolean = false) => {
diff --git a/src/commands/settings/stats.ts b/src/commands/settings/stats.ts
index ecab612..d4e4439 100644
--- a/src/commands/settings/stats.ts
+++ b/src/commands/settings/stats.ts
@@ -1,5 +1,21 @@
 import { LoadingEmbed } from "../../utils/defaults.js";
-import Discord, { CommandInteraction, Message, ActionRowBuilder, StringSelectMenuBuilder, ButtonBuilder, ButtonStyle, StringSelectMenuOptionBuilder, APIMessageComponentEmoji, TextInputBuilder, StringSelectMenuInteraction, ButtonInteraction, MessageComponentInteraction, ChannelSelectMenuBuilder, ChannelSelectMenuInteraction, ModalBuilder } from "discord.js";
+import Discord, {
+    CommandInteraction,
+    Message,
+    ActionRowBuilder,
+    StringSelectMenuBuilder,
+    ButtonBuilder,
+    ButtonStyle,
+    StringSelectMenuOptionBuilder,
+    APIMessageComponentEmoji,
+    TextInputBuilder,
+    StringSelectMenuInteraction,
+    ButtonInteraction,
+    MessageComponentInteraction,
+    ChannelSelectMenuBuilder,
+    ChannelSelectMenuInteraction,
+    ModalBuilder
+} from "discord.js";
 import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
 import type { SlashCommandSubcommandBuilder } from "discord.js";
 import client from "../../utils/client.js";
@@ -9,14 +25,10 @@
 import createPageIndicator from "../../utils/createPageIndicator.js";
 import { modalInteractionCollector } from "../../utils/dualCollector.js";
 
-
 const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-        .setName("stats")
-        .setDescription("Controls channels which update when someone joins or leaves the server")
+    builder.setName("stats").setDescription("Controls channels which update when someone joins or leaves the server");
 
-
-const showModal = async (interaction: MessageComponentInteraction, current: { enabled: boolean; name: string; }) => {
+const showModal = async (interaction: MessageComponentInteraction, current: { enabled: boolean; name: string }) => {
     await interaction.showModal(
         new ModalBuilder()
             .setCustomId("modal")
@@ -28,7 +40,7 @@
                         .setLabel("Server Info (1/3)")
                         .setPlaceholder(
                             `{serverName} - This server's name\n\n` +
-                            `These placeholders will be replaced with the server's name, etc..`
+                                `These placeholders will be replaced with the server's name, etc..`
                         )
                         .setMaxLength(1)
                         .setRequired(false)
@@ -40,8 +52,8 @@
                         .setLabel("Member Counts (2/3) - {MemberCount:...}")
                         .setPlaceholder(
                             `{:all} - Total member count\n` +
-                            `{:humans} - Total non-bot users\n` +
-                            `{:bots} - Number of bots\n`
+                                `{:humans} - Total non-bot users\n` +
+                                `{:bots} - Number of bots\n`
                         )
                         .setMaxLength(1)
                         .setRequired(false)
@@ -51,9 +63,7 @@
                     new TextInputBuilder()
                         .setCustomId("ex3")
                         .setLabel("Latest Member (3/3) - {member:...}")
-                        .setPlaceholder(
-                                `{:name} - The members name\n`
-                        )
+                        .setPlaceholder(`{:name} - The members name\n`)
                         .setMaxLength(1)
                         .setRequired(false)
                         .setStyle(Discord.TextInputStyle.Paragraph)
@@ -69,35 +79,46 @@
                 )
             )
     );
-}
+};
 
-type ObjectSchema = Record<string, {name: string, enabled: boolean}>
+type ObjectSchema = Record<string, { name: string; enabled: boolean }>;
 
-
-const addStatsChannel = async (interaction: CommandInteraction, m: Message, currentObject: ObjectSchema): Promise<ObjectSchema> => {
+const addStatsChannel = async (
+    interaction: CommandInteraction,
+    m: Message,
+    currentObject: ObjectSchema
+): Promise<ObjectSchema> => {
     let closed = false;
     let cancelled = false;
-    const originalObject = Object.fromEntries(Object.entries(currentObject).map(([k, v]) => [k, {...v}]));
+    const originalObject = Object.fromEntries(Object.entries(currentObject).map(([k, v]) => [k, { ...v }]));
     let newChannel: string | undefined;
     let newChannelName: string = "{memberCount:all}-members";
     let newChannelEnabled: boolean = true;
     do {
         m = await interaction.editReply({
-            embeds: [new EmojiEmbed()
-                .setTitle("Stats Channel")
-                .setDescription(
-                    `New stats channel` + (newChannel ? ` in <#${newChannel}>` : "") + "\n\n" +
-                    `**Name:** \`${newChannelName}\`\n` +
-                    `**Preview:** ${await convertCurlyBracketString(newChannelName, interaction.user!.id, interaction.user.username, interaction.guild!.name, interaction.guild!.members)}\n` +
-                    `**Enabled:** ${newChannelEnabled ? "Yes" : "No"}\n\n`
-                )
-                .setEmoji("SETTINGS.STATS.GREEN")
-                .setStatus("Success")
-            ], components: [
+            embeds: [
+                new EmojiEmbed()
+                    .setTitle("Stats Channel")
+                    .setDescription(
+                        `New stats channel` +
+                            (newChannel ? ` in <#${newChannel}>` : "") +
+                            "\n\n" +
+                            `**Name:** \`${newChannelName}\`\n` +
+                            `**Preview:** ${await convertCurlyBracketString(
+                                newChannelName,
+                                interaction.user!.id,
+                                interaction.user.username,
+                                interaction.guild!.name,
+                                interaction.guild!.members
+                            )}\n` +
+                            `**Enabled:** ${newChannelEnabled ? "Yes" : "No"}\n\n`
+                    )
+                    .setEmoji("SETTINGS.STATS.GREEN")
+                    .setStatus("Success")
+            ],
+            components: [
                 new ActionRowBuilder<ChannelSelectMenuBuilder>().addComponents(
-                    new ChannelSelectMenuBuilder()
-                        .setCustomId("channel")
-                        .setPlaceholder("Select a channel to use")
+                    new ChannelSelectMenuBuilder().setCustomId("channel").setPlaceholder("Select a channel to use")
                 ),
                 new ActionRowBuilder<ButtonBuilder>().addComponents(
                     new ButtonBuilder()
@@ -125,9 +146,16 @@
         });
         let i: ButtonInteraction | ChannelSelectMenuInteraction;
         try {
-            i = await m.awaitMessageComponent({ time: 300000, filter: (i) => {
-                return i.user.id === interaction.user.id && i.channel!.id === interaction.channel!.id && i.message.id === m.id;
-            }}) as ButtonInteraction | ChannelSelectMenuInteraction;
+            i = (await m.awaitMessageComponent({
+                time: 300000,
+                filter: (i) => {
+                    return (
+                        i.user.id === interaction.user.id &&
+                        i.channel!.id === interaction.channel!.id &&
+                        i.message.id === m.id
+                    );
+                }
+            })) as ButtonInteraction | ChannelSelectMenuInteraction;
         } catch (e) {
             closed = true;
             cancelled = true;
@@ -146,18 +174,19 @@
                         currentObject[newChannel] = {
                             name: newChannelName,
                             enabled: newChannelEnabled
-                        }
+                        };
                     }
                     closed = true;
                     break;
                 }
                 case "editName": {
                     await interaction.editReply({
-                        embeds: [new EmojiEmbed()
-                                    .setTitle("Stats Channel")
-                                    .setDescription("Modal opened. If you can't see it, click back and try again.")
-                                    .setStatus("Success")
-                                    .setEmoji("SETTINGS.STATS.GREEN")
+                        embeds: [
+                            new EmojiEmbed()
+                                .setTitle("Stats Channel")
+                                .setDescription("Modal opened. If you can't see it, click back and try again.")
+                                .setStatus("Success")
+                                .setEmoji("SETTINGS.STATS.GREEN")
                         ],
                         components: [
                             new ActionRowBuilder<ButtonBuilder>().addComponents(
@@ -169,9 +198,10 @@
                             )
                         ]
                     });
-                    showModal(i, {name: newChannelName, enabled: newChannelEnabled})
+                    showModal(i, { name: newChannelName, enabled: newChannelEnabled });
 
-                    const out: Discord.ModalSubmitInteraction | ButtonInteraction| null = await modalInteractionCollector(m, interaction.user);
+                    const out: Discord.ModalSubmitInteraction | ButtonInteraction | null =
+                        await modalInteractionCollector(m, interaction.user);
                     if (!out) continue;
                     if (out.isButton()) continue;
                     newChannelName = out.fields.getTextInputValue("text");
@@ -189,11 +219,11 @@
                 newChannel = i.values[0];
             }
         }
-    } while (!closed)
+    } while (!closed);
     if (cancelled) return originalObject;
     if (!(newChannel && newChannelName && newChannelEnabled)) return originalObject;
     return currentObject;
-}
+};
 const callback = async (interaction: CommandInteraction) => {
     if (!interaction.guild) return;
     const { renderChannel } = client.logger;
@@ -204,12 +234,9 @@
     let currentObject: ObjectSchema = config.stats;
     let modified = false;
     do {
-        const embed = new EmojiEmbed()
-            .setTitle("Stats Settings")
-            .setEmoji("SETTINGS.STATS.GREEN")
-            .setStatus("Success");
+        const embed = new EmojiEmbed().setTitle("Stats Settings").setEmoji("SETTINGS.STATS.GREEN").setStatus("Success");
         const noStatsChannels = Object.keys(currentObject).length === 0;
-        let current: { enabled: boolean; name: string; };
+        let current: { enabled: boolean; name: string };
 
         const pageSelect = new StringSelectMenuBuilder()
             .setCustomId("page")
@@ -228,83 +255,109 @@
                     .setDescription("Delete the stats channel")
                     .setValue("delete")
                     .setEmoji(getEmojiByName("TICKETS.ISSUE", "id") as APIMessageComponentEmoji)
-        );
-        const buttonRow = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("back")
-                    .setStyle(ButtonStyle.Primary)
-                    .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
-                    .setDisabled(page === 0),
-                new ButtonBuilder()
-                    .setCustomId("next")
-                    .setEmoji(getEmojiByName("CONTROL.RIGHT", "id") as APIMessageComponentEmoji)
-                    .setStyle(ButtonStyle.Primary)
-                    .setDisabled(page === Object.keys(currentObject).length - 1),
-                new ButtonBuilder()
-                    .setCustomId("add")
-                    .setLabel("Create new")
-                    .setEmoji(getEmojiByName("TICKETS.SUGGESTION", "id") as APIMessageComponentEmoji)
-                    .setStyle(ButtonStyle.Secondary)
-                    .setDisabled(Object.keys(currentObject).length >= 24),
-                new ButtonBuilder()
-                    .setCustomId("save")
-                    .setLabel("Save")
-                    .setEmoji(getEmojiByName("ICONS.SAVE", "id") as APIMessageComponentEmoji)
-                    .setStyle(ButtonStyle.Success)
-                    .setDisabled(modified),
             );
+        const buttonRow = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("back")
+                .setStyle(ButtonStyle.Primary)
+                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
+                .setDisabled(page === 0),
+            new ButtonBuilder()
+                .setCustomId("next")
+                .setEmoji(getEmojiByName("CONTROL.RIGHT", "id") as APIMessageComponentEmoji)
+                .setStyle(ButtonStyle.Primary)
+                .setDisabled(page === Object.keys(currentObject).length - 1),
+            new ButtonBuilder()
+                .setCustomId("add")
+                .setLabel("Create new")
+                .setEmoji(getEmojiByName("TICKETS.SUGGESTION", "id") as APIMessageComponentEmoji)
+                .setStyle(ButtonStyle.Secondary)
+                .setDisabled(Object.keys(currentObject).length >= 24),
+            new ButtonBuilder()
+                .setCustomId("save")
+                .setLabel("Save")
+                .setEmoji(getEmojiByName("ICONS.SAVE", "id") as APIMessageComponentEmoji)
+                .setStyle(ButtonStyle.Success)
+                .setDisabled(modified)
+        );
         if (noStatsChannels) {
-            embed.setDescription("No stats channels have been set up yet. Use the button below to add one.\n\n" +
-                createPageIndicator(1, 1, undefined, true)
+            embed.setDescription(
+                "No stats channels have been set up yet. Use the button below to add one.\n\n" +
+                    createPageIndicator(1, 1, undefined, true)
             );
             pageSelect.setDisabled(true);
             actionSelect.setDisabled(true);
-            pageSelect.addOptions(new StringSelectMenuOptionBuilder()
-                .setLabel("No stats channels")
-                .setValue("none")
-            );
+            pageSelect.addOptions(new StringSelectMenuOptionBuilder().setLabel("No stats channels").setValue("none"));
         } else {
             page = Math.min(page, Object.keys(currentObject).length - 1);
-            current = currentObject[Object.keys(config.stats)[page]!]!
-            actionSelect.addOptions(new StringSelectMenuOptionBuilder()
-                .setLabel(current.enabled ? "Disable" : "Enable")
-                .setValue("toggleEnabled")
-                .setDescription(`Currently ${current.enabled ? "Enabled" : "Disabled"}, click to ${current.enabled ? "disable" : "enable"} this channel`)
-                .setEmoji(getEmojiByName(current.enabled ? "CONTROL.TICK" : "CONTROL.CROSS", "id") as APIMessageComponentEmoji)
+            current = currentObject[Object.keys(config.stats)[page]!]!;
+            actionSelect.addOptions(
+                new StringSelectMenuOptionBuilder()
+                    .setLabel(current.enabled ? "Disable" : "Enable")
+                    .setValue("toggleEnabled")
+                    .setDescription(
+                        `Currently ${current.enabled ? "Enabled" : "Disabled"}, click to ${
+                            current.enabled ? "disable" : "enable"
+                        } this channel`
+                    )
+                    .setEmoji(
+                        getEmojiByName(
+                            current.enabled ? "CONTROL.TICK" : "CONTROL.CROSS",
+                            "id"
+                        ) as APIMessageComponentEmoji
+                    )
             );
-            embed.setDescription(`**Currently Editing:** ${renderChannel(Object.keys(currentObject)[page]!)}\n\n` +
-                `${getEmojiByName(current.enabled ? "CONTROL.TICK" : "CONTROL.CROSS")} Currently ${current.enabled ? "Enabled" : "Disabled"}\n` +
-                `**Name:** \`${current.name}\`\n` +
-                `**Preview:** ${await convertCurlyBracketString(current.name, interaction.user.id, interaction.user.username, interaction.guild.name, interaction.guild.members)}` + '\n\n' +
-                createPageIndicator(Object.keys(config.stats).length, page)
+            embed.setDescription(
+                `**Currently Editing:** ${renderChannel(Object.keys(currentObject)[page]!)}\n\n` +
+                    `${getEmojiByName(current.enabled ? "CONTROL.TICK" : "CONTROL.CROSS")} Currently ${
+                        current.enabled ? "Enabled" : "Disabled"
+                    }\n` +
+                    `**Name:** \`${current.name}\`\n` +
+                    `**Preview:** ${await convertCurlyBracketString(
+                        current.name,
+                        interaction.user.id,
+                        interaction.user.username,
+                        interaction.guild.name,
+                        interaction.guild.members
+                    )}` +
+                    "\n\n" +
+                    createPageIndicator(Object.keys(config.stats).length, page)
             );
             for (const [id, { name, enabled }] of Object.entries(currentObject)) {
-                pageSelect.addOptions(new StringSelectMenuOptionBuilder()
-                    .setLabel(`${name} (${renderChannel(id)})`)
-                    .setEmoji(getEmojiByName(enabled ? "CONTROL.TICK" : "CONTROL.CROSS", "id") as APIMessageComponentEmoji)
-                    .setDescription(`${enabled ? "Enabled" : "Disabled"}`)
-                    .setValue(id)
+                pageSelect.addOptions(
+                    new StringSelectMenuOptionBuilder()
+                        .setLabel(`${name} (${renderChannel(id)})`)
+                        .setEmoji(
+                            getEmojiByName(enabled ? "CONTROL.TICK" : "CONTROL.CROSS", "id") as APIMessageComponentEmoji
+                        )
+                        .setDescription(`${enabled ? "Enabled" : "Disabled"}`)
+                        .setValue(id)
                 );
             }
         }
 
-        interaction.editReply({embeds: [embed], components: [
-            new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(pageSelect),
-            new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(actionSelect),
-            buttonRow
-        ]});
+        interaction.editReply({
+            embeds: [embed],
+            components: [
+                new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(pageSelect),
+                new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(actionSelect),
+                buttonRow
+            ]
+        });
 
         let i: StringSelectMenuInteraction | ButtonInteraction;
         try {
-            i = await m.awaitMessageComponent({ filter: (interaction) => interaction.user.id === interaction.user.id, time: 60000 }) as StringSelectMenuInteraction | ButtonInteraction;
+            i = (await m.awaitMessageComponent({
+                filter: (interaction) => interaction.user.id === interaction.user.id,
+                time: 60000
+            })) as StringSelectMenuInteraction | ButtonInteraction;
         } catch (e) {
             closed = true;
             continue;
         }
 
-        if(i.isStringSelectMenu()) {
-            switch(i.customId) {
+        if (i.isStringSelectMenu()) {
+            switch (i.customId) {
                 case "page": {
                     await i.deferUpdate();
                     page = Object.keys(currentObject).indexOf(i.values[0]!);
@@ -312,9 +365,9 @@
                 }
                 case "action": {
                     modified = true;
-                    switch(i.values[0]!) {
+                    switch (i.values[0]!) {
                         case "edit": {
-                            showModal(i, current!)
+                            showModal(i, current!);
                             await interaction.editReply({
                                 embeds: [
                                     new EmojiEmbed()
@@ -335,24 +388,31 @@
                             });
                             let out: Discord.ModalSubmitInteraction | null;
                             try {
-                                out = await modalInteractionCollector(m, interaction.user) as Discord.ModalSubmitInteraction | null;
+                                out = (await modalInteractionCollector(
+                                    m,
+                                    interaction.user
+                                )) as Discord.ModalSubmitInteraction | null;
                             } catch (e) {
                                 continue;
                             }
-                            if (!out) continue
+                            if (!out) continue;
                             if (out.isButton()) continue;
-                            currentObject[Object.keys(currentObject)[page]!]!.name = out.fields.getTextInputValue("text");
+                            currentObject[Object.keys(currentObject)[page]!]!.name =
+                                out.fields.getTextInputValue("text");
                             break;
                         }
                         case "toggleEnabled": {
                             await i.deferUpdate();
-                            currentObject[Object.keys(currentObject)[page]!]!.enabled = !currentObject[Object.keys(currentObject)[page]!]!.enabled;
+                            currentObject[Object.keys(currentObject)[page]!]!.enabled =
+                                !currentObject[Object.keys(currentObject)[page]!]!.enabled;
                             modified = true;
                             break;
                         }
                         case "delete": {
                             await i.deferUpdate();
-                            currentObject = Object.fromEntries(Object.entries(currentObject).filter(([k]) => k !== Object.keys(currentObject)[page]!));
+                            currentObject = Object.fromEntries(
+                                Object.entries(currentObject).filter(([k]) => k !== Object.keys(currentObject)[page]!)
+                            );
                             page = Math.min(page, Object.keys(currentObject).length - 1);
                             modified = true;
                             break;
@@ -363,7 +423,7 @@
             }
         } else {
             await i.deferUpdate();
-            switch(i.customId) {
+            switch (i.customId) {
                 case "back": {
                     page--;
                     break;
@@ -378,7 +438,7 @@
                     break;
                 }
                 case "save": {
-                    await client.database.guilds.write(interaction.guild.id, {stats: currentObject});
+                    await client.database.guilds.write(interaction.guild.id, { stats: currentObject });
                     singleNotify("statsChannelDeleted", interaction.guild.id, true);
                     modified = false;
                     await client.memory.forceUpdate(interaction.guild.id);
@@ -386,9 +446,8 @@
                 }
             }
         }
-
     } while (!closed);
-    await interaction.deleteReply()
+    await interaction.deleteReply();
 };
 
 const check = (interaction: CommandInteraction, _partial: boolean = false) => {
@@ -398,7 +457,6 @@
     return true;
 };
 
-
 export { command };
 export { callback };
 export { check };
diff --git a/src/commands/settings/tickets.ts b/src/commands/settings/tickets.ts
index 838defb..c0025d8 100644
--- a/src/commands/settings/tickets.ts
+++ b/src/commands/settings/tickets.ts
@@ -30,9 +30,7 @@
 import { LinkWarningFooter } from "../../utils/defaults.js";
 
 const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-        .setName("tickets")
-        .setDescription("Shows settings for tickets")
+    builder.setName("tickets").setDescription("Shows settings for tickets");
 
 const callback = async (interaction: CommandInteraction): Promise<unknown> => {
     if (!interaction.guild) return;
@@ -45,7 +43,7 @@
     data.tickets.customTypes = (data.tickets.customTypes ?? []).filter(
         (value: string, index: number, array: string[]) => array.indexOf(value) === index
     );
-    let ticketData = (await client.database.guilds.read(interaction.guild.id)).tickets
+    let ticketData = (await client.database.guilds.read(interaction.guild.id)).tickets;
     let changesMade = false;
     let timedOut = false;
     let errorMessage = "";
@@ -54,23 +52,28 @@
             .setTitle("Tickets")
             .setDescription(
                 `${ticketData.enabled ? "" : getEmojiByName("TICKETS.REPORT")} **Enabled:** ${
-                    ticketData.enabled ? `${getEmojiByName("CONTROL.TICK")} Yes` : `${getEmojiByName("CONTROL.CROSS")} No`
+                    ticketData.enabled
+                        ? `${getEmojiByName("CONTROL.TICK")} Yes`
+                        : `${getEmojiByName("CONTROL.CROSS")} No`
                 }\n` +
                     `${ticketData.category ? "" : getEmojiByName("TICKETS.REPORT")}` +
-                    ((await interaction.guild.channels.fetch(ticketData.category!))!.type === ChannelType.GuildCategory ?
-                    `**Category:** ` : `**Channel:** `) +  // TODO: Notify if permissions are wrong
+                    ((await interaction.guild.channels.fetch(ticketData.category!))!.type === ChannelType.GuildCategory
+                        ? `**Category:** `
+                        : `**Channel:** `) + // TODO: Notify if permissions are wrong
                     `${ticketData.category ? `<#${ticketData.category}>` : "*None set*"}\n` +
                     `**Max Tickets:** ${ticketData.maxTickets ? ticketData.maxTickets : "*No limit*"}\n` +
                     `**Support Ping:** ${ticketData.supportRole ? `<@&${ticketData.supportRole}>` : "*None set*"}\n\n` +
-                    (ticketData.useCustom && ticketData.customTypes === null ? `${getEmojiByName("TICKETS.REPORT")} ` : "") +
+                    (ticketData.useCustom && ticketData.customTypes === null
+                        ? `${getEmojiByName("TICKETS.REPORT")} `
+                        : "") +
                     `${ticketData.useCustom ? "Custom" : "Default"} types in use` +
                     "\n\n" +
                     `${getEmojiByName("TICKETS.REPORT")} *Indicates a setting stopping tickets from being used*`
             )
             .setStatus("Success")
             .setEmoji("GUILD.TICKET.OPEN");
-        if (errorMessage) embed.setFooter({text: errorMessage, iconURL: LinkWarningFooter.iconURL});
-        m = (await interaction.editReply({
+        if (errorMessage) embed.setFooter({ text: errorMessage, iconURL: LinkWarningFooter.iconURL });
+        m = await interaction.editReply({
             embeds: [embed],
             components: [
                 new ActionRowBuilder<ButtonBuilder>().addComponents(
@@ -111,12 +114,18 @@
                         .setDisabled(!ticketData.enabled)
                 )
             ]
-        }));
+        });
         let i: RoleSelectMenuInteraction | ButtonInteraction | ChannelSelectMenuInteraction;
         try {
             i = await m.awaitMessageComponent<2 | 6 | 8>({
                 time: 300000,
-                filter: (i) => { return i.user.id === interaction.user.id && i.channel!.id === interaction.channel!.id && i.message.id === m.id }
+                filter: (i) => {
+                    return (
+                        i.user.id === interaction.user.id &&
+                        i.channel!.id === interaction.channel!.id &&
+                        i.message.id === m.id
+                    );
+                }
             });
         } catch (e) {
             timedOut = true;
@@ -130,7 +139,7 @@
             await i.deferUpdate();
             ticketData.category = i.values[0] ?? null;
         } else {
-            switch(i.customId) {
+            switch (i.customId) {
                 case "save": {
                     await i.deferUpdate();
                     await client.database.guilds.write(interaction.guild.id, { tickets: ticketData });
@@ -161,7 +170,7 @@
                                         .setStyle(TextInputStyle.Short)
                                 )
                             )
-                    )
+                    );
                     await i.editReply({
                         embeds: [
                             new EmojiEmbed()
@@ -189,7 +198,7 @@
                     if (!out || out.isButton()) continue;
                     out = out as ModalSubmitInteraction;
                     const toAdd = out.fields.getTextInputValue("maxTickets");
-                    if(isNaN(parseInt(toAdd))) {
+                    if (isNaN(parseInt(toAdd))) {
                         errorMessage = "You entered an invalid number - No changes were made";
                         break;
                     }
@@ -204,11 +213,9 @@
             }
         }
     }
-    await interaction.deleteReply()
+    await interaction.deleteReply();
 };
 
-
-
 async function manageTypes(interaction: CommandInteraction, data: GuildConfig["tickets"], m: Message) {
     let timedOut = false;
     let backPressed = false;
@@ -278,7 +285,9 @@
                     new StringSelectMenuOptionBuilder({
                         label: capitalize(type),
                         value: type,
-                        emoji: client.emojis.cache.get(getEmojiByName(`TICKETS.${type.toUpperCase()}`, "id")) as APIMessageComponentEmoji,
+                        emoji: client.emojis.cache.get(
+                            getEmojiByName(`TICKETS.${type.toUpperCase()}`, "id")
+                        ) as APIMessageComponentEmoji,
                         default: inUse.includes(type)
                     })
                 );
@@ -325,7 +334,13 @@
         try {
             i = await m.awaitMessageComponent({
                 time: 300000,
-                filter: (i) => { return i.user.id === interaction.user.id && i.channel!.id === interaction.channel!.id && i.message.id === m.id }
+                filter: (i) => {
+                    return (
+                        i.user.id === interaction.user.id &&
+                        i.channel!.id === interaction.channel!.id &&
+                        i.message.id === m.id
+                    );
+                }
             });
         } catch (e) {
             timedOut = true;
@@ -394,7 +409,7 @@
             }
             toAdd = toAdd.substring(0, 80);
             try {
-                if(!data.customTypes) data.customTypes = [];
+                if (!data.customTypes) data.customTypes = [];
                 data.customTypes.push(toAdd);
             } catch {
                 continue;
diff --git a/src/commands/settings/tracks.ts b/src/commands/settings/tracks.ts
index 39efede..20972f4 100644
--- a/src/commands/settings/tracks.ts
+++ b/src/commands/settings/tracks.ts
@@ -1,4 +1,26 @@
-import { ActionRowBuilder, APIMessageComponentEmoji, ButtonBuilder, ButtonInteraction, ButtonStyle, Collection, CommandInteraction, GuildMember, Message, ModalBuilder, ModalSubmitInteraction, PermissionsBitField, Role, RoleSelectMenuBuilder, RoleSelectMenuInteraction, SlashCommandSubcommandBuilder, StringSelectMenuBuilder, StringSelectMenuInteraction, StringSelectMenuOptionBuilder, TextInputBuilder, TextInputStyle } from "discord.js";
+import {
+    ActionRowBuilder,
+    APIMessageComponentEmoji,
+    ButtonBuilder,
+    ButtonInteraction,
+    ButtonStyle,
+    Collection,
+    CommandInteraction,
+    GuildMember,
+    Message,
+    ModalBuilder,
+    ModalSubmitInteraction,
+    PermissionsBitField,
+    Role,
+    RoleSelectMenuBuilder,
+    RoleSelectMenuInteraction,
+    SlashCommandSubcommandBuilder,
+    StringSelectMenuBuilder,
+    StringSelectMenuInteraction,
+    StringSelectMenuOptionBuilder,
+    TextInputBuilder,
+    TextInputStyle
+} from "discord.js";
 import client from "../../utils/client.js";
 import createPageIndicator, { createVerticalTrack } from "../../utils/createPageIndicator.js";
 import { LoadingEmbed } from "../../utils/defaults.js";
@@ -7,12 +29,10 @@
 import ellipsis from "../../utils/ellipsis.js";
 import { modalInteractionCollector } from "../../utils/dualCollector.js";
 
-const { renderRole } = client.logger
+const { renderRole } = client.logger;
 
 const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-        .setName("tracks")
-        .setDescription("Manage the tracks for the server")
+    builder.setName("tracks").setDescription("Manage the tracks for the server");
 
 interface ObjectSchema {
     name: string;
@@ -22,35 +42,36 @@
     manageableBy: string[];
 }
 
-
-const editName = async (i: ButtonInteraction, interaction: StringSelectMenuInteraction | ButtonInteraction, m: Message, current?: string) => {
-
+const editName = async (
+    i: ButtonInteraction,
+    interaction: StringSelectMenuInteraction | ButtonInteraction,
+    m: Message,
+    current?: string
+) => {
     let name = current ?? "";
     const modal = new ModalBuilder()
         .setTitle("Edit Name and Description")
         .setCustomId("editNameDescription")
         .addComponents(
-            new ActionRowBuilder<TextInputBuilder>()
-                .addComponents(
-                    new TextInputBuilder()
-                        .setLabel("Name")
-                        .setCustomId("name")
-                        .setPlaceholder("The name of the track (e.g. Moderators)")
-                        .setStyle(TextInputStyle.Short)
-                        .setValue(name)
-                        .setRequired(true)
-                )
-        )
-    const button = new ActionRowBuilder<ButtonBuilder>()
-        .addComponents(
-            new ButtonBuilder()
-                .setCustomId("back")
-                .setLabel("Back")
-                .setStyle(ButtonStyle.Secondary)
-                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
-        )
+            new ActionRowBuilder<TextInputBuilder>().addComponents(
+                new TextInputBuilder()
+                    .setLabel("Name")
+                    .setCustomId("name")
+                    .setPlaceholder("The name of the track (e.g. Moderators)")
+                    .setStyle(TextInputStyle.Short)
+                    .setValue(name)
+                    .setRequired(true)
+            )
+        );
+    const button = new ActionRowBuilder<ButtonBuilder>().addComponents(
+        new ButtonBuilder()
+            .setCustomId("back")
+            .setLabel("Back")
+            .setStyle(ButtonStyle.Secondary)
+            .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
+    );
 
-    await i.showModal(modal)
+    await i.showModal(modal);
     await interaction.editReply({
         embeds: [
             new EmojiEmbed()
@@ -63,41 +84,42 @@
 
     let out: ModalSubmitInteraction | null;
     try {
-        out = await modalInteractionCollector(m, interaction.user) as ModalSubmitInteraction | null;
+        out = (await modalInteractionCollector(m, interaction.user)) as ModalSubmitInteraction | null;
     } catch (e) {
         console.error(e);
         out = null;
     }
-    if(!out) return name;
+    if (!out) return name;
     if (out.isButton()) return name;
     name = out.fields.fields.find((f) => f.customId === "name")?.value ?? name;
-    return name
+    return name;
+};
 
-}
-
-const reorderTracks = async (interaction: ButtonInteraction, m: Message, roles: Collection<string, Role>, currentObj: string[]) => {
-    const reorderRow = new ActionRowBuilder<StringSelectMenuBuilder>()
-        .addComponents(
-            new StringSelectMenuBuilder()
-                .setCustomId("reorder")
-                .setPlaceholder("Select all roles in the order you want users to gain them (Lowest to highest rank).")
-                .setMinValues(currentObj.length)
-                .setMaxValues(currentObj.length)
-                .addOptions(
-                    currentObj.map((o, i) => new StringSelectMenuOptionBuilder()
-                        .setLabel(roles.get(o)!.name)
-                        .setValue(i.toString())
-                    )
+const reorderTracks = async (
+    interaction: ButtonInteraction,
+    m: Message,
+    roles: Collection<string, Role>,
+    currentObj: string[]
+) => {
+    const reorderRow = new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(
+        new StringSelectMenuBuilder()
+            .setCustomId("reorder")
+            .setPlaceholder("Select all roles in the order you want users to gain them (Lowest to highest rank).")
+            .setMinValues(currentObj.length)
+            .setMaxValues(currentObj.length)
+            .addOptions(
+                currentObj.map((o, i) =>
+                    new StringSelectMenuOptionBuilder().setLabel(roles.get(o)!.name).setValue(i.toString())
                 )
-        );
-    const buttonRow = new ActionRowBuilder<ButtonBuilder>()
-        .addComponents(
-            new ButtonBuilder()
-                .setCustomId("back")
-                .setLabel("Back")
-                .setStyle(ButtonStyle.Secondary)
-                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
-        )
+            )
+    );
+    const buttonRow = new ActionRowBuilder<ButtonBuilder>().addComponents(
+        new ButtonBuilder()
+            .setCustomId("back")
+            .setLabel("Back")
+            .setStyle(ButtonStyle.Secondary)
+            .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
+    );
     await interaction.editReply({
         embeds: [
             new EmojiEmbed()
@@ -109,134 +131,154 @@
     });
     let out: StringSelectMenuInteraction | ButtonInteraction | null;
     try {
-        out = await m.awaitMessageComponent({
+        out = (await m.awaitMessageComponent({
             filter: (i) => i.channel!.id === interaction.channel!.id,
             time: 300000
-        }) as StringSelectMenuInteraction | ButtonInteraction | null;
+        })) as StringSelectMenuInteraction | ButtonInteraction | null;
     } catch (e) {
         console.error(e);
         out = null;
     }
-    if(!out) return;
+    if (!out) return;
     out.deferUpdate();
     if (out.isButton()) return;
     const values = out.values;
 
     const newOrder: string[] = currentObj.map((_, i) => {
-        const index = values.findIndex(v => v === i.toString());
+        const index = values.findIndex((v) => v === i.toString());
         return currentObj[index];
     }) as string[];
 
     return newOrder;
-}
+};
 
-const editTrack = async (interaction: ButtonInteraction | StringSelectMenuInteraction, message: Message, roles: Collection<string, Role>, current?: ObjectSchema) => {
+const editTrack = async (
+    interaction: ButtonInteraction | StringSelectMenuInteraction,
+    message: Message,
+    roles: Collection<string, Role>,
+    current?: ObjectSchema
+) => {
     const isAdmin = (interaction.member!.permissions as PermissionsBitField).has("Administrator");
-    if(!current) {
+    if (!current) {
         current = {
             name: "",
             retainPrevious: false,
             nullable: false,
             track: [],
             manageableBy: []
-        }
+        };
     }
 
-    const roleSelect = new ActionRowBuilder<RoleSelectMenuBuilder>()
-        .addComponents(
-            new RoleSelectMenuBuilder()
-                .setCustomId("addRole")
-                .setPlaceholder("Select a role to add")
-                .setDisabled(!isAdmin)
-        );
+    const roleSelect = new ActionRowBuilder<RoleSelectMenuBuilder>().addComponents(
+        new RoleSelectMenuBuilder().setCustomId("addRole").setPlaceholder("Select a role to add").setDisabled(!isAdmin)
+    );
     let closed = false;
     do {
-        const editableRoles: string[] = current.track.map((r) => {
-            if(!(roles.get(r)!.position >= (interaction.member as GuildMember).roles.highest.position) || interaction.user.id === interaction.guild?.ownerId) return roles.get(r)!.name;
-        }).filter(v => v !== undefined) as string[];
-        const selectMenu = new ActionRowBuilder<StringSelectMenuBuilder>()
-            .addComponents(
-                new StringSelectMenuBuilder()
-                    .setCustomId("removeRole")
-                    .setPlaceholder("Select a role to remove")
-                    .setDisabled(!isAdmin)
-                    .addOptions(
-                        editableRoles.map((r, i) => {
-                            return new StringSelectMenuOptionBuilder()
-                            .setLabel(r)
-                            .setValue(i.toString())}
-                        )
-                    )
-            );
-        const buttons = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("back")
-                    .setLabel("Back")
-                    .setStyle(ButtonStyle.Secondary)
-                    .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("edit")
-                    .setLabel("Edit Name")
-                    .setStyle(ButtonStyle.Primary)
-                    .setEmoji(getEmojiByName("ICONS.EDIT", "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("reorder")
-                    .setLabel("Reorder")
-                    .setDisabled(!isAdmin)
-                    .setStyle(ButtonStyle.Primary)
-                    .setEmoji(getEmojiByName("ICONS.REORDER", "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("retainPrevious")
-                    .setLabel("Retain Previous")
-                    .setStyle(current.retainPrevious ? ButtonStyle.Success : ButtonStyle.Danger)
-                    .setEmoji(getEmojiByName("CONTROL." + (current.retainPrevious ? "TICK" : "CROSS"), "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("nullable")
-                    .setLabel(`Role ${current.nullable ? "Not " : ""}Required`)
-                    .setStyle(current.nullable ? ButtonStyle.Success : ButtonStyle.Danger)
-                    .setEmoji(getEmojiByName("CONTROL." + (current.nullable ? "TICK" : "CROSS"), "id") as APIMessageComponentEmoji)
+        const editableRoles: string[] = current.track
+            .map((r) => {
+                if (
+                    !(roles.get(r)!.position >= (interaction.member as GuildMember).roles.highest.position) ||
+                    interaction.user.id === interaction.guild?.ownerId
+                )
+                    return roles.get(r)!.name;
+            })
+            .filter((v) => v !== undefined) as string[];
+        const selectMenu = new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(
+            new StringSelectMenuBuilder()
+                .setCustomId("removeRole")
+                .setPlaceholder("Select a role to remove")
+                .setDisabled(!isAdmin)
+                .addOptions(
+                    editableRoles.map((r, i) => {
+                        return new StringSelectMenuOptionBuilder().setLabel(r).setValue(i.toString());
+                    })
+                )
+        );
+        const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("back")
+                .setLabel("Back")
+                .setStyle(ButtonStyle.Secondary)
+                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji),
+            new ButtonBuilder()
+                .setCustomId("edit")
+                .setLabel("Edit Name")
+                .setStyle(ButtonStyle.Primary)
+                .setEmoji(getEmojiByName("ICONS.EDIT", "id") as APIMessageComponentEmoji),
+            new ButtonBuilder()
+                .setCustomId("reorder")
+                .setLabel("Reorder")
+                .setDisabled(!isAdmin)
+                .setStyle(ButtonStyle.Primary)
+                .setEmoji(getEmojiByName("ICONS.REORDER", "id") as APIMessageComponentEmoji),
+            new ButtonBuilder()
+                .setCustomId("retainPrevious")
+                .setLabel("Retain Previous")
+                .setStyle(current.retainPrevious ? ButtonStyle.Success : ButtonStyle.Danger)
+                .setEmoji(
+                    getEmojiByName(
+                        "CONTROL." + (current.retainPrevious ? "TICK" : "CROSS"),
+                        "id"
+                    ) as APIMessageComponentEmoji
+                ),
+            new ButtonBuilder()
+                .setCustomId("nullable")
+                .setLabel(`Role ${current.nullable ? "Not " : ""}Required`)
+                .setStyle(current.nullable ? ButtonStyle.Success : ButtonStyle.Danger)
+                .setEmoji(
+                    getEmojiByName("CONTROL." + (current.nullable ? "TICK" : "CROSS"), "id") as APIMessageComponentEmoji
+                )
         );
 
         const allowed: boolean[] = [];
         for (const role of current.track) {
             const disabled: boolean =
                 roles.get(role)!.position >= (interaction.member as GuildMember).roles.highest.position;
-            allowed.push(disabled)
+            allowed.push(disabled);
         }
-        const mapped = current.track.map(role => roles.find(aRole => aRole.id === role)!);
+        const mapped = current.track.map((role) => roles.find((aRole) => aRole.id === role)!);
 
         const embed = new EmojiEmbed()
             .setTitle("Tracks")
             .setDescription(
                 `**Currently Editing:** ${current.name}\n\n` +
-                `${getEmojiByName("CONTROL." + (current.nullable ? "CROSS" : "TICK"))} Members ${current.nullable ? "don't " : ""}need a role in this track\n` +
-                `${getEmojiByName("CONTROL." + (current.retainPrevious ? "TICK" : "CROSS"))} Members ${current.retainPrevious ? "" : "don't "}keep all roles below their current highest\n\n` +
-                createVerticalTrack(
-                    mapped.map(role => renderRole(role)), new Array(current.track.length).fill(false), allowed)
+                    `${getEmojiByName("CONTROL." + (current.nullable ? "CROSS" : "TICK"))} Members ${
+                        current.nullable ? "don't " : ""
+                    }need a role in this track\n` +
+                    `${getEmojiByName("CONTROL." + (current.retainPrevious ? "TICK" : "CROSS"))} Members ${
+                        current.retainPrevious ? "" : "don't "
+                    }keep all roles below their current highest\n\n` +
+                    createVerticalTrack(
+                        mapped.map((role) => renderRole(role)),
+                        new Array(current.track.length).fill(false),
+                        allowed
+                    )
             )
-            .setStatus("Success")
+            .setStatus("Success");
 
-        const comps: ActionRowBuilder<RoleSelectMenuBuilder | ButtonBuilder | StringSelectMenuBuilder>[] = [roleSelect, buttons];
-        if(current.track.length >= 1) comps.splice(1, 0, selectMenu);
+        const comps: ActionRowBuilder<RoleSelectMenuBuilder | ButtonBuilder | StringSelectMenuBuilder>[] = [
+            roleSelect,
+            buttons
+        ];
+        if (current.track.length >= 1) comps.splice(1, 0, selectMenu);
 
-        interaction.editReply({embeds: [embed], components: comps});
+        interaction.editReply({ embeds: [embed], components: comps });
 
         let out: ButtonInteraction | RoleSelectMenuInteraction | StringSelectMenuInteraction | null;
 
         try {
-            out = await message.awaitMessageComponent({
+            out = (await message.awaitMessageComponent({
                 filter: (i) => i.channel!.id === interaction.channel!.id,
                 time: 300000
-            }) as ButtonInteraction | RoleSelectMenuInteraction | StringSelectMenuInteraction | null;
+            })) as ButtonInteraction | RoleSelectMenuInteraction | StringSelectMenuInteraction | null;
         } catch (e) {
             console.error(e);
             out = null;
         }
 
-        if(!out) return;
+        if (!out) return;
         if (out.isButton()) {
-            switch(out.customId) {
+            switch (out.customId) {
                 case "back": {
                     out.deferUpdate();
                     closed = true;
@@ -264,34 +306,34 @@
             }
         } else if (out.isStringSelectMenu()) {
             out.deferUpdate();
-            switch(out.customId) {
+            switch (out.customId) {
                 case "removeRole": {
-                    const index = current.track.findIndex(v => v === editableRoles[parseInt((out! as StringSelectMenuInteraction).values![0]!)]);
+                    const index = current.track.findIndex(
+                        (v) => v === editableRoles[parseInt((out! as StringSelectMenuInteraction).values![0]!)]
+                    );
                     current.track.splice(index, 1);
                     break;
                 }
             }
         } else {
-            switch(out.customId) {
+            switch (out.customId) {
                 case "addRole": {
                     const role = out.values![0]!;
-                    if(!current.track.includes(role)) {
+                    if (!current.track.includes(role)) {
                         current.track.push(role);
                     } else {
-                        out.reply({content: "That role is already on this track", ephemeral: true})
+                        out.reply({ content: "That role is already on this track", ephemeral: true });
                     }
                     break;
                 }
             }
         }
-
-    } while(!closed);
+    } while (!closed);
     return current;
-}
+};
 
 const callback = async (interaction: CommandInteraction) => {
-
-    const m = await interaction.reply({embeds: LoadingEmbed, fetchReply: true, ephemeral: true})
+    const m = await interaction.reply({ embeds: LoadingEmbed, fetchReply: true, ephemeral: true });
     const config = await client.database.guilds.read(interaction.guild!.id);
     const tracks: ObjectSchema[] = config.tracks;
     const roles = await interaction.guild!.roles.fetch();
@@ -301,16 +343,11 @@
     let modified = false;
 
     do {
-        const embed = new EmojiEmbed()
-            .setTitle("Track Settings")
-            .setEmoji("TRACKS.ICON")
-            .setStatus("Success");
+        const embed = new EmojiEmbed().setTitle("Track Settings").setEmoji("TRACKS.ICON").setStatus("Success");
         const noTracks = config.tracks.length === 0;
         let current: ObjectSchema;
 
-        const pageSelect = new StringSelectMenuBuilder()
-            .setCustomId("page")
-            .setPlaceholder("Select a track to manage");
+        const pageSelect = new StringSelectMenuBuilder().setCustomId("page").setPlaceholder("Select a track to manage");
         const actionSelect = new StringSelectMenuBuilder()
             .setCustomId("action")
             .setPlaceholder("Perform an action")
@@ -325,51 +362,56 @@
                     .setDescription("Delete this track")
                     .setValue("delete")
                     .setEmoji(getEmojiByName("TICKETS.ISSUE", "id") as APIMessageComponentEmoji)
-        );
-        const buttonRow = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("back")
-                    .setStyle(ButtonStyle.Primary)
-                    .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
-                    .setDisabled(page === 0),
-                new ButtonBuilder()
-                    .setCustomId("next")
-                    .setEmoji(getEmojiByName("CONTROL.RIGHT", "id") as APIMessageComponentEmoji)
-                    .setStyle(ButtonStyle.Primary)
-                    .setDisabled(page === tracks.length - 1),
-                new ButtonBuilder()
-                    .setCustomId("add")
-                    .setLabel("New Track")
-                    .setEmoji(getEmojiByName("TICKETS.SUGGESTION", "id") as APIMessageComponentEmoji)
-                    .setStyle(ButtonStyle.Secondary)
-                    .setDisabled(Object.keys(tracks).length >= 24),
-                new ButtonBuilder()
-                    .setCustomId("save")
-                    .setLabel("Save")
-                    .setEmoji(getEmojiByName("ICONS.SAVE", "id") as APIMessageComponentEmoji)
-                    .setStyle(ButtonStyle.Success)
-                    .setDisabled(!modified),
             );
-        if(noTracks) {
-            embed.setDescription("No tracks have been set up yet. Use the button below to add one.\n\n" +
-                createPageIndicator(1, 1, undefined, true)
+        const buttonRow = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("back")
+                .setStyle(ButtonStyle.Primary)
+                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
+                .setDisabled(page === 0),
+            new ButtonBuilder()
+                .setCustomId("next")
+                .setEmoji(getEmojiByName("CONTROL.RIGHT", "id") as APIMessageComponentEmoji)
+                .setStyle(ButtonStyle.Primary)
+                .setDisabled(page === tracks.length - 1),
+            new ButtonBuilder()
+                .setCustomId("add")
+                .setLabel("New Track")
+                .setEmoji(getEmojiByName("TICKETS.SUGGESTION", "id") as APIMessageComponentEmoji)
+                .setStyle(ButtonStyle.Secondary)
+                .setDisabled(Object.keys(tracks).length >= 24),
+            new ButtonBuilder()
+                .setCustomId("save")
+                .setLabel("Save")
+                .setEmoji(getEmojiByName("ICONS.SAVE", "id") as APIMessageComponentEmoji)
+                .setStyle(ButtonStyle.Success)
+                .setDisabled(!modified)
+        );
+        if (noTracks) {
+            embed.setDescription(
+                "No tracks have been set up yet. Use the button below to add one.\n\n" +
+                    createPageIndicator(1, 1, undefined, true)
             );
             pageSelect.setDisabled(true);
             actionSelect.setDisabled(true);
-            pageSelect.addOptions(new StringSelectMenuOptionBuilder()
-                .setLabel("No tracks")
-                .setValue("none")
-            );
+            pageSelect.addOptions(new StringSelectMenuOptionBuilder().setLabel("No tracks").setValue("none"));
         } else {
             page = Math.min(page, Object.keys(tracks).length - 1);
             current = tracks[page]!;
-            const mapped = current.track.map(role => roles.find(aRole => aRole.id === role)!);
-            embed.setDescription(`**Currently Editing:** ${current.name}\n\n` +
-                `${getEmojiByName("CONTROL." + (current.nullable ? "CROSS" : "TICK"))} Members ${current.nullable ? "don't " : ""}need a role in this track\n` +
-                `${getEmojiByName("CONTROL." + (current.retainPrevious ? "TICK" : "CROSS"))} Members ${current.retainPrevious ? "" : "don't "}keep all roles below their current highest\n\n` +
-                createVerticalTrack(mapped.map(role => renderRole(role)), new Array(current.track.length).fill(false)) +
-                `\n${createPageIndicator(config.tracks.length, page)}`
+            const mapped = current.track.map((role) => roles.find((aRole) => aRole.id === role)!);
+            embed.setDescription(
+                `**Currently Editing:** ${current.name}\n\n` +
+                    `${getEmojiByName("CONTROL." + (current.nullable ? "CROSS" : "TICK"))} Members ${
+                        current.nullable ? "don't " : ""
+                    }need a role in this track\n` +
+                    `${getEmojiByName("CONTROL." + (current.retainPrevious ? "TICK" : "CROSS"))} Members ${
+                        current.retainPrevious ? "" : "don't "
+                    }keep all roles below their current highest\n\n` +
+                    createVerticalTrack(
+                        mapped.map((role) => renderRole(role)),
+                        new Array(current.track.length).fill(false)
+                    ) +
+                    `\n${createPageIndicator(config.tracks.length, page)}`
             );
 
             pageSelect.addOptions(
@@ -380,13 +422,23 @@
                         .setValue(index.toString());
                 })
             );
-
         }
 
-        await interaction.editReply({embeds: [embed], components: [new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(actionSelect), new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(pageSelect), buttonRow]});
+        await interaction.editReply({
+            embeds: [embed],
+            components: [
+                new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(actionSelect),
+                new ActionRowBuilder<StringSelectMenuBuilder>().addComponents(pageSelect),
+                buttonRow
+            ]
+        });
         let i: StringSelectMenuInteraction | ButtonInteraction;
         try {
-            i = await m.awaitMessageComponent({ time: 300000, filter: (i) => i.user.id === interaction.user.id && i.message.id === m.id && i.channelId === interaction.channelId}) as ButtonInteraction | StringSelectMenuInteraction;
+            i = (await m.awaitMessageComponent({
+                time: 300000,
+                filter: (i) =>
+                    i.user.id === interaction.user.id && i.message.id === m.id && i.channelId === interaction.channelId
+            })) as ButtonInteraction | StringSelectMenuInteraction;
         } catch (e) {
             closed = true;
             continue;
@@ -404,14 +456,14 @@
                     break;
                 }
                 case "add": {
-                    const newPage = await editTrack(i, m, roles)
-                    if(!newPage) break;
+                    const newPage = await editTrack(i, m, roles);
+                    if (!newPage) break;
                     tracks.push();
                     page = tracks.length - 1;
                     break;
                 }
                 case "save": {
-                    client.database.guilds.write(interaction.guild!.id, {tracks: tracks});
+                    client.database.guilds.write(interaction.guild!.id, { tracks: tracks });
                     modified = false;
                     await client.memory.forceUpdate(interaction.guild!.id);
                     break;
@@ -420,16 +472,16 @@
         } else if (i.isStringSelectMenu()) {
             switch (i.customId) {
                 case "action": {
-                    switch(i.values[0]) {
+                    switch (i.values[0]) {
                         case "edit": {
                             const edited = await editTrack(i, m, roles, current!);
-                            if(!edited) break;
+                            if (!edited) break;
                             tracks[page] = edited;
                             modified = true;
                             break;
                         }
                         case "delete": {
-                            if(page === 0 && tracks.keys.length - 1 > 0) page++;
+                            if (page === 0 && tracks.keys.length - 1 > 0) page++;
                             else page--;
                             tracks.splice(page, 1);
                             break;
@@ -443,10 +495,9 @@
                 }
             }
         }
-
     } while (!closed);
-    await interaction.deleteReply()
-}
+    await interaction.deleteReply();
+};
 
 const check = (interaction: CommandInteraction, _partial: boolean = false) => {
     const member = interaction.member as GuildMember;
diff --git a/src/commands/settings/verify.ts b/src/commands/settings/verify.ts
index 9c091a1..e2318fc 100644
--- a/src/commands/settings/verify.ts
+++ b/src/commands/settings/verify.ts
@@ -16,10 +16,7 @@
 import lodash from "lodash";
 
 const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-        .setName("verify")
-        .setDescription("Manage the role given after a user runs /verify")
-
+    builder.setName("verify").setDescription("Manage the role given after a user runs /verify");
 
 const callback = async (interaction: CommandInteraction): Promise<unknown> => {
     if (!interaction.guild) return;
@@ -33,33 +30,31 @@
     let config = await client.database.guilds.read(interaction.guild.id);
     let data = Object.assign({}, config.verify);
     do {
-        const selectMenu = new ActionRowBuilder<RoleSelectMenuBuilder>()
-        .addComponents(
-            new RoleSelectMenuBuilder()
-                .setCustomId("role")
-                .setPlaceholder("Select a role")
+        const selectMenu = new ActionRowBuilder<RoleSelectMenuBuilder>().addComponents(
+            new RoleSelectMenuBuilder().setCustomId("role").setPlaceholder("Select a role")
         );
 
-        const buttons = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("switch")
-                    .setLabel(data.enabled ? "Enabled" : "Disabled")
-                    .setStyle(data.enabled ? ButtonStyle.Success : ButtonStyle.Danger)
-                    .setEmoji(getEmojiByName(data.enabled ? "CONTROL.TICK" : "CONTROL.CROSS", "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("save")
-                    .setLabel("Save")
-                    .setStyle(ButtonStyle.Success)
-                    .setEmoji(getEmojiByName("ICONS.SAVE", "id") as APIMessageComponentEmoji)
-                    .setDisabled(lodash.isEqual(config.verify, data))
-            );
+        const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("switch")
+                .setLabel(data.enabled ? "Enabled" : "Disabled")
+                .setStyle(data.enabled ? ButtonStyle.Success : ButtonStyle.Danger)
+                .setEmoji(
+                    getEmojiByName(data.enabled ? "CONTROL.TICK" : "CONTROL.CROSS", "id") as APIMessageComponentEmoji
+                ),
+            new ButtonBuilder()
+                .setCustomId("save")
+                .setLabel("Save")
+                .setStyle(ButtonStyle.Success)
+                .setEmoji(getEmojiByName("ICONS.SAVE", "id") as APIMessageComponentEmoji)
+                .setDisabled(lodash.isEqual(config.verify, data))
+        );
 
         const embed = new EmojiEmbed()
             .setTitle("Verify Role")
             .setDescription(
                 `Select a role to be given to users after they run ${getCommandMentionByName("verify")}` +
-                `\n\nCurrent role: ${config.verify.role ? `<@&${config.verify.role}>` : "None"}`
+                    `\n\nCurrent role: ${config.verify.role ? `<@&${config.verify.role}>` : "None"}`
             )
             .setStatus("Success")
             .setEmoji("CHANNEL.TEXT.CREATE");
@@ -73,7 +68,9 @@
         try {
             i = await m.awaitMessageComponent({
                 time: 300000,
-                filter: (i) => { return i.user.id === interaction.user.id }
+                filter: (i) => {
+                    return i.user.id === interaction.user.id;
+                }
             });
         } catch (e) {
             closed = true;
@@ -82,26 +79,25 @@
 
         await i.deferUpdate();
 
-        if(i.isButton()) {
+        if (i.isButton()) {
             switch (i.customId) {
                 case "save": {
-                    client.database.guilds.write(interaction.guild.id, {"verify": data} )
+                    client.database.guilds.write(interaction.guild.id, { verify: data });
                     config = await client.database.guilds.read(interaction.guild.id);
                     data = Object.assign({}, config.verify);
                     await client.memory.forceUpdate(interaction.guild.id);
-                    break
+                    break;
                 }
                 case "switch": {
                     data.enabled = !data.enabled;
-                    break
+                    break;
                 }
             }
         } else {
             data.role = i.values[0]!;
         }
-
     } while (!closed);
-    await interaction.deleteReply()
+    await interaction.deleteReply();
 };
 
 const check = (interaction: CommandInteraction, _partial: boolean = false) => {
diff --git a/src/commands/settings/welcome.ts b/src/commands/settings/welcome.ts
index b2d484c..bf52dd1 100644
--- a/src/commands/settings/welcome.ts
+++ b/src/commands/settings/welcome.ts
@@ -14,7 +14,7 @@
     ModalBuilder,
     TextInputBuilder,
     TextInputStyle,
-    ModalSubmitInteraction,
+    ModalSubmitInteraction
 } from "discord.js";
 import type { SlashCommandSubcommandBuilder } from "discord.js";
 import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
@@ -24,9 +24,7 @@
 import { modalInteractionCollector } from "../../utils/dualCollector.js";
 
 const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-        .setName("welcome")
-        .setDescription("Messages and roles sent or given when someone joins the server")
+    builder.setName("welcome").setDescription("Messages and roles sent or given when someone joins the server");
 
 const callback = async (interaction: CommandInteraction): Promise<void> => {
     const { renderChannel } = client.logger;
@@ -39,80 +37,87 @@
     let config = await client.database.guilds.read(interaction.guild!.id);
     let data = Object.assign({}, config.welcome);
     do {
-        const buttons = new ActionRowBuilder<ButtonBuilder>()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId("switch")
-                    .setLabel(data.enabled ? "Enabled" : "Disabled")
-                    .setStyle(data.enabled ? ButtonStyle.Success : ButtonStyle.Danger)
-                    .setEmoji(getEmojiByName(data.enabled ? "CONTROL.TICK" : "CONTROL.CROSS", "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("message")
-                    .setLabel((data.message ? "Change" : "Set") + "Message")
-                    .setStyle(ButtonStyle.Primary)
-                    .setEmoji(getEmojiByName("ICONS.EDIT", "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("channelDM")
-                    .setLabel("Send in DMs")
-                    .setStyle(ButtonStyle.Primary)
-                    .setDisabled(data.channel === "dm"),
-                new ButtonBuilder()
-                    .setCustomId("role")
-                    .setLabel("Clear Role")
-                    .setStyle(ButtonStyle.Danger)
-                    .setEmoji(getEmojiByName("CONTROL.CROSS", "id") as APIMessageComponentEmoji),
-                new ButtonBuilder()
-                    .setCustomId("save")
-                    .setLabel("Save")
-                    .setStyle(ButtonStyle.Success)
-                    .setEmoji(getEmojiByName("ICONS.SAVE", "id") as APIMessageComponentEmoji)
-                    .setDisabled(
-                        data.enabled === config.welcome.enabled &&
+        const buttons = new ActionRowBuilder<ButtonBuilder>().addComponents(
+            new ButtonBuilder()
+                .setCustomId("switch")
+                .setLabel(data.enabled ? "Enabled" : "Disabled")
+                .setStyle(data.enabled ? ButtonStyle.Success : ButtonStyle.Danger)
+                .setEmoji(
+                    getEmojiByName(data.enabled ? "CONTROL.TICK" : "CONTROL.CROSS", "id") as APIMessageComponentEmoji
+                ),
+            new ButtonBuilder()
+                .setCustomId("message")
+                .setLabel((data.message ? "Change" : "Set") + "Message")
+                .setStyle(ButtonStyle.Primary)
+                .setEmoji(getEmojiByName("ICONS.EDIT", "id") as APIMessageComponentEmoji),
+            new ButtonBuilder()
+                .setCustomId("channelDM")
+                .setLabel("Send in DMs")
+                .setStyle(ButtonStyle.Primary)
+                .setDisabled(data.channel === "dm"),
+            new ButtonBuilder()
+                .setCustomId("role")
+                .setLabel("Clear Role")
+                .setStyle(ButtonStyle.Danger)
+                .setEmoji(getEmojiByName("CONTROL.CROSS", "id") as APIMessageComponentEmoji),
+            new ButtonBuilder()
+                .setCustomId("save")
+                .setLabel("Save")
+                .setStyle(ButtonStyle.Success)
+                .setEmoji(getEmojiByName("ICONS.SAVE", "id") as APIMessageComponentEmoji)
+                .setDisabled(
+                    data.enabled === config.welcome.enabled &&
                         data.message === config.welcome.message &&
                         data.role === config.welcome.role &&
                         data.ping === config.welcome.ping &&
                         data.channel === config.welcome.channel
-                    )
-            );
+                )
+        );
 
-        const channelMenu = new ActionRowBuilder<ChannelSelectMenuBuilder>()
-            .addComponents(
-                new ChannelSelectMenuBuilder()
-                    .setCustomId("channel")
-                    .setPlaceholder("Select a channel to send welcome messages to")
-            );
-        const roleMenu = new ActionRowBuilder<RoleSelectMenuBuilder>()
-            .addComponents(
-                new RoleSelectMenuBuilder()
-                    .setCustomId("roleToGive")
-                    .setPlaceholder("Select a role to give to the member when they join the server")
-            );
-        const pingMenu = new ActionRowBuilder<RoleSelectMenuBuilder>()
-            .addComponents(
-                new RoleSelectMenuBuilder()
-                    .setCustomId("roleToPing")
-                    .setPlaceholder("Select a role to ping when a member joins the server")
-            );
+        const channelMenu = new ActionRowBuilder<ChannelSelectMenuBuilder>().addComponents(
+            new ChannelSelectMenuBuilder()
+                .setCustomId("channel")
+                .setPlaceholder("Select a channel to send welcome messages to")
+        );
+        const roleMenu = new ActionRowBuilder<RoleSelectMenuBuilder>().addComponents(
+            new RoleSelectMenuBuilder()
+                .setCustomId("roleToGive")
+                .setPlaceholder("Select a role to give to the member when they join the server")
+        );
+        const pingMenu = new ActionRowBuilder<RoleSelectMenuBuilder>().addComponents(
+            new RoleSelectMenuBuilder()
+                .setCustomId("roleToPing")
+                .setPlaceholder("Select a role to ping when a member joins the server")
+        );
 
         const embed = new EmojiEmbed()
             .setTitle("Welcome Settings")
             .setStatus("Success")
             .setDescription(
-                `${getEmojiByName(data.enabled ? "CONTROL.TICK" : "CONTROL.CROSS")} Welcome messages and roles are ${data.enabled ? "enabled" : "disabled"}\n` +
-                `**Welcome message:** ${data.message ?
-                    `\n> ` +
-                    await convertCurlyBracketString(
-                        data.message,
-                        interaction.user.id,
-                        interaction.user.username,
-                        interaction.guild!.name,
-                        interaction.guild!.members
-                    )
-                    : "*None*"}\n` +
-                `**Send message in:** ` + (data.channel ? (data.channel == "dm" ? "DMs" : renderChannel(data.channel)) : `*None set*`) + `\n` +
-                `**Role to ping:** ` + (data.ping ? `<@&${data.ping}>` : `*None set*`) + `\n` +
-                `**Role given on join:** ` + (data.role ? `<@&${data.role}>` : `*None set*`)
-            )
+                `${getEmojiByName(data.enabled ? "CONTROL.TICK" : "CONTROL.CROSS")} Welcome messages and roles are ${
+                    data.enabled ? "enabled" : "disabled"
+                }\n` +
+                    `**Welcome message:** ${
+                        data.message
+                            ? `\n> ` +
+                              (await convertCurlyBracketString(
+                                  data.message,
+                                  interaction.user.id,
+                                  interaction.user.username,
+                                  interaction.guild!.name,
+                                  interaction.guild!.members
+                              ))
+                            : "*None*"
+                    }\n` +
+                    `**Send message in:** ` +
+                    (data.channel ? (data.channel == "dm" ? "DMs" : renderChannel(data.channel)) : `*None set*`) +
+                    `\n` +
+                    `**Role to ping:** ` +
+                    (data.ping ? `<@&${data.ping}>` : `*None set*`) +
+                    `\n` +
+                    `**Role given on join:** ` +
+                    (data.role ? `<@&${data.role}>` : `*None set*`)
+            );
 
         await interaction.editReply({
             embeds: [embed],
@@ -121,17 +126,17 @@
 
         let i: RoleSelectMenuInteraction | ChannelSelectMenuInteraction | ButtonInteraction;
         try {
-            i = await m.awaitMessageComponent({
+            i = (await m.awaitMessageComponent({
                 filter: (interaction) => interaction.user.id === interaction.user.id,
                 time: 300000
-            }) as RoleSelectMenuInteraction | ChannelSelectMenuInteraction | ButtonInteraction;
+            })) as RoleSelectMenuInteraction | ChannelSelectMenuInteraction | ButtonInteraction;
         } catch (e) {
             closed = true;
             continue;
         }
 
-        if(i.isButton()) {
-            switch(i.customId) {
+        if (i.isButton()) {
+            switch (i.customId) {
                 case "switch": {
                     await i.deferUpdate();
                     data.enabled = !data.enabled;
@@ -148,7 +153,7 @@
                                     .setLabel("Server Info (1/3)")
                                     .setPlaceholder(
                                         `{serverName} - This server's name\n\n` +
-                                        `These placeholders will be replaced with the server's name, etc..`
+                                            `These placeholders will be replaced with the server's name, etc..`
                                     )
                                     .setMaxLength(1)
                                     .setRequired(false)
@@ -160,8 +165,8 @@
                                     .setLabel("Member Counts (2/3) - {MemberCount:...}")
                                     .setPlaceholder(
                                         `{:all} - Total member count\n` +
-                                        `{:humans} - Total non-bot users\n` +
-                                        `{:bots} - Number of bots\n`
+                                            `{:humans} - Total non-bot users\n` +
+                                            `{:bots} - Number of bots\n`
                                     )
                                     .setMaxLength(1)
                                     .setRequired(false)
@@ -171,32 +176,28 @@
                                 new TextInputBuilder()
                                     .setCustomId("ex3")
                                     .setLabel("Member who joined (3/3) - {member:...}")
-                                    .setPlaceholder(
-                                            `{:name} - The members name\n`
-                                    )
+                                    .setPlaceholder(`{:name} - The members name\n`)
                                     .setMaxLength(1)
                                     .setRequired(false)
                                     .setStyle(TextInputStyle.Paragraph)
                             ),
-                            new ActionRowBuilder<TextInputBuilder>()
-                                .addComponents(
-                                    new TextInputBuilder()
-                                        .setCustomId("message")
-                                        .setPlaceholder("Enter a message to send when someone joins the server")
-                                        .setValue(data.message ?? "")
-                                        .setLabel("Message")
-                                        .setStyle(TextInputStyle.Paragraph)
-                                )
-                        )
-                    const button = new ActionRowBuilder<ButtonBuilder>()
-                        .addComponents(
-                            new ButtonBuilder()
-                                .setCustomId("back")
-                                .setLabel("Back")
-                                .setStyle(ButtonStyle.Secondary)
-                                .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
-                        )
-                    await i.showModal(modal)
+                            new ActionRowBuilder<TextInputBuilder>().addComponents(
+                                new TextInputBuilder()
+                                    .setCustomId("message")
+                                    .setPlaceholder("Enter a message to send when someone joins the server")
+                                    .setValue(data.message ?? "")
+                                    .setLabel("Message")
+                                    .setStyle(TextInputStyle.Paragraph)
+                            )
+                        );
+                    const button = new ActionRowBuilder<ButtonBuilder>().addComponents(
+                        new ButtonBuilder()
+                            .setCustomId("back")
+                            .setLabel("Back")
+                            .setStyle(ButtonStyle.Secondary)
+                            .setEmoji(getEmojiByName("CONTROL.LEFT", "id") as APIMessageComponentEmoji)
+                    );
+                    await i.showModal(modal);
                     await i.editReply({
                         embeds: [
                             new EmojiEmbed()
@@ -209,21 +210,21 @@
 
                     let out: ModalSubmitInteraction | null;
                     try {
-                        out = await modalInteractionCollector(m, interaction.user) as ModalSubmitInteraction | null;
+                        out = (await modalInteractionCollector(m, interaction.user)) as ModalSubmitInteraction | null;
                     } catch (e) {
                         console.error(e);
                         out = null;
                     }
-                    if(!out) break;
+                    if (!out) break;
                     data.message = out.fields.getTextInputValue("message");
                     break;
                 }
                 case "save": {
                     await i.deferUpdate();
-                    await client.database.guilds.write(interaction.guild!.id, {"welcome": data});
+                    await client.database.guilds.write(interaction.guild!.id, { welcome: data });
                     config = await client.database.guilds.read(interaction.guild!.id);
                     data = Object.assign({}, config.welcome);
-                    await client.memory.forceUpdate(interaction.guild!.id)
+                    await client.memory.forceUpdate(interaction.guild!.id);
                     break;
                 }
                 case "channelDM": {
@@ -239,23 +240,22 @@
             }
         } else if (i.isRoleSelectMenu()) {
             await i.deferUpdate();
-            switch(i.customId) {
+            switch (i.customId) {
                 case "roleToGive": {
                     data.role = i.values[0]!;
-                    break
+                    break;
                 }
                 case "roleToPing": {
                     data.ping = i.values[0]!;
-                    break
+                    break;
                 }
             }
         } else {
             await i.deferUpdate();
             data.channel = i.values[0]!;
         }
-
     } while (!closed);
-    await interaction.deleteReply()
+    await interaction.deleteReply();
 };
 
 const check = (interaction: CommandInteraction, _partial: boolean = false) => {
@@ -266,16 +266,16 @@
 };
 
 const autocomplete = async (interaction: AutocompleteInteraction): Promise<string[]> => {
-    const validReplacements = ["serverName", "memberCount:all", "memberCount:bots", "memberCount:humans"]
+    const validReplacements = ["serverName", "memberCount:all", "memberCount:bots", "memberCount:humans"];
     if (!interaction.guild) return [];
     const prompt = interaction.options.getString("message");
     const autocompletions = [];
-    if ( prompt === null ) {
+    if (prompt === null) {
         for (const replacement of validReplacements) {
             autocompletions.push(`{${replacement}}`);
-        };
+        }
         return autocompletions;
-    };
+    }
     const beforeLastOpenBracket = prompt.match(/(.*){[^{}]{0,15}$/);
     const afterLastOpenBracket = prompt.match(/{[^{}]{0,15}$/);
     if (beforeLastOpenBracket !== null) {