fixed ts errors in settings/commands.ts
diff --git a/src/commands/settings/commands.ts b/src/commands/settings/commands.ts
index 34a197b..ac2cd81 100644
--- a/src/commands/settings/commands.ts
+++ b/src/commands/settings/commands.ts
@@ -1,5 +1,5 @@
 import { LoadingEmbed } from "../../utils/defaults.js";
-import Discord, { CommandInteraction, ActionRowBuilder, ButtonBuilder, TextInputComponent, Role, ButtonStyle } from "discord.js";
+import Discord, { CommandInteraction, ActionRowBuilder, ButtonBuilder, TextInputComponent, Role, ButtonStyle, ButtonComponent, TextInputBuilder } from "discord.js";
 import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
 import getEmojiByName from "../../utils/getEmojiByName.js";
 import type { SlashCommandSubcommandBuilder } from "@discordjs/builders";
@@ -35,15 +35,15 @@
             .send(true);
         if (confirmation.cancelled) return
         if (confirmation.success) {
-            await client.database.guilds.write(interaction!.guild.id, {
+            await client.database.guilds.write(interaction.guild!.id, {
                 ["moderation.mute.role"]: (interaction.options.get("role") as unknown as Role).id
             });
         }
     }
     let timedOut = false;
     while (!timedOut) {
-        const config = await client.database.guilds.read(interaction!.guild.id);
-        const moderation = config.getKey("moderation");
+        const config = await client.database.guilds.read(interaction.guild!.id);
+        const moderation = config["moderation"];
         m = await interaction.editReply({
             embeds: [
                 new EmojiEmbed()
@@ -57,7 +57,7 @@
                     )
             ],
             components: [
-                new ActionRowBuilder().addComponents([
+                new ActionRowBuilder<ButtonBuilder>().addComponents([
                     new ButtonBuilder()
                         .setLabel("Warn")
                         .setEmoji(getEmojiByName("PUNISH.WARN.YELLOW", "id"))
@@ -74,7 +74,7 @@
                         .setCustomId("nickname")
                         .setStyle(ButtonStyle.Secondary)
                 ]),
-                new ActionRowBuilder().addComponents([
+                new ActionRowBuilder<ButtonBuilder>().addComponents([
                     new ButtonBuilder()
                         .setLabel("Kick")
                         .setEmoji(getEmojiByName("PUNISH.KICK.RED", "id"))
@@ -91,7 +91,7 @@
                         .setCustomId("ban")
                         .setStyle(ButtonStyle.Secondary)
                 ]),
-                new ActionRowBuilder().addComponents([
+                new ActionRowBuilder<ButtonBuilder>().addComponents([
                     new ButtonBuilder()
                         .setLabel(clicked === "clearMuteRole" ? "Click again to confirm" : "Clear mute role")
                         .setEmoji(getEmojiByName("CONTROL.CROSS", "id"))
@@ -116,11 +116,12 @@
             timedOut = true;
             continue;
         }
-        let chosen = moderation[i.customId] ?? { text: null, url: null };
-        if (i.component.customId === "clearMuteRole") {
+        type modIDs = "mute" | "kick" | "ban" | "softban" | "warn" | "role";
+        let chosen = moderation[i.customId as modIDs] ?? { text: null, url: null };
+        if ((i.component as ButtonComponent).customId === "clearMuteRole") {
             i.deferUpdate();
             if (clicked === "clearMuteRole") {
-                await client.database.guilds.write(interaction.guild.id, {
+                await client.database.guilds.write(interaction.guild!.id, {
                     "moderation.mute.role": null
                 });
             } else {
@@ -130,36 +131,36 @@
         } else {
             clicked = "";
         }
-        if (i.component.customId === "timeout") {
+        if ((i.component as ButtonComponent).customId === "timeout") {
             await i.deferUpdate();
-            await client.database.guilds.write(interaction.guild.id, {
+            await client.database.guilds.write(interaction.guild!.id, {
                 "moderation.mute.timeout": !moderation.mute.timeout
             });
             continue;
         } else if (i.customId) {
             await i.showModal(
-                new Discord.Modal()
+                new Discord.ModalBuilder()
                     .setCustomId("modal")
                     .setTitle(`Options for ${i.customId}`)
                     .addComponents(
-                        new ActionRowBuilder<TextInputComponent>().addComponents(
-                            new TextInputComponent()
+                        new ActionRowBuilder<TextInputBuilder>().addComponents(
+                            new TextInputBuilder()
                                 .setCustomId("name")
                                 .setLabel("Button text")
                                 .setMaxLength(100)
                                 .setRequired(false)
-                                .setStyle("SHORT")
+                                .setStyle(Discord.TextInputStyle.Short)
                                 .setValue(chosen.text ?? "")
-                        ),
-                        new ActionRowBuilder<TextInputComponent>().addComponents(
-                            new TextInputComponent()
+                        ).toJSON(),
+                        new ActionRowBuilder<TextInputBuilder>().addComponents(
+                            new TextInputBuilder()
                                 .setCustomId("url")
                                 .setLabel("URL - Type {id} to insert the user's ID")
                                 .setMaxLength(2000)
                                 .setRequired(false)
-                                .setStyle("SHORT")
+                                .setStyle(Discord.TextInputStyle.Short)
                                 .setValue(chosen.link ?? "")
-                        )
+                        ).toJSON()
                     )
             );
             await interaction.editReply({
@@ -171,7 +172,7 @@
                         .setEmoji("GUILD.TICKET.OPEN")
                 ],
                 components: [
-                    new ActionRowBuilder().addComponents([
+                    new ActionRowBuilder<ButtonBuilder>().addComponents([
                         new ButtonBuilder()
                             .setLabel("Back")
                             .setEmoji(getEmojiByName("CONTROL.LEFT", "id"))
@@ -180,23 +181,23 @@
                     ])
                 ]
             });
-            let out;
+            let out: Discord.ModalSubmitInteraction;
             try {
                 out = await modalInteractionCollector(
                     m,
-                    (m) => m.channel.id === interaction.channel.id,
+                    (m) => m.channel!.id === interaction.channel!.id,
                     (_) => true
-                );
+                ) as Discord.ModalSubmitInteraction;
             } catch (e) {
                 continue;
             }
-            if (out.fields) {
+            if ((out!).fields) {
                 const buttonText = out.fields.getTextInputValue("name");
                 const buttonLink = out.fields.getTextInputValue("url").replace(/{id}/gi, "{id}");
                 const current = chosen;
                 if (current.text !== buttonText || current.link !== buttonLink) {
                     chosen = { text: buttonText, link: buttonLink };
-                    await client.database.guilds.write(interaction.guild.id, {
+                    await client.database.guilds.write(interaction.guild!.id, {
                         ["moderation." + i.customId]: {
                             text: buttonText,
                             link: buttonLink
diff --git a/src/utils/database.ts b/src/utils/database.ts
index ba1d89d..a62e148 100644
--- a/src/utils/database.ts
+++ b/src/utils/database.ts
@@ -310,6 +310,8 @@
         };
         role: {
             role: string | null;
+            text: null;
+            link: null;
         };
     };
     tracks: {