Fix the last of the eslint errors (for real this time)
diff --git a/src/commands/settings/commands.ts b/src/commands/settings/commands.ts
index fe6a181..294c0fd 100644
--- a/src/commands/settings/commands.ts
+++ b/src/commands/settings/commands.ts
@@ -50,7 +50,8 @@
             });
         }
     }
-    while (true) {
+    let timedOut = false;
+    while (!timedOut) {
         const config = await client.database.guilds.read(interaction.guild.id);
         const moderation = config.getKey("moderation");
         m = await interaction.editReply({
@@ -119,7 +120,8 @@
         try {
             i = await m.awaitMessageComponent({ time: 300000 });
         } catch (e) {
-            return;
+            timedOut = true;
+            continue;
         }
         let chosen = moderation[i.customId] ?? { text: null, url: null };
         if (i.component.customId === "clearMuteRole") {
diff --git a/src/commands/settings/logs/attachment.ts b/src/commands/settings/logs/attachment.ts
index 52fdd5f..843b391 100644
--- a/src/commands/settings/logs/attachment.ts
+++ b/src/commands/settings/logs/attachment.ts
@@ -117,7 +117,9 @@
     let clicks = 0;
     const data = await client.database.guilds.read(interaction.guild.id);
     let channel = data.logging.staff.channel;
-    while (true) {
+
+    let timedOut = false;
+    while (!timedOut) {
         await interaction.editReply({
             embeds: [
                 new EmojiEmbed()
@@ -148,7 +150,8 @@
         try {
             i = await m.awaitMessageComponent({ time: 300000 });
         } catch (e) {
-            break;
+            timedOut = true;
+            continue;
         }
         i.deferUpdate();
         if (i.component.customId === "clear") {
@@ -158,8 +161,6 @@
                 await client.database.guilds.write(interaction.guild.id, null, ["logging.announcements.channel"]);
                 channel = undefined;
             }
-        } else {
-            break;
         }
     }
     await interaction.editReply({
diff --git a/src/commands/settings/logs/channel.ts b/src/commands/settings/logs/channel.ts
index c645581..206d282 100644
--- a/src/commands/settings/logs/channel.ts
+++ b/src/commands/settings/logs/channel.ts
@@ -114,7 +114,8 @@
     let clicks = 0;
     const data = await client.database.guilds.read(interaction.guild.id);
     let channel = data.logging.logs.channel;
-    while (true) {
+    let timedOut = false;
+    while (!timedOut) {
         await interaction.editReply({
             embeds: [
                 new EmojiEmbed()
@@ -142,7 +143,7 @@
         try {
             i = await m.awaitMessageComponent({ time: 300000 });
         } catch (e) {
-            break;
+            timedOut = true;
         }
         i.deferUpdate();
         if (i.component.customId === "clear") {
@@ -152,8 +153,6 @@
                 await client.database.guilds.write(interaction.guild.id, null, ["logging.logs.channel"]);
                 channel = undefined;
             }
-        } else {
-            break;
         }
     }
     await interaction.editReply({
diff --git a/src/commands/settings/logs/events.ts b/src/commands/settings/logs/events.ts
index c3fbe41..d0db316 100644
--- a/src/commands/settings/logs/events.ts
+++ b/src/commands/settings/logs/events.ts
@@ -1,5 +1,5 @@
 import { LoadingEmbed } from "./../../../utils/defaultEmbeds.js";
-import Discord, { CommandInteraction, MessageActionRow, MessageButton, MessageSelectMenu } from "discord.js";
+import Discord, { CommandInteraction, Message, MessageActionRow, MessageButton, MessageSelectMenu } from "discord.js";
 import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
 import { WrappedCheck } from "jshaiku";
 import EmojiEmbed from "../../../utils/generateEmojiEmbed.js";
@@ -38,11 +38,12 @@
         fetchReply: true,
         ephemeral: true
     });
-    let m;
-    while (true) {
+    let m: Message;
+    let timedOut = false;
+    do {
         const config = await client.database.guilds.read(interaction.guild.id);
         const converted = toHexArray(config.logging.logs.toLog);
-        m = await interaction.editReply({
+        m = (await interaction.editReply({
             embeds: [
                 new EmojiEmbed()
                     .setTitle("Logging Events")
@@ -72,12 +73,13 @@
                     new MessageButton().setLabel("Select none").setStyle("DANGER").setCustomId("none")
                 ])
             ]
-        });
+        })) as Message;
         let i;
         try {
             i = await m.awaitMessageComponent({ time: 300000 });
         } catch (e) {
-            break;
+            timedOut = true;
+            continue;
         }
         i.deferUpdate();
         if (i.customId === "logs") {
@@ -95,22 +97,10 @@
             await client.database.guilds.write(interaction.guild.id, {
                 "logging.logs.toLog": 0
             });
-        } else {
-            break;
         }
-    }
-    m = await interaction.editReply({
-        embeds: [
-            new EmojiEmbed()
-                .setTitle("Logging Events")
-                .setDescription(
-                    "Below are the events being logged in the server. You can toggle them on and off in the dropdown"
-                )
-                .setFooter({ text: "Message timed out" })
-                .setStatus("Success")
-                .setEmoji("CHANNEL.TEXT.CREATE")
-        ]
-    });
+    } while (!timedOut);
+
+    await interaction.editReply({ embeds: [m.embeds[0]!.setFooter({ text: "Message timed out" })] });
     return;
 };
 
diff --git a/src/commands/settings/logs/staff.ts b/src/commands/settings/logs/staff.ts
index 715fbea..c7077cf 100644
--- a/src/commands/settings/logs/staff.ts
+++ b/src/commands/settings/logs/staff.ts
@@ -119,7 +119,8 @@
     let clicks = 0;
     const data = await client.database.guilds.read(interaction.guild.id);
     let channel = data.logging.staff.channel;
-    while (true) {
+    let timedOut = false;
+    while (!timedOut) {
         await interaction.editReply({
             embeds: [
                 new EmojiEmbed()
@@ -147,7 +148,8 @@
         try {
             i = await m.awaitMessageComponent({ time: 300000 });
         } catch (e) {
-            break;
+            timedOut = true;
+            continue;
         }
         i.deferUpdate();
         if ((i.component as MessageButton).customId === "clear") {
@@ -157,8 +159,6 @@
                 await client.database.guilds.write(interaction.guild.id, null, ["logging.staff.channel"]);
                 channel = undefined;
             }
-        } else {
-            break;
         }
     }
     await interaction.editReply({
diff --git a/src/commands/settings/stats.ts b/src/commands/settings/stats.ts
index b4bca10..ab6022e 100644
--- a/src/commands/settings/stats.ts
+++ b/src/commands/settings/stats.ts
@@ -148,7 +148,8 @@
         }
         await statsChannelAddCallback(client, interaction.member);
     }
-    while (true) {
+    let timedOut = false;
+    while (!timedOut) {
         config = await client.database.guilds.read(interaction.guild.id);
         const stats = config.getKey("stats");
         const selectMenu = new MessageSelectMenu()
@@ -198,7 +199,8 @@
         try {
             i = await m.awaitMessageComponent({ time: 300000 });
         } catch (e) {
-            break;
+            timedOut = true;
+            continue;
         }
         i.deferUpdate();
         if (i.customId === "remove") {
@@ -211,7 +213,7 @@
         }
     }
     await interaction.editReply({
-        embeds: [m.embeds[0]!.setFooter({ text: "Message closed" })],
+        embeds: [m.embeds[0]!.setFooter({ text: "Message timed out" })],
         components: []
     });
 };
diff --git a/src/commands/settings/tickets.ts b/src/commands/settings/tickets.ts
index ca170be..26fa66e 100644
--- a/src/commands/settings/tickets.ts
+++ b/src/commands/settings/tickets.ts
@@ -67,13 +67,12 @@
         fetchReply: true
     })) as Message;
     const options = {
-        enabled: interaction.options.getString("enabled") as string | boolean | null,
+        enabled: interaction.options.getString("enabled")?.startsWith("yes") as boolean | null,
         category: interaction.options.getChannel("category"),
         maxtickets: interaction.options.getNumber("maxticketsperuser"),
         supportping: interaction.options.getRole("supportrole")
     };
     if (options.enabled !== null || options.category || options.maxtickets || options.supportping) {
-        options.enabled = options.enabled === "yes" ? true : false;
         if (options.category) {
             let channel: GuildChannel | null;
             try {
@@ -211,7 +210,8 @@
         types: data.tickets.types,
         customTypes: data.tickets.customTypes
     };
-    while (true) {
+    let timedOut = false;
+    while (!timedOut) {
         embed = new EmojiEmbed()
             .setTitle("Tickets")
             .setDescription(
@@ -276,7 +276,8 @@
         try {
             i = await m.awaitMessageComponent({ time: 300000 });
         } catch (e) {
-            break;
+            timedOut = true;
+            continue;
         }
         i.deferUpdate();
         if ((i.component as MessageActionRowComponent).customId === "clearCategory") {
@@ -312,7 +313,9 @@
                     description: "Click the button below to speak to us privately"
                 }
             ];
-            while (true) {
+            let innerTimedOut = false;
+            let templateSelected = false;
+            while (!innerTimedOut && !templateSelected) {
                 const enabled = data.enabled && data.category !== null;
                 await interaction.editReply({
                     embeds: [
@@ -373,7 +376,8 @@
                 try {
                     i = await m.awaitMessageComponent({ time: 300000 });
                 } catch (e) {
-                    break;
+                    innerTimedOut = true;
+                    continue;
                 }
                 if ((i.component as MessageActionRowComponent).customId === "template") {
                     i.deferUpdate();
@@ -397,7 +401,8 @@
                             ])
                         ]
                     });
-                    break;
+                    templateSelected = true;
+                    continue;
                 } else if ((i.component as MessageActionRowComponent).customId === "blank") {
                     i.deferUpdate();
                     await interaction.channel!.send({
@@ -411,7 +416,8 @@
                             ])
                         ]
                     });
-                    break;
+                    templateSelected = true;
+                    continue;
                 } else if ((i.component as MessageActionRowComponent).customId === "custom") {
                     await i.showModal(
                         new Discord.Modal()
@@ -462,7 +468,8 @@
                             (m) => m.customId === "modify"
                         );
                     } catch (e) {
-                        break;
+                        innerTimedOut = true;
+                        continue;
                     }
                     if (out.fields) {
                         const title = out.fields.getTextInputValue("title");
@@ -485,9 +492,7 @@
                                 ])
                             ]
                         });
-                        break;
-                    } else {
-                        continue;
+                        templateSelected = true;
                     }
                 }
             }
@@ -498,18 +503,18 @@
             data.enabled = !data.enabled;
         } else if ((i.component as MessageActionRowComponent).customId === "manageTypes") {
             data = await manageTypes(interaction, data, m as Message);
-        } else {
-            break;
         }
     }
     await interaction.editReply({
-        embeds: [embed.setFooter({ text: "Message closed" })],
+        embeds: [embed.setFooter({ text: "Message timed out" })],
         components: []
     });
 };
 
 async function manageTypes(interaction: CommandInteraction, data: GuildConfig["tickets"], m: Message) {
-    while (true) {
+    let timedOut = false;
+    let backPressed = false;
+    while (!timedOut && !backPressed) {
         if (data.useCustom) {
             const customTypes = data.customTypes;
             await interaction.editReply({
@@ -622,7 +627,8 @@
         try {
             i = await m.awaitMessageComponent({ time: 300000 });
         } catch (e) {
-            break;
+            timedOut = true;
+            continue;
         }
         if (i.component.customId === "types") {
             i.deferUpdate();
@@ -700,7 +706,7 @@
                 } catch {
                     continue;
                 }
-                data.customTypes = data.customTypes || [];
+                data.customTypes = data.customTypes ?? [];
                 if (!data.customTypes.includes(toAdd)) {
                     data.customTypes.push(toAdd);
                 }
@@ -717,7 +723,7 @@
             data.useCustom = true;
         } else {
             i.deferUpdate();
-            break;
+            backPressed = true;
         }
     }
     return data;
diff --git a/src/commands/settings/verify.ts b/src/commands/settings/verify.ts
index 0eb4553..aa8227f 100644
--- a/src/commands/settings/verify.ts
+++ b/src/commands/settings/verify.ts
@@ -124,7 +124,9 @@
     let clicks = 0;
     const data = await client.database.guilds.read(interaction.guild!.id);
     let role = data.verify.role;
-    while (true) {
+
+    let timedOut = false;
+    while (!timedOut) {
         await interaction.editReply({
             embeds: [
                 new EmojiEmbed()
@@ -155,7 +157,8 @@
         try {
             i = await m.awaitMessageComponent({ time: 300000 });
         } catch (e) {
-            break;
+            timedOut = true;
+            continue;
         }
         i.deferUpdate();
         if ((i.component as MessageActionRowComponent).customId === "clear") {
@@ -180,7 +183,9 @@
                     description: "Click the button below to verify yourself"
                 }
             ];
-            while (true) {
+            let innerTimedOut = false;
+            let templateSelected = false;
+            while (!innerTimedOut && !templateSelected) {
                 await interaction.editReply({
                     embeds: [
                         new EmojiEmbed()
@@ -238,7 +243,8 @@
                 try {
                     i = await m.awaitMessageComponent({ time: 300000 });
                 } catch (e) {
-                    break;
+                    innerTimedOut = true;
+                    continue;
                 }
                 if ((i.component as MessageActionRowComponent).customId === "template") {
                     i.deferUpdate();
@@ -262,7 +268,8 @@
                             ])
                         ]
                     });
-                    break;
+                    templateSelected = true;
+                    continue;
                 } else if ((i.component as MessageActionRowComponent).customId === "blank") {
                     i.deferUpdate();
                     await interaction.channel!.send({
@@ -276,7 +283,8 @@
                             ])
                         ]
                     });
-                    break;
+                    templateSelected = true;
+                    continue;
                 } else if ((i.component as MessageActionRowComponent).customId === "custom") {
                     await i.showModal(
                         new Discord.Modal()
@@ -329,11 +337,10 @@
                             (m) => m.customId === "modify"
                         );
                     } catch (e) {
-                        break;
-                    }
-                    if (out === null) {
+                        innerTimedOut = true;
                         continue;
-                    } else if (out instanceof ModalSubmitInteraction) {
+                    }
+                    if (out !== null && out instanceof ModalSubmitInteraction) {
                         const title = out.fields.getTextInputValue("title");
                         const description = out.fields.getTextInputValue("description");
                         await interaction.channel!.send({
@@ -354,9 +361,7 @@
                                 ])
                             ]
                         });
-                        break;
-                    } else {
-                        continue;
+                        templateSelected = true;
                     }
                 }
             }
diff --git a/src/commands/settings/welcome.ts b/src/commands/settings/welcome.ts
index 188e4b9..24ccefc 100644
--- a/src/commands/settings/welcome.ts
+++ b/src/commands/settings/welcome.ts
@@ -172,7 +172,8 @@
         }
     }
     let lastClicked = null;
-    while (true) {
+    let timedOut = false;
+    do {
         const config = await client.database.guilds.read(interaction.guild!.id);
         m = (await interaction.editReply({
             embeds: [
@@ -239,7 +240,8 @@
         try {
             i = await m.awaitMessageComponent({ time: 300000 });
         } catch (e) {
-            break;
+            timedOut = true;
+            continue;
         }
         i.deferUpdate();
         if (i.customId == "clear-message") {
@@ -284,9 +286,9 @@
             });
             lastClicked = null;
         }
-    }
+    } while (!timedOut);
     await interaction.editReply({
-        embeds: [m.embeds[0]!.setFooter({ text: "Message closed" })],
+        embeds: [m.embeds[0]!.setFooter({ text: "Message timed out" })],
         components: []
     });
 };