diff --git a/src/events/interactionCreate.ts b/src/events/interactionCreate.ts
index 1796146..62e9609 100644
--- a/src/events/interactionCreate.ts
+++ b/src/events/interactionCreate.ts
@@ -4,7 +4,7 @@
 import close from "../actions/tickets/delete.js";
 import createTranscript from "../premium/createTranscript.js";
 
-import type { Interaction, MessageComponentInteraction } from "discord.js";
+import type { Interaction } from "discord.js";
 import type { NucleusClient } from "../utils/client.js";
 
 export const event = "interactionCreate";
@@ -12,30 +12,16 @@
 
 async function interactionCreate(interaction: Interaction) {
     if (interaction.isButton()) {
-        const int = interaction as MessageComponentInteraction;
-        switch (int.customId) {
-            case "rolemenu": {
-                return await roleMenu(interaction);
-            }
-            case "verifybutton": {
-                return verify(int);
-            }
-            case "createticket": {
-                return create(interaction);
-            }
-            case "closeticket": {
-                return close(interaction);
-            }
-            case "createtranscript": {
-                return createTranscript(int);
-            }
+        switch (interaction.customId) {
+            case "rolemenu":         { return await roleMenu(interaction); }
+            case "verifybutton":     { return await verify(interaction); }
+            case "createticket":     { return await create(interaction); }
+            case "closeticket":      { return await close(interaction); }
+            case "createtranscript": { return await createTranscript(interaction); }
         }
     // } else if (interaction.type === "APPLICATION_COMMAND_AUTOCOMPLETE") {
     //     const int = interaction as AutocompleteInteraction;
     //     switch (`${int.commandName} ${int.options.getSubcommandGroup(false)} ${int.options.getSubcommand(false)}`) {
-    //         case "tag null null": {
-    //             return int.respond(getAutocomplete(int.options.getString("tag") ?? "", await tagAutocomplete(int)));
-    //         }
     //         case "settings null stats": {
     //             return int.respond(generateStatsChannelAutocomplete(int.options.getString("name") ?? ""));
     //         }
