diff --git a/src/commands/settings/automod.ts b/src/commands/settings/automod.ts
index fdf806b..a854fc5 100644
--- a/src/commands/settings/automod.ts
+++ b/src/commands/settings/automod.ts
@@ -410,37 +410,25 @@
                 }
                 case "allowedUsers": {
                     await i.deferUpdate();
-                    current.allowed.users = _.cloneDeep(await toSelectMenu(
-                        interaction,
-                        m,
-                        current.allowed.users,
-                        "member",
-                        "Word Filter"
-                    ));
+                    current.allowed.users = _.cloneDeep(
+                        await toSelectMenu(interaction, m, current.allowed.users, "member", "Word Filter")
+                    );
                     unsavedChanges = true;
                     break;
                 }
                 case "allowedRoles": {
                     await i.deferUpdate();
-                    current.allowed.roles = _.cloneDeep(await toSelectMenu(
-                        interaction,
-                        m,
-                        current.allowed.roles,
-                        "role",
-                        "Word Filter"
-                    ));
+                    current.allowed.roles = _.cloneDeep(
+                        await toSelectMenu(interaction, m, current.allowed.roles, "role", "Word Filter")
+                    );
                     unsavedChanges = true;
                     break;
                 }
                 case "allowedChannels": {
                     await i.deferUpdate();
-                    current.allowed.channels = _.cloneDeep(await toSelectMenu(
-                        interaction,
-                        m,
-                        current.allowed.channels,
-                        "channel",
-                        "Word Filter"
-                    ));
+                    current.allowed.channels = _.cloneDeep(
+                        await toSelectMenu(interaction, m, current.allowed.channels, "channel", "Word Filter")
+                    );
                     unsavedChanges = true;
                     break;
                 }
@@ -556,35 +544,23 @@
             await i.deferUpdate();
             switch (i.values[0]) {
                 case "users": {
-                    current.allowed.users = _.cloneDeep(await toSelectMenu(
-                        interaction,
-                        m,
-                        current.allowed.users,
-                        "member",
-                        "Invite Settings"
-                    ));
+                    current.allowed.users = _.cloneDeep(
+                        await toSelectMenu(interaction, m, current.allowed.users, "member", "Invite Settings")
+                    );
                     unsavedChanges = true;
                     break;
                 }
                 case "roles": {
-                    current.allowed.roles = _.cloneDeep(await toSelectMenu(
-                        interaction,
-                        m,
-                        current.allowed.roles,
-                        "role",
-                        "Invite Settings"
-                    ));
+                    current.allowed.roles = _.cloneDeep(
+                        await toSelectMenu(interaction, m, current.allowed.roles, "role", "Invite Settings")
+                    );
                     unsavedChanges = true;
                     break;
                 }
                 case "channels": {
-                    current.allowed.channels = _.cloneDeep(await toSelectMenu(
-                        interaction,
-                        m,
-                        current.allowed.channels,
-                        "channel",
-                        "Invite Settings"
-                    ));
+                    current.allowed.channels = _.cloneDeep(
+                        await toSelectMenu(interaction, m, current.allowed.channels, "channel", "Invite Settings")
+                    );
                     unsavedChanges = true;
                     break;
                 }
@@ -803,13 +779,15 @@
                         }
                         case "roles": {
                             await i.deferUpdate();
-                            current.allowed.rolesToMention = _.cloneDeep(await toSelectMenu(
-                                interaction,
-                                m,
-                                current.allowed.rolesToMention,
-                                "role",
-                                "Mention Settings"
-                            ));
+                            current.allowed.rolesToMention = _.cloneDeep(
+                                await toSelectMenu(
+                                    interaction,
+                                    m,
+                                    current.allowed.rolesToMention,
+                                    "role",
+                                    "Mention Settings"
+                                )
+                            );
                             unsavedChanges = true;
                             break;
                         }
@@ -820,35 +798,29 @@
                     await i.deferUpdate();
                     switch (i.values[0]) {
                         case "users": {
-                            current.allowed.users = _.cloneDeep(await toSelectMenu(
-                                interaction,
-                                m,
-                                current.allowed.users,
-                                "member",
-                                "Mention Settings"
-                            ));
+                            current.allowed.users = _.cloneDeep(
+                                await toSelectMenu(interaction, m, current.allowed.users, "member", "Mention Settings")
+                            );
                             unsavedChanges = true;
                             break;
                         }
                         case "roles": {
-                            current.allowed.roles = _.cloneDeep(await toSelectMenu(
-                                interaction,
-                                m,
-                                current.allowed.roles,
-                                "role",
-                                "Mention Settings"
-                            ));
+                            current.allowed.roles = _.cloneDeep(
+                                await toSelectMenu(interaction, m, current.allowed.roles, "role", "Mention Settings")
+                            );
                             unsavedChanges = true;
                             break;
                         }
                         case "channels": {
-                            current.allowed.channels = _.cloneDeep(await toSelectMenu(
-                                interaction,
-                                m,
-                                current.allowed.channels,
-                                "channel",
-                                "Mention Settings"
-                            ));
+                            current.allowed.channels = _.cloneDeep(
+                                await toSelectMenu(
+                                    interaction,
+                                    m,
+                                    current.allowed.channels,
+                                    "channel",
+                                    "Mention Settings"
+                                )
+                            );
                             unsavedChanges = true;
                             break;
                         }
@@ -1004,24 +976,16 @@
                 case "allowed": {
                     switch (i.values[0]) {
                         case "users": {
-                            current.allowed.users = _.cloneDeep(await toSelectMenu(
-                                interaction,
-                                m,
-                                current.allowed.users,
-                                "member",
-                                "Mention Settings"
-                            ));
+                            current.allowed.users = _.cloneDeep(
+                                await toSelectMenu(interaction, m, current.allowed.users, "member", "Mention Settings")
+                            );
                             unsavedChanges = true;
                             break;
                         }
                         case "roles": {
-                            current.allowed.roles = _.cloneDeep(await toSelectMenu(
-                                interaction,
-                                m,
-                                current.allowed.roles,
-                                "role",
-                                "Mention Settings"
-                            ));
+                            current.allowed.roles = _.cloneDeep(
+                                await toSelectMenu(interaction, m, current.allowed.roles, "role", "Mention Settings")
+                            );
                             unsavedChanges = true;
                             break;
                         }
