diff --git a/backend/src/RegExpRunner.ts b/backend/src/RegExpRunner.ts
index d66df414..96d39be3 100644
--- a/backend/src/RegExpRunner.ts
+++ b/backend/src/RegExpRunner.ts
@@ -1,7 +1,7 @@
-import { RegExpWorker, TimeoutError } from "regexp-worker";
-import { CooldownManager } from "knub";
-import { MINUTES, SECONDS } from "./utils";
 import { EventEmitter } from "events";
+import { CooldownManager } from "knub";
+import { RegExpWorker, TimeoutError } from "regexp-worker";
+import { MINUTES, SECONDS } from "./utils";
 import Timeout = NodeJS.Timeout;
 
 const isTimeoutError = (a): a is TimeoutError => {
diff --git a/backend/src/api/archives.ts b/backend/src/api/archives.ts
index b1330a98..3c1ae702 100644
--- a/backend/src/api/archives.ts
+++ b/backend/src/api/archives.ts
@@ -1,7 +1,7 @@
 import express, { Request, Response } from "express";
+import moment from "moment-timezone";
 import { GuildArchives } from "../data/GuildArchives";
 import { notFound } from "./responses";
-import moment from "moment-timezone";
 
 export function initArchives(app: express.Express) {
   const archives = new GuildArchives(null);
diff --git a/backend/src/api/auth.ts b/backend/src/api/auth.ts
index 2a5d3445..c891ac63 100644
--- a/backend/src/api/auth.ts
+++ b/backend/src/api/auth.ts
@@ -1,13 +1,13 @@
 import express, { Request, Response } from "express";
-import passport from "passport";
-import OAuth2Strategy from "passport-oauth2";
-import { Strategy as CustomStrategy } from "passport-custom";
-import { ApiLogins } from "../data/ApiLogins";
-import pick from "lodash.pick";
 import https from "https";
+import pick from "lodash.pick";
+import passport from "passport";
+import { Strategy as CustomStrategy } from "passport-custom";
+import OAuth2Strategy from "passport-oauth2";
+import { ApiLogins } from "../data/ApiLogins";
+import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments";
 import { ApiUserInfo } from "../data/ApiUserInfo";
 import { ApiUserInfoData } from "../data/entities/ApiUserInfo";
-import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments";
 import { ok } from "./responses";
 
 interface IPassportApiUser {
diff --git a/backend/src/api/docs.ts b/backend/src/api/docs.ts
index 22a70fa0..3009a4e1 100644
--- a/backend/src/api/docs.ts
+++ b/backend/src/api/docs.ts
@@ -1,7 +1,7 @@
 import express from "express";
 import { guildPlugins } from "../plugins/availablePlugins";
-import { notFound } from "./responses";
 import { indentLines } from "../utils";
+import { notFound } from "./responses";
 
 function formatConfigSchema(schema) {
   if (schema._tag === "InterfaceType" || schema._tag === "PartialType") {
diff --git a/backend/src/api/guilds.ts b/backend/src/api/guilds.ts
index 213dcb44..8969b29c 100644
--- a/backend/src/api/guilds.ts
+++ b/backend/src/api/guilds.ts
@@ -1,13 +1,13 @@
-import express, { Request, Response } from "express";
-import { AllowedGuilds } from "../data/AllowedGuilds";
-import { clientError, ok, serverError, unauthorized } from "./responses";
-import { Configs } from "../data/Configs";
-import { validateGuildConfig } from "../configValidator";
-import yaml, { YAMLException } from "js-yaml";
-import { apiTokenAuthHandlers } from "./auth";
 import { ApiPermissions } from "@shared/apiPermissions";
-import { hasGuildPermission, requireGuildPermission } from "./permissions";
+import express, { Request, Response } from "express";
+import yaml, { YAMLException } from "js-yaml";
+import { validateGuildConfig } from "../configValidator";
+import { AllowedGuilds } from "../data/AllowedGuilds";
 import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments";
+import { Configs } from "../data/Configs";
+import { apiTokenAuthHandlers } from "./auth";
+import { hasGuildPermission, requireGuildPermission } from "./permissions";
+import { clientError, ok, serverError, unauthorized } from "./responses";
 
 const apiPermissionAssignments = new ApiPermissionAssignments();
 
diff --git a/backend/src/api/index.ts b/backend/src/api/index.ts
index 7579c34e..671f6c8b 100644
--- a/backend/src/api/index.ts
+++ b/backend/src/api/index.ts
@@ -1,8 +1,7 @@
+import { connect } from "../data/db";
+import { setIsAPI } from "../globals";
 import "./loadEnv";
 
-import { connect } from "../data/db";
-import path from "path";
-import { setIsAPI } from "../globals";
 
 if (!process.env.KEY) {
   // tslint:disable-next-line:no-console
diff --git a/backend/src/api/permissions.ts b/backend/src/api/permissions.ts
index 7433734a..9552aaf4 100644
--- a/backend/src/api/permissions.ts
+++ b/backend/src/api/permissions.ts
@@ -1,7 +1,7 @@
 import { ApiPermissions, hasPermission, permissionArrToSet } from "@shared/apiPermissions";
-import { isStaff } from "../staff";
-import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments";
 import { Request, Response } from "express";
+import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments";
+import { isStaff } from "../staff";
 import { unauthorized } from "./responses";
 
 const apiPermissionAssignments = new ApiPermissionAssignments();
diff --git a/backend/src/api/staff.ts b/backend/src/api/staff.ts
index 82109735..08f0dc09 100644
--- a/backend/src/api/staff.ts
+++ b/backend/src/api/staff.ts
@@ -1,6 +1,6 @@
 import express, { Request, Response } from "express";
-import { apiTokenAuthHandlers } from "./auth";
 import { isStaff } from "../staff";
+import { apiTokenAuthHandlers } from "./auth";
 
 export function initStaff(app: express.Express) {
   const staffRouter = express.Router();
diff --git a/backend/src/api/start.ts b/backend/src/api/start.ts
index 0932edd4..2e3e2c7d 100644
--- a/backend/src/api/start.ts
+++ b/backend/src/api/start.ts
@@ -1,11 +1,11 @@
-import { clientError, error, notFound } from "./responses";
-import express from "express";
 import cors from "cors";
-import { initAuth } from "./auth";
-import { initGuildsAPI } from "./guilds";
-import { initArchives } from "./archives";
-import { initDocs } from "./docs";
+import express from "express";
 import { TokenError } from "passport-oauth2";
+import { initArchives } from "./archives";
+import { initAuth } from "./auth";
+import { initDocs } from "./docs";
+import { initGuildsAPI } from "./guilds";
+import { clientError, error, notFound } from "./responses";
 
 const app = express();
 
diff --git a/backend/src/commandTypes.ts b/backend/src/commandTypes.ts
index 647dde5c..4790dc68 100644
--- a/backend/src/commandTypes.ts
+++ b/backend/src/commandTypes.ts
@@ -1,21 +1,21 @@
-import {
-  channelMentionRegex,
-  convertDelayStringToMS,
-  disableCodeBlocks,
-  disableInlineCode,
-  isValidSnowflake,
-  resolveMember,
-  resolveUser,
-  resolveUserId,
-  roleMentionRegex,
-  UnknownUser,
-} from "./utils";
-import { baseTypeConverters, baseCommandParameterTypeHelpers, CommandContext, TypeConversionError } from "knub";
+import { GuildChannel, GuildMember, User } from "discord.js";
+import { baseCommandParameterTypeHelpers, baseTypeConverters, CommandContext, TypeConversionError } from "knub";
 import { createTypeHelper } from "knub-command-manager";
+import {
+    channelMentionRegex,
+    convertDelayStringToMS,
+    disableCodeBlocks,
+    disableInlineCode,
+    isValidSnowflake,
+    resolveMember,
+    resolveUser,
+    resolveUserId,
+    roleMentionRegex,
+    UnknownUser
+} from "./utils";
+import { isValidTimezone } from "./utils/isValidTimezone";
 import { MessageTarget, resolveMessageTarget } from "./utils/resolveMessageTarget";
 import { inputPatternToRegExp } from "./validatorUtils";
-import { isValidTimezone } from "./utils/isValidTimezone";
-import { GuildChannel, GuildMember, User } from "discord.js";
 
 export const commandTypes = {
   ...baseTypeConverters,
diff --git a/backend/src/configValidator.ts b/backend/src/configValidator.ts
index 9ea4e804..0c45c611 100644
--- a/backend/src/configValidator.ts
+++ b/backend/src/configValidator.ts
@@ -1,10 +1,9 @@
-import * as t from "io-ts";
-import { guildPlugins } from "./plugins/availablePlugins";
-import { decodeAndValidateStrict, StrictValidationError } from "./validatorUtils";
-import { ZeppelinPlugin } from "./plugins/ZeppelinPlugin";
-import { PartialZeppelinGuildConfigSchema, ZeppelinGuildConfig } from "./types";
 import { configUtils, ConfigValidationError, PluginOptions } from "knub";
 import moment from "moment-timezone";
+import { guildPlugins } from "./plugins/availablePlugins";
+import { ZeppelinPlugin } from "./plugins/ZeppelinPlugin";
+import { PartialZeppelinGuildConfigSchema, ZeppelinGuildConfig } from "./types";
+import { decodeAndValidateStrict, StrictValidationError } from "./validatorUtils";
 
 const pluginNameToPlugin = new Map<string, ZeppelinPlugin>();
 for (const plugin of guildPlugins) {
diff --git a/backend/src/data/AllowedGuilds.ts b/backend/src/data/AllowedGuilds.ts
index 0efe9770..e3399fea 100644
--- a/backend/src/data/AllowedGuilds.ts
+++ b/backend/src/data/AllowedGuilds.ts
@@ -1,7 +1,7 @@
-import { AllowedGuild } from "./entities/AllowedGuild";
 import { getRepository, Repository } from "typeorm";
-import { BaseRepository } from "./BaseRepository";
 import { ApiPermissionTypes } from "./ApiPermissionAssignments";
+import { BaseRepository } from "./BaseRepository";
+import { AllowedGuild } from "./entities/AllowedGuild";
 
 export class AllowedGuilds extends BaseRepository {
   private allowedGuilds: Repository<AllowedGuild>;
diff --git a/backend/src/data/ApiLogins.ts b/backend/src/data/ApiLogins.ts
index 645fcd47..23bb7e49 100644
--- a/backend/src/data/ApiLogins.ts
+++ b/backend/src/data/ApiLogins.ts
@@ -1,11 +1,11 @@
-import { getRepository, Repository } from "typeorm";
-import { ApiLogin } from "./entities/ApiLogin";
-import { BaseRepository } from "./BaseRepository";
 import crypto from "crypto";
 import moment from "moment-timezone";
+import { getRepository, Repository } from "typeorm";
 // tslint:disable-next-line:no-submodule-imports
 import uuidv4 from "uuid/v4";
 import { DAYS, DBDateFormat } from "../utils";
+import { BaseRepository } from "./BaseRepository";
+import { ApiLogin } from "./entities/ApiLogin";
 
 const LOGIN_EXPIRY_TIME = 1 * DAYS;
 
diff --git a/backend/src/data/ApiPermissionAssignments.ts b/backend/src/data/ApiPermissionAssignments.ts
index dbcc0e26..29686adc 100644
--- a/backend/src/data/ApiPermissionAssignments.ts
+++ b/backend/src/data/ApiPermissionAssignments.ts
@@ -1,7 +1,7 @@
-import { getRepository, Repository } from "typeorm";
-import { ApiPermissionAssignment } from "./entities/ApiPermissionAssignment";
-import { BaseRepository } from "./BaseRepository";
 import { ApiPermissions } from "@shared/apiPermissions";
+import { getRepository, Repository } from "typeorm";
+import { BaseRepository } from "./BaseRepository";
+import { ApiPermissionAssignment } from "./entities/ApiPermissionAssignment";
 
 export enum ApiPermissionTypes {
   User = "USER",
diff --git a/backend/src/data/ApiUserInfo.ts b/backend/src/data/ApiUserInfo.ts
index 09d9df75..73633d01 100644
--- a/backend/src/data/ApiUserInfo.ts
+++ b/backend/src/data/ApiUserInfo.ts
@@ -1,9 +1,9 @@
+import moment from "moment-timezone";
 import { getRepository, Repository } from "typeorm";
-import { ApiUserInfo as ApiUserInfoEntity, ApiUserInfoData } from "./entities/ApiUserInfo";
+import { DBDateFormat } from "../utils";
 import { BaseRepository } from "./BaseRepository";
 import { connection } from "./db";
-import moment from "moment-timezone";
-import { DBDateFormat } from "../utils";
+import { ApiUserInfo as ApiUserInfoEntity, ApiUserInfoData } from "./entities/ApiUserInfo";
 
 export class ApiUserInfo extends BaseRepository {
   private apiUserInfo: Repository<ApiUserInfoEntity>;
diff --git a/backend/src/data/Configs.ts b/backend/src/data/Configs.ts
index 054ce255..3e0882f0 100644
--- a/backend/src/data/Configs.ts
+++ b/backend/src/data/Configs.ts
@@ -1,10 +1,10 @@
-import { Config } from "./entities/Config";
 import { getRepository, Repository } from "typeorm";
-import { connection } from "./db";
-import { BaseRepository } from "./BaseRepository";
 import { isAPI } from "../globals";
 import { HOURS, SECONDS } from "../utils";
+import { BaseRepository } from "./BaseRepository";
 import { cleanupConfigs } from "./cleanup/configs";
+import { connection } from "./db";
+import { Config } from "./entities/Config";
 
 if (isAPI()) {
   const CLEANUP_INTERVAL = 1 * HOURS;
diff --git a/backend/src/data/GuildAntiraidLevels.ts b/backend/src/data/GuildAntiraidLevels.ts
index 7f1321c1..5775bc91 100644
--- a/backend/src/data/GuildAntiraidLevels.ts
+++ b/backend/src/data/GuildAntiraidLevels.ts
@@ -1,5 +1,5 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 import { AntiraidLevel } from "./entities/AntiraidLevel";
 
 export class GuildAntiraidLevels extends BaseGuildRepository {
diff --git a/backend/src/data/GuildArchives.ts b/backend/src/data/GuildArchives.ts
index 9c1ea69c..e99d8835 100644
--- a/backend/src/data/GuildArchives.ts
+++ b/backend/src/data/GuildArchives.ts
@@ -1,11 +1,11 @@
-import moment from "moment-timezone";
-import { ArchiveEntry } from "./entities/ArchiveEntry";
-import { getRepository, Repository } from "typeorm";
-import { BaseGuildRepository } from "./BaseGuildRepository";
-import { trimLines } from "../utils";
-import { SavedMessage } from "./entities/SavedMessage";
-import { renderTemplate } from "../templateFormatter";
 import { Guild } from "discord.js";
+import moment from "moment-timezone";
+import { getRepository, Repository } from "typeorm";
+import { renderTemplate } from "../templateFormatter";
+import { trimLines } from "../utils";
+import { BaseGuildRepository } from "./BaseGuildRepository";
+import { ArchiveEntry } from "./entities/ArchiveEntry";
+import { SavedMessage } from "./entities/SavedMessage";
 
 const DEFAULT_EXPIRY_DAYS = 30;
 
diff --git a/backend/src/data/GuildAutoReactions.ts b/backend/src/data/GuildAutoReactions.ts
index 094a1a4a..27fd737d 100644
--- a/backend/src/data/GuildAutoReactions.ts
+++ b/backend/src/data/GuildAutoReactions.ts
@@ -1,5 +1,5 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 import { AutoReaction } from "./entities/AutoReaction";
 
 export class GuildAutoReactions extends BaseGuildRepository {
diff --git a/backend/src/data/GuildCases.ts b/backend/src/data/GuildCases.ts
index 67a1ad41..349b1ce1 100644
--- a/backend/src/data/GuildCases.ts
+++ b/backend/src/data/GuildCases.ts
@@ -1,11 +1,10 @@
+import { getRepository, In, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
+import { CaseTypes } from "./CaseTypes";
+import { connection } from "./db";
 import { Case } from "./entities/Case";
 import { CaseNote } from "./entities/CaseNote";
-import { BaseGuildRepository } from "./BaseGuildRepository";
-import { getRepository, In, Repository } from "typeorm";
-import { DBDateFormat, disableLinkPreviews } from "../utils";
-import { CaseTypes } from "./CaseTypes";
 import moment = require("moment-timezone");
-import { connection } from "./db";
 
 const CASE_SUMMARY_REASON_MAX_LENGTH = 300;
 
diff --git a/backend/src/data/GuildCounters.ts b/backend/src/data/GuildCounters.ts
index 4a64aaea..8daf0b7c 100644
--- a/backend/src/data/GuildCounters.ts
+++ b/backend/src/data/GuildCounters.ts
@@ -1,18 +1,18 @@
+import moment from "moment-timezone";
+import { FindConditions, getRepository, In, IsNull, Not, Repository } from "typeorm";
+import { Queue } from "../Queue";
+import { DAYS, DBDateFormat, HOURS, MINUTES } from "../utils";
 import { BaseGuildRepository } from "./BaseGuildRepository";
-import { FindConditions, getRepository, In, IsNull, LessThan, Not, Repository } from "typeorm";
+import { connection } from "./db";
 import { Counter } from "./entities/Counter";
-import { CounterValue } from "./entities/CounterValue";
 import {
-  CounterTrigger,
-  isValidCounterComparisonOp,
-  TRIGGER_COMPARISON_OPS,
-  TriggerComparisonOp,
+    CounterTrigger,
+    isValidCounterComparisonOp,
+
+    TriggerComparisonOp
 } from "./entities/CounterTrigger";
 import { CounterTriggerState } from "./entities/CounterTriggerState";
-import moment from "moment-timezone";
-import { DAYS, DBDateFormat, HOURS, MINUTES } from "../utils";
-import { connection } from "./db";
-import { Queue } from "../Queue";
+import { CounterValue } from "./entities/CounterValue";
 
 const DELETE_UNUSED_COUNTERS_AFTER = 1 * DAYS;
 const DELETE_UNUSED_COUNTER_TRIGGERS_AFTER = 1 * DAYS;
diff --git a/backend/src/data/GuildEvents.ts b/backend/src/data/GuildEvents.ts
index 3a2b6489..ead809ab 100644
--- a/backend/src/data/GuildEvents.ts
+++ b/backend/src/data/GuildEvents.ts
@@ -1,5 +1,5 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { QueuedEventEmitter } from "../QueuedEventEmitter";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 
 export class GuildEvents extends BaseGuildRepository {
   private queuedEventEmitter: QueuedEventEmitter;
diff --git a/backend/src/data/GuildMemberTimezones.ts b/backend/src/data/GuildMemberTimezones.ts
index 9e1a1b68..6c4ef82b 100644
--- a/backend/src/data/GuildMemberTimezones.ts
+++ b/backend/src/data/GuildMemberTimezones.ts
@@ -1,7 +1,7 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
-import { MemberTimezone } from "./entities/MemberTimezone";
 import { getRepository, Repository } from "typeorm/index";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 import { connection } from "./db";
+import { MemberTimezone } from "./entities/MemberTimezone";
 
 export class GuildMemberTimezones extends BaseGuildRepository {
   protected memberTimezones: Repository<MemberTimezone>;
diff --git a/backend/src/data/GuildMutes.ts b/backend/src/data/GuildMutes.ts
index 93fcfdc5..35f86fc0 100644
--- a/backend/src/data/GuildMutes.ts
+++ b/backend/src/data/GuildMutes.ts
@@ -1,7 +1,7 @@
 import moment from "moment-timezone";
-import { Mute } from "./entities/Mute";
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { Brackets, getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
+import { Mute } from "./entities/Mute";
 
 export class GuildMutes extends BaseGuildRepository {
   private mutes: Repository<Mute>;
diff --git a/backend/src/data/GuildNicknameHistory.ts b/backend/src/data/GuildNicknameHistory.ts
index 60f8f419..51ed863c 100644
--- a/backend/src/data/GuildNicknameHistory.ts
+++ b/backend/src/data/GuildNicknameHistory.ts
@@ -1,9 +1,9 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { getRepository, In, Repository } from "typeorm";
-import { NicknameHistoryEntry } from "./entities/NicknameHistoryEntry";
-import { MINUTES, SECONDS } from "../utils";
 import { isAPI } from "../globals";
+import { MINUTES, SECONDS } from "../utils";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 import { cleanupNicknames } from "./cleanup/nicknames";
+import { NicknameHistoryEntry } from "./entities/NicknameHistoryEntry";
 
 if (!isAPI()) {
   const CLEANUP_INTERVAL = 5 * MINUTES;
diff --git a/backend/src/data/GuildPersistedData.ts b/backend/src/data/GuildPersistedData.ts
index 2120916b..4dd8cffd 100644
--- a/backend/src/data/GuildPersistedData.ts
+++ b/backend/src/data/GuildPersistedData.ts
@@ -1,6 +1,6 @@
-import { PersistedData } from "./entities/PersistedData";
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
+import { PersistedData } from "./entities/PersistedData";
 
 export interface IPartialPersistData {
   roles?: string[];
diff --git a/backend/src/data/GuildPingableRoles.ts b/backend/src/data/GuildPingableRoles.ts
index fa3eda28..c8fd6f05 100644
--- a/backend/src/data/GuildPingableRoles.ts
+++ b/backend/src/data/GuildPingableRoles.ts
@@ -1,5 +1,5 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 import { PingableRole } from "./entities/PingableRole";
 
 export class GuildPingableRoles extends BaseGuildRepository {
diff --git a/backend/src/data/GuildReactionRoles.ts b/backend/src/data/GuildReactionRoles.ts
index d724493f..a3d7e30b 100644
--- a/backend/src/data/GuildReactionRoles.ts
+++ b/backend/src/data/GuildReactionRoles.ts
@@ -1,6 +1,6 @@
-import { ReactionRole } from "./entities/ReactionRole";
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
+import { ReactionRole } from "./entities/ReactionRole";
 
 export class GuildReactionRoles extends BaseGuildRepository {
   private reactionRoles: Repository<ReactionRole>;
diff --git a/backend/src/data/GuildReminders.ts b/backend/src/data/GuildReminders.ts
index b370b465..b665569f 100644
--- a/backend/src/data/GuildReminders.ts
+++ b/backend/src/data/GuildReminders.ts
@@ -1,5 +1,5 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 import { Reminder } from "./entities/Reminder";
 
 export class GuildReminders extends BaseGuildRepository {
diff --git a/backend/src/data/GuildSavedMessages.ts b/backend/src/data/GuildSavedMessages.ts
index 423767ae..b80fae0f 100644
--- a/backend/src/data/GuildSavedMessages.ts
+++ b/backend/src/data/GuildSavedMessages.ts
@@ -1,12 +1,12 @@
-import { getRepository, Repository } from "typeorm";
-import { BaseGuildRepository } from "./BaseGuildRepository";
-import { ISavedMessageData, SavedMessage } from "./entities/SavedMessage";
-import { QueuedEventEmitter } from "../QueuedEventEmitter";
-import moment from "moment-timezone";
-import { MINUTES, SECONDS } from "../utils";
-import { isAPI } from "../globals";
-import { cleanupMessages } from "./cleanup/messages";
 import { GuildChannel, Message } from "discord.js";
+import moment from "moment-timezone";
+import { getRepository, Repository } from "typeorm";
+import { isAPI } from "../globals";
+import { QueuedEventEmitter } from "../QueuedEventEmitter";
+import { MINUTES, SECONDS } from "../utils";
+import { BaseGuildRepository } from "./BaseGuildRepository";
+import { cleanupMessages } from "./cleanup/messages";
+import { ISavedMessageData, SavedMessage } from "./entities/SavedMessage";
 
 if (!isAPI()) {
   const CLEANUP_INTERVAL = 5 * MINUTES;
diff --git a/backend/src/data/GuildScheduledPosts.ts b/backend/src/data/GuildScheduledPosts.ts
index af621434..c302b81e 100644
--- a/backend/src/data/GuildScheduledPosts.ts
+++ b/backend/src/data/GuildScheduledPosts.ts
@@ -1,5 +1,5 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 import { ScheduledPost } from "./entities/ScheduledPost";
 
 export class GuildScheduledPosts extends BaseGuildRepository {
diff --git a/backend/src/data/GuildSlowmodes.ts b/backend/src/data/GuildSlowmodes.ts
index 9e4281db..b6452490 100644
--- a/backend/src/data/GuildSlowmodes.ts
+++ b/backend/src/data/GuildSlowmodes.ts
@@ -1,8 +1,8 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
+import moment from "moment-timezone";
 import { getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 import { SlowmodeChannel } from "./entities/SlowmodeChannel";
 import { SlowmodeUser } from "./entities/SlowmodeUser";
-import moment from "moment-timezone";
 
 export class GuildSlowmodes extends BaseGuildRepository {
   private slowmodeChannels: Repository<SlowmodeChannel>;
diff --git a/backend/src/data/GuildStarboardMessages.ts b/backend/src/data/GuildStarboardMessages.ts
index c01bb8dc..0e932928 100644
--- a/backend/src/data/GuildStarboardMessages.ts
+++ b/backend/src/data/GuildStarboardMessages.ts
@@ -1,5 +1,5 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 import { StarboardMessage } from "./entities/StarboardMessage";
 
 export class GuildStarboardMessages extends BaseGuildRepository {
diff --git a/backend/src/data/GuildStarboardReactions.ts b/backend/src/data/GuildStarboardReactions.ts
index 5094491e..413b7120 100644
--- a/backend/src/data/GuildStarboardReactions.ts
+++ b/backend/src/data/GuildStarboardReactions.ts
@@ -1,5 +1,5 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 import { StarboardReaction } from "./entities/StarboardReaction";
 
 export class GuildStarboardReactions extends BaseGuildRepository {
diff --git a/backend/src/data/GuildStats.ts b/backend/src/data/GuildStats.ts
index a0ca75a6..d70623dd 100644
--- a/backend/src/data/GuildStats.ts
+++ b/backend/src/data/GuildStats.ts
@@ -1,5 +1,5 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 import { StatValue } from "./entities/StatValue";
 
 export class GuildStats extends BaseGuildRepository {
diff --git a/backend/src/data/GuildTags.ts b/backend/src/data/GuildTags.ts
index 385bfd80..76206164 100644
--- a/backend/src/data/GuildTags.ts
+++ b/backend/src/data/GuildTags.ts
@@ -1,6 +1,6 @@
-import { Tag } from "./entities/Tag";
 import { getRepository, Repository } from "typeorm";
 import { BaseGuildRepository } from "./BaseGuildRepository";
+import { Tag } from "./entities/Tag";
 import { TagResponse } from "./entities/TagResponse";
 
 export class GuildTags extends BaseGuildRepository {
diff --git a/backend/src/data/GuildTempbans.ts b/backend/src/data/GuildTempbans.ts
index 76e126c5..f5f52143 100644
--- a/backend/src/data/GuildTempbans.ts
+++ b/backend/src/data/GuildTempbans.ts
@@ -1,7 +1,6 @@
 import moment from "moment-timezone";
-import { Mute } from "./entities/Mute";
+import { getRepository, Repository } from "typeorm";
 import { BaseGuildRepository } from "./BaseGuildRepository";
-import { Brackets, getRepository, Repository } from "typeorm";
 import { Tempban } from "./entities/Tempban";
 
 export class GuildTempbans extends BaseGuildRepository {
diff --git a/backend/src/data/GuildVCAlerts.ts b/backend/src/data/GuildVCAlerts.ts
index 6acc35e9..4c64c197 100644
--- a/backend/src/data/GuildVCAlerts.ts
+++ b/backend/src/data/GuildVCAlerts.ts
@@ -1,5 +1,5 @@
-import { BaseGuildRepository } from "./BaseGuildRepository";
 import { getRepository, Repository } from "typeorm";
+import { BaseGuildRepository } from "./BaseGuildRepository";
 import { VCAlert } from "./entities/VCAlert";
 
 export class GuildVCAlerts extends BaseGuildRepository {
diff --git a/backend/src/data/Supporters.ts b/backend/src/data/Supporters.ts
index 26c294c7..58b1b2d3 100644
--- a/backend/src/data/Supporters.ts
+++ b/backend/src/data/Supporters.ts
@@ -1,5 +1,5 @@
-import { BaseRepository } from "./BaseRepository";
 import { getRepository, Repository } from "typeorm";
+import { BaseRepository } from "./BaseRepository";
 import { Supporter } from "./entities/Supporter";
 
 export class Supporters extends BaseRepository {
diff --git a/backend/src/data/UsernameHistory.ts b/backend/src/data/UsernameHistory.ts
index bcc5647a..c17a747c 100644
--- a/backend/src/data/UsernameHistory.ts
+++ b/backend/src/data/UsernameHistory.ts
@@ -1,9 +1,9 @@
 import { getRepository, In, Repository } from "typeorm";
-import { UsernameHistoryEntry } from "./entities/UsernameHistoryEntry";
+import { isAPI } from "../globals";
 import { MINUTES, SECONDS } from "../utils";
 import { BaseRepository } from "./BaseRepository";
-import { isAPI } from "../globals";
 import { cleanupUsernames } from "./cleanup/usernames";
+import { UsernameHistoryEntry } from "./entities/UsernameHistoryEntry";
 
 if (!isAPI()) {
   const CLEANUP_INTERVAL = 5 * MINUTES;
diff --git a/backend/src/data/cleanup/configs.ts b/backend/src/data/cleanup/configs.ts
index 04c76044..252b6c6d 100644
--- a/backend/src/data/cleanup/configs.ts
+++ b/backend/src/data/cleanup/configs.ts
@@ -1,8 +1,8 @@
-import { connection } from "../db";
-import { getRepository, In } from "typeorm";
-import { Config } from "../entities/Config";
 import moment from "moment-timezone";
+import { getRepository, In } from "typeorm";
 import { DBDateFormat } from "../../utils";
+import { connection } from "../db";
+import { Config } from "../entities/Config";
 
 const CLEAN_PER_LOOP = 50;
 
diff --git a/backend/src/data/cleanup/messages.ts b/backend/src/data/cleanup/messages.ts
index 1b9f8427..06d55c99 100644
--- a/backend/src/data/cleanup/messages.ts
+++ b/backend/src/data/cleanup/messages.ts
@@ -1,8 +1,8 @@
-import { DAYS, DBDateFormat, MINUTES } from "../../utils";
-import { getRepository, In } from "typeorm";
-import { SavedMessage } from "../entities/SavedMessage";
 import moment from "moment-timezone";
+import { getRepository, In } from "typeorm";
+import { DAYS, DBDateFormat, MINUTES } from "../../utils";
 import { connection } from "../db";
+import { SavedMessage } from "../entities/SavedMessage";
 
 /**
  * How long message edits, deletions, etc. will include the original message content.
diff --git a/backend/src/data/cleanup/nicknames.ts b/backend/src/data/cleanup/nicknames.ts
index e48b2670..4907e004 100644
--- a/backend/src/data/cleanup/nicknames.ts
+++ b/backend/src/data/cleanup/nicknames.ts
@@ -1,8 +1,8 @@
-import { getRepository, In } from "typeorm";
 import moment from "moment-timezone";
-import { NicknameHistoryEntry } from "../entities/NicknameHistoryEntry";
+import { getRepository, In } from "typeorm";
 import { DAYS, DBDateFormat } from "../../utils";
 import { connection } from "../db";
+import { NicknameHistoryEntry } from "../entities/NicknameHistoryEntry";
 
 export const NICKNAME_RETENTION_PERIOD = 30 * DAYS;
 const CLEAN_PER_LOOP = 500;
diff --git a/backend/src/data/cleanup/usernames.ts b/backend/src/data/cleanup/usernames.ts
index 6bcca3d2..eea441d5 100644
--- a/backend/src/data/cleanup/usernames.ts
+++ b/backend/src/data/cleanup/usernames.ts
@@ -1,8 +1,8 @@
-import { getRepository, In } from "typeorm";
 import moment from "moment-timezone";
-import { UsernameHistoryEntry } from "../entities/UsernameHistoryEntry";
+import { getRepository, In } from "typeorm";
 import { DAYS, DBDateFormat } from "../../utils";
 import { connection } from "../db";
+import { UsernameHistoryEntry } from "../entities/UsernameHistoryEntry";
 
 export const USERNAME_RETENTION_PERIOD = 30 * DAYS;
 const CLEAN_PER_LOOP = 500;
diff --git a/backend/src/data/db.ts b/backend/src/data/db.ts
index 30383b14..9888d0b5 100644
--- a/backend/src/data/db.ts
+++ b/backend/src/data/db.ts
@@ -1,5 +1,5 @@
-import { SimpleError } from "../SimpleError";
 import { Connection, createConnection } from "typeorm";
+import { SimpleError } from "../SimpleError";
 
 let connectionPromise: Promise<Connection>;
 
diff --git a/backend/src/data/encryptedJsonTransformer.ts b/backend/src/data/encryptedJsonTransformer.ts
index 01b6080c..38272ebc 100644
--- a/backend/src/data/encryptedJsonTransformer.ts
+++ b/backend/src/data/encryptedJsonTransformer.ts
@@ -1,5 +1,5 @@
-import { decrypt, encrypt } from "../utils/crypt";
 import { ValueTransformer } from "typeorm";
+import { decrypt, encrypt } from "../utils/crypt";
 
 interface EncryptedJsonTransformer<T> extends ValueTransformer {
   from(dbValue: any): T;
diff --git a/backend/src/data/encryptedTextTransformer.ts b/backend/src/data/encryptedTextTransformer.ts
index 353c5d72..7d0432ae 100644
--- a/backend/src/data/encryptedTextTransformer.ts
+++ b/backend/src/data/encryptedTextTransformer.ts
@@ -1,5 +1,5 @@
-import { decrypt, encrypt } from "../utils/crypt";
 import { ValueTransformer } from "typeorm";
+import { decrypt, encrypt } from "../utils/crypt";
 
 interface EncryptedTextTransformer extends ValueTransformer {
   from(dbValue: any): string;
diff --git a/backend/src/data/getChannelIdFromMessageId.ts b/backend/src/data/getChannelIdFromMessageId.ts
index 64fc3b85..0558ee69 100644
--- a/backend/src/data/getChannelIdFromMessageId.ts
+++ b/backend/src/data/getChannelIdFromMessageId.ts
@@ -1,5 +1,5 @@
+import { getRepository, Repository } from "typeorm";
 import { SavedMessage } from "./entities/SavedMessage";
-import { Repository, getRepository } from "typeorm";
 
 let repository: Repository<SavedMessage>;
 
diff --git a/backend/src/index.ts b/backend/src/index.ts
index 6cb6fbea..42ee9343 100644
--- a/backend/src/index.ts
+++ b/backend/src/index.ts
@@ -1,29 +1,28 @@
-import "./loadEnv";
-
-import path from "path";
-import yaml from "js-yaml";
-
+import { Client, Intents, TextChannel } from "discord.js";
 import fs from "fs";
+import yaml from "js-yaml";
 import { Knub, PluginError } from "knub";
-import { SimpleError } from "./SimpleError";
-
-import { Configs } from "./data/Configs";
+import { PluginLoadError } from "knub/dist/plugins/PluginLoadError";
 // Always use UTC internally
 // This is also enforced for the database in data/db.ts
 import moment from "moment-timezone";
-import { connect } from "./data/db";
-import { baseGuildPlugins, globalPlugins, guildPlugins } from "./plugins/availablePlugins";
-import { errorMessage, isDiscordHTTPError, isDiscordRESTError, MINUTES, successMessage } from "./utils";
-import { startUptimeCounter } from "./uptime";
 import { AllowedGuilds } from "./data/AllowedGuilds";
-import { ZeppelinGlobalConfig, ZeppelinGuildConfig } from "./types";
-import { RecoverablePluginError } from "./RecoverablePluginError";
+import { Configs } from "./data/Configs";
+import { connect } from "./data/db";
 import { GuildLogs } from "./data/GuildLogs";
 import { LogType } from "./data/LogType";
-import { logger } from "./logger";
-import { PluginLoadError } from "knub/dist/plugins/PluginLoadError";
 import { ErisError } from "./ErisError";
-import { Client, Intents, TextChannel } from "discord.js";
+import "./loadEnv";
+import { logger } from "./logger";
+import { baseGuildPlugins, globalPlugins, guildPlugins } from "./plugins/availablePlugins";
+import { RecoverablePluginError } from "./RecoverablePluginError";
+import { SimpleError } from "./SimpleError";
+import { ZeppelinGlobalConfig, ZeppelinGuildConfig } from "./types";
+import { startUptimeCounter } from "./uptime";
+import { errorMessage, isDiscordHTTPError, isDiscordRESTError, successMessage } from "./utils";
+
+
+
 
 const fsp = fs.promises;
 
diff --git a/backend/src/migrateConfigsToDB.ts b/backend/src/migrateConfigsToDB.ts
index a814a63d..67423c41 100644
--- a/backend/src/migrateConfigsToDB.ts
+++ b/backend/src/migrateConfigsToDB.ts
@@ -1,8 +1,8 @@
 // tslint:disable:no-console
-import { connect } from "./data/db";
-import { Configs } from "./data/Configs";
-import path from "path";
 import * as _fs from "fs";
+import path from "path";
+import { Configs } from "./data/Configs";
+import { connect } from "./data/db";
 
 const fs = _fs.promises;
 
diff --git a/backend/src/migrations/1608692857722-FixStarboardReactionsIndices.ts b/backend/src/migrations/1608692857722-FixStarboardReactionsIndices.ts
index dcde8a09..d74a8749 100644
--- a/backend/src/migrations/1608692857722-FixStarboardReactionsIndices.ts
+++ b/backend/src/migrations/1608692857722-FixStarboardReactionsIndices.ts
@@ -1,4 +1,4 @@
-import { MigrationInterface, QueryRunner, TableIndex, TableUnique } from "typeorm";
+import { MigrationInterface, QueryRunner, TableIndex } from "typeorm";
 
 export class FixStarboardReactionsIndices1608692857722 implements MigrationInterface {
   public async up(queryRunner: QueryRunner): Promise<any> {
diff --git a/backend/src/pluginUtils.ts b/backend/src/pluginUtils.ts
index f0912677..bb0f607e 100644
--- a/backend/src/pluginUtils.ts
+++ b/backend/src/pluginUtils.ts
@@ -2,18 +2,18 @@
  * @file Utility functions that are plugin-instance-specific (i.e. use PluginData)
  */
 
-import { CommandContext, configUtils, ConfigValidationError, GuildPluginData, helpers, PluginOptions } from "knub";
-import { decodeAndValidateStrict, StrictValidationError, validate } from "./validatorUtils";
-import { deepKeyIntersect, errorMessage, successMessage, tDeepPartial, tNullable } from "./utils";
-import { TZeppelinKnub } from "./types";
-import { ExtendedMatchParams } from "knub/dist/config/PluginConfigManager"; // TODO: Export from Knub index
+import { GuildMember, Message, MessageMentionOptions, MessageOptions, TextChannel } from "discord.js";
 import * as t from "io-ts";
+import { CommandContext, configUtils, ConfigValidationError, GuildPluginData, helpers, PluginOptions } from "knub";
 import { PluginOverrideCriteria } from "knub/dist/config/configTypes";
-import { Tail } from "./utils/typeUtils";
+import { ExtendedMatchParams } from "knub/dist/config/PluginConfigManager"; // TODO: Export from Knub index
 import { AnyPluginData } from "knub/dist/plugins/PluginData";
-import { ZeppelinPlugin } from "./plugins/ZeppelinPlugin";
 import { logger } from "./logger";
-import { APIMessage, GuildMember, Message, MessageMentionOptions, MessageOptions, TextChannel, User } from "discord.js";
+import { ZeppelinPlugin } from "./plugins/ZeppelinPlugin";
+import { TZeppelinKnub } from "./types";
+import { deepKeyIntersect, errorMessage, successMessage, tDeepPartial, tNullable } from "./utils";
+import { Tail } from "./utils/typeUtils";
+import { decodeAndValidateStrict, StrictValidationError, validate } from "./validatorUtils";
 
 const { getMemberLevel } = helpers;
 
diff --git a/backend/src/plugins/AutoDelete/AutoDeletePlugin.ts b/backend/src/plugins/AutoDelete/AutoDeletePlugin.ts
index 80973641..aa7ffd50 100644
--- a/backend/src/plugins/AutoDelete/AutoDeletePlugin.ts
+++ b/backend/src/plugins/AutoDelete/AutoDeletePlugin.ts
@@ -1,13 +1,13 @@
 import { PluginOptions } from "knub";
-import { AutoDeletePluginType, ConfigSchema } from "./types";
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildLogs } from "../../data/GuildLogs";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { LogsPlugin } from "../Logs/LogsPlugin";
+import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { AutoDeletePluginType, ConfigSchema } from "./types";
 import { onMessageCreate } from "./util/onMessageCreate";
 import { onMessageDelete } from "./util/onMessageDelete";
 import { onMessageDeleteBulk } from "./util/onMessageDeleteBulk";
-import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
-import { LogsPlugin } from "../Logs/LogsPlugin";
 
 const defaultOptions: PluginOptions<AutoDeletePluginType> = {
   config: {
diff --git a/backend/src/plugins/AutoDelete/types.ts b/backend/src/plugins/AutoDelete/types.ts
index 9cee0d3b..2294f222 100644
--- a/backend/src/plugins/AutoDelete/types.ts
+++ b/backend/src/plugins/AutoDelete/types.ts
@@ -1,9 +1,9 @@
 import * as t from "io-ts";
-import { BasePluginType, typedGuildCommand, typedGuildEventListener } from "knub";
-import { tDelayString, MINUTES } from "../../utils";
+import { BasePluginType } from "knub";
+import { SavedMessage } from "../../data/entities/SavedMessage";
 import { GuildLogs } from "../../data/GuildLogs";
 import { GuildSavedMessages } from "../../data/GuildSavedMessages";
-import { SavedMessage } from "../../data/entities/SavedMessage";
+import { MINUTES, tDelayString } from "../../utils";
 import Timeout = NodeJS.Timeout;
 
 export const MAX_DELAY = 5 * MINUTES;
diff --git a/backend/src/plugins/AutoDelete/util/addMessageToDeletionQueue.ts b/backend/src/plugins/AutoDelete/util/addMessageToDeletionQueue.ts
index 21788d58..7d37c003 100644
--- a/backend/src/plugins/AutoDelete/util/addMessageToDeletionQueue.ts
+++ b/backend/src/plugins/AutoDelete/util/addMessageToDeletionQueue.ts
@@ -1,8 +1,8 @@
 import { GuildPluginData } from "knub";
-import { AutoDeletePluginType } from "../types";
 import { SavedMessage } from "../../../data/entities/SavedMessage";
-import { scheduleNextDeletion } from "./scheduleNextDeletion";
 import { sorter } from "../../../utils";
+import { AutoDeletePluginType } from "../types";
+import { scheduleNextDeletion } from "./scheduleNextDeletion";
 
 export function addMessageToDeletionQueue(
   pluginData: GuildPluginData<AutoDeletePluginType>,
diff --git a/backend/src/plugins/AutoDelete/util/deleteNextItem.ts b/backend/src/plugins/AutoDelete/util/deleteNextItem.ts
index 2ec8b598..553f828f 100644
--- a/backend/src/plugins/AutoDelete/util/deleteNextItem.ts
+++ b/backend/src/plugins/AutoDelete/util/deleteNextItem.ts
@@ -1,14 +1,14 @@
+import { Permissions, TextChannel } from "discord.js";
 import { GuildPluginData } from "knub";
-import { AutoDeletePluginType } from "../types";
 import moment from "moment-timezone";
 import { LogType } from "../../../data/LogType";
-import { resolveUser, stripObjectToScalars, verboseChannelMention } from "../../../utils";
 import { logger } from "../../../logger";
-import { scheduleNextDeletion } from "./scheduleNextDeletion";
-import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
+import { resolveUser, stripObjectToScalars, verboseChannelMention } from "../../../utils";
 import { hasDiscordPermissions } from "../../../utils/hasDiscordPermissions";
 import { LogsPlugin } from "../../Logs/LogsPlugin";
-import { Permissions, TextChannel } from "discord.js";
+import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
+import { AutoDeletePluginType } from "../types";
+import { scheduleNextDeletion } from "./scheduleNextDeletion";
 
 export async function deleteNextItem(pluginData: GuildPluginData<AutoDeletePluginType>) {
   const [itemToDelete] = pluginData.state.deletionQueue.splice(0, 1);
diff --git a/backend/src/plugins/AutoDelete/util/onMessageCreate.ts b/backend/src/plugins/AutoDelete/util/onMessageCreate.ts
index e6ee40e5..0a7bfc73 100644
--- a/backend/src/plugins/AutoDelete/util/onMessageCreate.ts
+++ b/backend/src/plugins/AutoDelete/util/onMessageCreate.ts
@@ -1,8 +1,8 @@
-import { AutoDeletePluginType, MAX_DELAY } from "../types";
 import { GuildPluginData } from "knub";
 import { SavedMessage } from "../../../data/entities/SavedMessage";
-import { convertDelayStringToMS, resolveMember } from "../../../utils";
 import { LogType } from "../../../data/LogType";
+import { convertDelayStringToMS, resolveMember } from "../../../utils";
+import { AutoDeletePluginType, MAX_DELAY } from "../types";
 import { addMessageToDeletionQueue } from "./addMessageToDeletionQueue";
 
 export async function onMessageCreate(pluginData: GuildPluginData<AutoDeletePluginType>, msg: SavedMessage) {
diff --git a/backend/src/plugins/AutoDelete/util/onMessageDelete.ts b/backend/src/plugins/AutoDelete/util/onMessageDelete.ts
index 98eb2816..48b7bb72 100644
--- a/backend/src/plugins/AutoDelete/util/onMessageDelete.ts
+++ b/backend/src/plugins/AutoDelete/util/onMessageDelete.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { AutoDeletePluginType } from "../types";
 import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { AutoDeletePluginType } from "../types";
 import { scheduleNextDeletion } from "./scheduleNextDeletion";
 
 export function onMessageDelete(pluginData: GuildPluginData<AutoDeletePluginType>, msg: SavedMessage) {
diff --git a/backend/src/plugins/AutoDelete/util/onMessageDeleteBulk.ts b/backend/src/plugins/AutoDelete/util/onMessageDeleteBulk.ts
index b48f8f89..6c39a667 100644
--- a/backend/src/plugins/AutoDelete/util/onMessageDeleteBulk.ts
+++ b/backend/src/plugins/AutoDelete/util/onMessageDeleteBulk.ts
@@ -1,6 +1,6 @@
-import { AutoDeletePluginType } from "../types";
 import { GuildPluginData } from "knub";
 import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { AutoDeletePluginType } from "../types";
 import { onMessageDelete } from "./onMessageDelete";
 
 export function onMessageDeleteBulk(pluginData: GuildPluginData<AutoDeletePluginType>, messages: SavedMessage[]) {
diff --git a/backend/src/plugins/AutoReactions/AutoReactionsPlugin.ts b/backend/src/plugins/AutoReactions/AutoReactionsPlugin.ts
index 2192a774..886a9922 100644
--- a/backend/src/plugins/AutoReactions/AutoReactionsPlugin.ts
+++ b/backend/src/plugins/AutoReactions/AutoReactionsPlugin.ts
@@ -1,13 +1,13 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { AutoReactionsPluginType, ConfigSchema } from "./types";
 import { PluginOptions } from "knub";
-import { NewAutoReactionsCmd } from "./commands/NewAutoReactionsCmd";
-import { DisableAutoReactionsCmd } from "./commands/DisableAutoReactionsCmd";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildAutoReactions } from "../../data/GuildAutoReactions";
-import { AddReactionsEvt } from "./events/AddReactionsEvt";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { trimPluginDescription } from "../../utils";
 import { LogsPlugin } from "../Logs/LogsPlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { DisableAutoReactionsCmd } from "./commands/DisableAutoReactionsCmd";
+import { NewAutoReactionsCmd } from "./commands/NewAutoReactionsCmd";
+import { AddReactionsEvt } from "./events/AddReactionsEvt";
+import { AutoReactionsPluginType, ConfigSchema } from "./types";
 
 const defaultOptions: PluginOptions<AutoReactionsPluginType> = {
   config: {
diff --git a/backend/src/plugins/AutoReactions/commands/DisableAutoReactionsCmd.ts b/backend/src/plugins/AutoReactions/commands/DisableAutoReactionsCmd.ts
index 5f2d82cf..56193797 100644
--- a/backend/src/plugins/AutoReactions/commands/DisableAutoReactionsCmd.ts
+++ b/backend/src/plugins/AutoReactions/commands/DisableAutoReactionsCmd.ts
@@ -1,6 +1,6 @@
-import { autoReactionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { autoReactionsCmd } from "../types";
 
 export const DisableAutoReactionsCmd = autoReactionsCmd({
   trigger: "auto_reactions disable",
diff --git a/backend/src/plugins/AutoReactions/commands/NewAutoReactionsCmd.ts b/backend/src/plugins/AutoReactions/commands/NewAutoReactionsCmd.ts
index f1fb64ff..8bb4dfe9 100644
--- a/backend/src/plugins/AutoReactions/commands/NewAutoReactionsCmd.ts
+++ b/backend/src/plugins/AutoReactions/commands/NewAutoReactionsCmd.ts
@@ -1,12 +1,12 @@
-import { autoReactionsCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { canUseEmoji, customEmojiRegex, isEmoji } from "../../../utils";
-import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { getMissingChannelPermissions } from "../../../utils/getMissingChannelPermissions";
-
-import { readChannelPermissions } from "../../../utils/readChannelPermissions";
-import { missingPermissionError } from "../../../utils/missingPermissionError";
 import { GuildChannel, Permissions } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { canUseEmoji, customEmojiRegex, isEmoji } from "../../../utils";
+import { getMissingChannelPermissions } from "../../../utils/getMissingChannelPermissions";
+import { missingPermissionError } from "../../../utils/missingPermissionError";
+import { readChannelPermissions } from "../../../utils/readChannelPermissions";
+import { autoReactionsCmd } from "../types";
+
 
 const requiredPermissions = readChannelPermissions | Permissions.FLAGS.ADD_REACTIONS;
 
diff --git a/backend/src/plugins/AutoReactions/events/AddReactionsEvt.ts b/backend/src/plugins/AutoReactions/events/AddReactionsEvt.ts
index 06ca2bb2..330714fe 100644
--- a/backend/src/plugins/AutoReactions/events/AddReactionsEvt.ts
+++ b/backend/src/plugins/AutoReactions/events/AddReactionsEvt.ts
@@ -1,12 +1,12 @@
-import { autoReactionsEvt } from "../types";
-import { isDiscordRESTError } from "../../../utils";
-import { LogType } from "../../../data/LogType";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
-
-import { getMissingChannelPermissions } from "../../../utils/getMissingChannelPermissions";
-import { readChannelPermissions } from "../../../utils/readChannelPermissions";
-import { missingPermissionError } from "../../../utils/missingPermissionError";
 import { GuildChannel, Permissions } from "discord.js";
+import { LogType } from "../../../data/LogType";
+import { isDiscordRESTError } from "../../../utils";
+import { getMissingChannelPermissions } from "../../../utils/getMissingChannelPermissions";
+import { missingPermissionError } from "../../../utils/missingPermissionError";
+import { readChannelPermissions } from "../../../utils/readChannelPermissions";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { autoReactionsEvt } from "../types";
+
 
 const p = Permissions.FLAGS;
 
diff --git a/backend/src/plugins/AutoReactions/types.ts b/backend/src/plugins/AutoReactions/types.ts
index 6a1fb285..a5c269c2 100644
--- a/backend/src/plugins/AutoReactions/types.ts
+++ b/backend/src/plugins/AutoReactions/types.ts
@@ -1,8 +1,8 @@
 import * as t from "io-ts";
 import { BasePluginType, typedGuildCommand, typedGuildEventListener } from "knub";
+import { GuildAutoReactions } from "../../data/GuildAutoReactions";
 import { GuildLogs } from "../../data/GuildLogs";
 import { GuildSavedMessages } from "../../data/GuildSavedMessages";
-import { GuildAutoReactions } from "../../data/GuildAutoReactions";
 
 export const ConfigSchema = t.type({
   can_manage: t.boolean,
diff --git a/backend/src/plugins/Automod/AutomodPlugin.ts b/backend/src/plugins/Automod/AutomodPlugin.ts
index fabdc806..d57df9ed 100644
--- a/backend/src/plugins/Automod/AutomodPlugin.ts
+++ b/backend/src/plugins/Automod/AutomodPlugin.ts
@@ -1,38 +1,35 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { AutomodPluginType, ConfigSchema } from "./types";
-import { RunAutomodOnJoinEvt } from "./events/RunAutomodOnJoinEvt";
-import { GuildLogs } from "../../data/GuildLogs";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
-import { runAutomodOnMessage } from "./events/runAutomodOnMessage";
-import { Queue } from "../../Queue";
 import { configUtils, CooldownManager } from "knub";
-import { availableTriggers } from "./triggers/availableTriggers";
-import { StrictValidationError } from "../../validatorUtils";
 import { ConfigPreprocessorFn } from "knub/dist/config/configTypes";
-import { availableActions } from "./actions/availableActions";
-import { clearOldRecentActions } from "./functions/clearOldRecentActions";
-import { disableCodeBlocks, MINUTES, SECONDS } from "../../utils";
-import { clearOldRecentSpam } from "./functions/clearOldRecentSpam";
 import { GuildAntiraidLevels } from "../../data/GuildAntiraidLevels";
 import { GuildArchives } from "../../data/GuildArchives";
-import { clearOldRecentNicknameChanges } from "./functions/clearOldNicknameChanges";
+import { GuildLogs } from "../../data/GuildLogs";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { Queue } from "../../Queue";
+import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners";
+import { MINUTES, SECONDS } from "../../utils";
+import { registerEventListenersFromMap } from "../../utils/registerEventListenersFromMap";
+import { unregisterEventListenersFromMap } from "../../utils/unregisterEventListenersFromMap";
+import { StrictValidationError } from "../../validatorUtils";
+import { CountersPlugin } from "../Counters/CountersPlugin";
 import { LogsPlugin } from "../Logs/LogsPlugin";
 import { ModActionsPlugin } from "../ModActions/ModActionsPlugin";
 import { MutesPlugin } from "../Mutes/MutesPlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { availableActions } from "./actions/availableActions";
 import { AntiraidClearCmd } from "./commands/AntiraidClearCmd";
 import { SetAntiraidCmd } from "./commands/SetAntiraidCmd";
 import { ViewAntiraidCmd } from "./commands/ViewAntiraidCmd";
-import { pluginInfo } from "./info";
-import { RegExpRunner } from "../../RegExpRunner";
-import { LogType } from "../../data/LogType";
-import { logger } from "../../logger";
-import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners";
-import { RunAutomodOnMemberUpdate } from "./events/RunAutomodOnMemberUpdate";
-import { CountersPlugin } from "../Counters/CountersPlugin";
 import { runAutomodOnCounterTrigger } from "./events/runAutomodOnCounterTrigger";
+import { RunAutomodOnJoinEvt } from "./events/RunAutomodOnJoinEvt";
+import { RunAutomodOnMemberUpdate } from "./events/RunAutomodOnMemberUpdate";
+import { runAutomodOnMessage } from "./events/runAutomodOnMessage";
 import { runAutomodOnModAction } from "./events/runAutomodOnModAction";
-import { registerEventListenersFromMap } from "../../utils/registerEventListenersFromMap";
-import { unregisterEventListenersFromMap } from "../../utils/unregisterEventListenersFromMap";
+import { clearOldRecentNicknameChanges } from "./functions/clearOldNicknameChanges";
+import { clearOldRecentActions } from "./functions/clearOldRecentActions";
+import { clearOldRecentSpam } from "./functions/clearOldRecentSpam";
+import { pluginInfo } from "./info";
+import { availableTriggers } from "./triggers/availableTriggers";
+import { AutomodPluginType, ConfigSchema } from "./types";
 
 const defaultOptions = {
   config: {
diff --git a/backend/src/plugins/Automod/actions/addToCounter.ts b/backend/src/plugins/Automod/actions/addToCounter.ts
index 7606f91d..74e1ddc5 100644
--- a/backend/src/plugins/Automod/actions/addToCounter.ts
+++ b/backend/src/plugins/Automod/actions/addToCounter.ts
@@ -1,7 +1,7 @@
 import * as t from "io-ts";
-import { automodAction } from "../helpers";
-import { CountersPlugin } from "../../Counters/CountersPlugin";
 import { LogType } from "../../../data/LogType";
+import { CountersPlugin } from "../../Counters/CountersPlugin";
+import { automodAction } from "../helpers";
 
 export const AddToCounterAction = automodAction({
   configType: t.type({
diff --git a/backend/src/plugins/Automod/actions/alert.ts b/backend/src/plugins/Automod/actions/alert.ts
index 7b932639..b7c4a000 100644
--- a/backend/src/plugins/Automod/actions/alert.ts
+++ b/backend/src/plugins/Automod/actions/alert.ts
@@ -1,18 +1,18 @@
-import * as t from "io-ts";
-import { automodAction } from "../helpers";
-import { LogType } from "../../../data/LogType";
-import {
-  createChunkedMessage,
-  messageLink,
-  stripObjectToScalars,
-  tAllowedMentions,
-  tNormalizedNullOptional,
-  verboseChannelMention,
-} from "../../../utils";
-import { renderTemplate, TemplateParseError } from "../../../templateFormatter";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
 import { TextChannel } from "discord.js";
+import * as t from "io-ts";
 import { erisAllowedMentionsToDjsMentionOptions } from "src/utils/erisAllowedMentionsToDjsMentionOptions";
+import { LogType } from "../../../data/LogType";
+import { renderTemplate, TemplateParseError } from "../../../templateFormatter";
+import {
+    createChunkedMessage,
+    messageLink,
+    stripObjectToScalars,
+    tAllowedMentions,
+    tNormalizedNullOptional,
+    verboseChannelMention
+} from "../../../utils";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { automodAction } from "../helpers";
 
 export const AlertAction = automodAction({
   configType: t.type({
diff --git a/backend/src/plugins/Automod/actions/availableActions.ts b/backend/src/plugins/Automod/actions/availableActions.ts
index 54146de3..fbdcf8f9 100644
--- a/backend/src/plugins/Automod/actions/availableActions.ts
+++ b/backend/src/plugins/Automod/actions/availableActions.ts
@@ -1,20 +1,20 @@
 import * as t from "io-ts";
-import { CleanAction } from "./clean";
 import { AutomodActionBlueprint } from "../helpers";
-import { WarnAction } from "./warn";
-import { MuteAction } from "./mute";
-import { KickAction } from "./kick";
-import { BanAction } from "./ban";
-import { AlertAction } from "./alert";
-import { ChangeNicknameAction } from "./changeNickname";
-import { LogAction } from "./log";
 import { AddRolesAction } from "./addRoles";
-import { RemoveRolesAction } from "./removeRoles";
-import { SetAntiraidLevelAction } from "./setAntiraidLevel";
-import { ReplyAction } from "./reply";
 import { AddToCounterAction } from "./addToCounter";
+import { AlertAction } from "./alert";
+import { BanAction } from "./ban";
+import { ChangeNicknameAction } from "./changeNickname";
+import { CleanAction } from "./clean";
+import { KickAction } from "./kick";
+import { LogAction } from "./log";
+import { MuteAction } from "./mute";
+import { RemoveRolesAction } from "./removeRoles";
+import { ReplyAction } from "./reply";
+import { SetAntiraidLevelAction } from "./setAntiraidLevel";
 import { SetCounterAction } from "./setCounter";
 import { SetSlowmodeAction } from "./setSlowmode";
+import { WarnAction } from "./warn";
 
 export const availableActions: Record<string, AutomodActionBlueprint<any>> = {
   clean: CleanAction,
diff --git a/backend/src/plugins/Automod/actions/ban.ts b/backend/src/plugins/Automod/actions/ban.ts
index 9ca09086..ebec5516 100644
--- a/backend/src/plugins/Automod/actions/ban.ts
+++ b/backend/src/plugins/Automod/actions/ban.ts
@@ -1,18 +1,16 @@
 import * as t from "io-ts";
-import { automodAction } from "../helpers";
-import { LogType } from "../../../data/LogType";
 import {
-  asyncMap,
-  convertDelayStringToMS,
-  nonNullish,
-  resolveMember,
-  tDelayString,
-  tNullable,
-  unique,
+    convertDelayStringToMS,
+    nonNullish,
+
+    tDelayString,
+    tNullable,
+    unique
 } from "../../../utils";
-import { resolveActionContactMethods } from "../functions/resolveActionContactMethods";
-import { ModActionsPlugin } from "../../ModActions/ModActionsPlugin";
 import { CaseArgs } from "../../Cases/types";
+import { ModActionsPlugin } from "../../ModActions/ModActionsPlugin";
+import { resolveActionContactMethods } from "../functions/resolveActionContactMethods";
+import { automodAction } from "../helpers";
 
 export const BanAction = automodAction({
   configType: t.type({
diff --git a/backend/src/plugins/Automod/actions/changeNickname.ts b/backend/src/plugins/Automod/actions/changeNickname.ts
index 7225f794..d6dee527 100644
--- a/backend/src/plugins/Automod/actions/changeNickname.ts
+++ b/backend/src/plugins/Automod/actions/changeNickname.ts
@@ -1,8 +1,8 @@
 import * as t from "io-ts";
-import { automodAction } from "../helpers";
 import { LogType } from "../../../data/LogType";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
 import { nonNullish, unique } from "../../../utils";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { automodAction } from "../helpers";
 
 export const ChangeNicknameAction = automodAction({
   configType: t.union([
diff --git a/backend/src/plugins/Automod/actions/clean.ts b/backend/src/plugins/Automod/actions/clean.ts
index 4f505cfb..a326cc3b 100644
--- a/backend/src/plugins/Automod/actions/clean.ts
+++ b/backend/src/plugins/Automod/actions/clean.ts
@@ -1,8 +1,8 @@
+import { TextChannel } from "discord.js";
 import * as t from "io-ts";
-import { automodAction } from "../helpers";
 import { LogType } from "../../../data/LogType";
 import { noop } from "../../../utils";
-import { TextChannel } from "discord.js";
+import { automodAction } from "../helpers";
 
 export const CleanAction = automodAction({
   configType: t.boolean,
diff --git a/backend/src/plugins/Automod/actions/kick.ts b/backend/src/plugins/Automod/actions/kick.ts
index 0b0fafa5..98408da3 100644
--- a/backend/src/plugins/Automod/actions/kick.ts
+++ b/backend/src/plugins/Automod/actions/kick.ts
@@ -1,10 +1,9 @@
 import * as t from "io-ts";
-import { automodAction } from "../helpers";
-import { LogType } from "../../../data/LogType";
 import { asyncMap, nonNullish, resolveMember, tNullable, unique } from "../../../utils";
-import { resolveActionContactMethods } from "../functions/resolveActionContactMethods";
-import { ModActionsPlugin } from "../../ModActions/ModActionsPlugin";
 import { CaseArgs } from "../../Cases/types";
+import { ModActionsPlugin } from "../../ModActions/ModActionsPlugin";
+import { resolveActionContactMethods } from "../functions/resolveActionContactMethods";
+import { automodAction } from "../helpers";
 
 export const KickAction = automodAction({
   configType: t.type({
diff --git a/backend/src/plugins/Automod/actions/log.ts b/backend/src/plugins/Automod/actions/log.ts
index 5390fe12..7218ce5f 100644
--- a/backend/src/plugins/Automod/actions/log.ts
+++ b/backend/src/plugins/Automod/actions/log.ts
@@ -1,8 +1,8 @@
 import * as t from "io-ts";
-import { automodAction } from "../helpers";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
 import { LogType } from "../../../data/LogType";
 import { stripObjectToScalars, unique } from "../../../utils";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { automodAction } from "../helpers";
 
 export const LogAction = automodAction({
   configType: t.boolean,
diff --git a/backend/src/plugins/Automod/actions/mute.ts b/backend/src/plugins/Automod/actions/mute.ts
index 3bc7a90b..2ee0b9ba 100644
--- a/backend/src/plugins/Automod/actions/mute.ts
+++ b/backend/src/plugins/Automod/actions/mute.ts
@@ -1,21 +1,19 @@
 import * as t from "io-ts";
-import { automodAction } from "../helpers";
 import { LogType } from "../../../data/LogType";
-import {
-  asyncMap,
-  convertDelayStringToMS,
-  nonNullish,
-  resolveMember,
-  tDelayString,
-  tNullable,
-  unique,
-} from "../../../utils";
-import { resolveActionContactMethods } from "../functions/resolveActionContactMethods";
-import { ModActionsPlugin } from "../../ModActions/ModActionsPlugin";
-import { MutesPlugin } from "../../Mutes/MutesPlugin";
 import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
+import {
+    convertDelayStringToMS,
+    nonNullish,
+
+    tDelayString,
+    tNullable,
+    unique
+} from "../../../utils";
 import { CaseArgs } from "../../Cases/types";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { MutesPlugin } from "../../Mutes/MutesPlugin";
+import { resolveActionContactMethods } from "../functions/resolveActionContactMethods";
+import { automodAction } from "../helpers";
 
 export const MuteAction = automodAction({
   configType: t.type({
diff --git a/backend/src/plugins/Automod/actions/removeRoles.ts b/backend/src/plugins/Automod/actions/removeRoles.ts
index 79e22fae..35071c02 100644
--- a/backend/src/plugins/Automod/actions/removeRoles.ts
+++ b/backend/src/plugins/Automod/actions/removeRoles.ts
@@ -1,17 +1,15 @@
-import * as t from "io-ts";
-import { automodAction } from "../helpers";
-import { LogType } from "../../../data/LogType";
-import { asyncMap, nonNullish, resolveMember, tNullable, unique } from "../../../utils";
-import { resolveActionContactMethods } from "../functions/resolveActionContactMethods";
-import { ModActionsPlugin } from "../../ModActions/ModActionsPlugin";
-import { getMissingPermissions } from "../../../utils/getMissingPermissions";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
-import { missingPermissionError } from "../../../utils/missingPermissionError";
-import { canAssignRole } from "../../../utils/canAssignRole";
-
-import { ignoreRoleChange } from "../functions/ignoredRoleChanges";
-import { memberRolesLock } from "../../../utils/lockNameHelpers";
 import { Permissions } from "discord.js";
+import * as t from "io-ts";
+import { LogType } from "../../../data/LogType";
+import { nonNullish, unique } from "../../../utils";
+import { canAssignRole } from "../../../utils/canAssignRole";
+import { getMissingPermissions } from "../../../utils/getMissingPermissions";
+import { memberRolesLock } from "../../../utils/lockNameHelpers";
+import { missingPermissionError } from "../../../utils/missingPermissionError";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { ignoreRoleChange } from "../functions/ignoredRoleChanges";
+import { automodAction } from "../helpers";
+
 
 const p = Permissions.FLAGS;
 
diff --git a/backend/src/plugins/Automod/actions/reply.ts b/backend/src/plugins/Automod/actions/reply.ts
index 8357edb9..dafb9dfb 100644
--- a/backend/src/plugins/Automod/actions/reply.ts
+++ b/backend/src/plugins/Automod/actions/reply.ts
@@ -1,23 +1,23 @@
+import { MessageOptions, Permissions, TextChannel, User } from "discord.js";
 import * as t from "io-ts";
-import { automodAction } from "../helpers";
-import {
-  convertDelayStringToMS,
-  noop,
-  renderRecursively,
-  StrictMessageContent,
-  stripObjectToScalars,
-  tDelayString,
-  tMessageContent,
-  tNullable,
-  unique,
-  verboseChannelMention,
-} from "../../../utils";
-
-import { AutomodContext } from "../types";
-import { renderTemplate } from "../../../templateFormatter";
-import { hasDiscordPermissions } from "../../../utils/hasDiscordPermissions";
 import { LogType } from "../../../data/LogType";
-import { TextChannel, User, Constants, MessageOptions, Permissions } from "discord.js";
+import { renderTemplate } from "../../../templateFormatter";
+import {
+    convertDelayStringToMS,
+    noop,
+    renderRecursively,
+
+    stripObjectToScalars,
+    tDelayString,
+    tMessageContent,
+    tNullable,
+    unique,
+    verboseChannelMention
+} from "../../../utils";
+import { hasDiscordPermissions } from "../../../utils/hasDiscordPermissions";
+import { automodAction } from "../helpers";
+import { AutomodContext } from "../types";
+
 
 export const ReplyAction = automodAction({
   configType: t.union([
diff --git a/backend/src/plugins/Automod/actions/setAntiraidLevel.ts b/backend/src/plugins/Automod/actions/setAntiraidLevel.ts
index 8d15a35f..a1722aae 100644
--- a/backend/src/plugins/Automod/actions/setAntiraidLevel.ts
+++ b/backend/src/plugins/Automod/actions/setAntiraidLevel.ts
@@ -1,7 +1,7 @@
 import * as t from "io-ts";
-import { automodAction } from "../helpers";
-import { setAntiraidLevel } from "../functions/setAntiraidLevel";
 import { tNullable } from "../../../utils";
+import { setAntiraidLevel } from "../functions/setAntiraidLevel";
+import { automodAction } from "../helpers";
 
 export const SetAntiraidLevelAction = automodAction({
   configType: tNullable(t.string),
diff --git a/backend/src/plugins/Automod/actions/setCounter.ts b/backend/src/plugins/Automod/actions/setCounter.ts
index eb63d80d..150d77f7 100644
--- a/backend/src/plugins/Automod/actions/setCounter.ts
+++ b/backend/src/plugins/Automod/actions/setCounter.ts
@@ -1,7 +1,7 @@
 import * as t from "io-ts";
-import { automodAction } from "../helpers";
-import { CountersPlugin } from "../../Counters/CountersPlugin";
 import { LogType } from "../../../data/LogType";
+import { CountersPlugin } from "../../Counters/CountersPlugin";
+import { automodAction } from "../helpers";
 
 export const SetCounterAction = automodAction({
   configType: t.type({
diff --git a/backend/src/plugins/Automod/actions/setSlowmode.ts b/backend/src/plugins/Automod/actions/setSlowmode.ts
index 7acfdd28..05222df3 100644
--- a/backend/src/plugins/Automod/actions/setSlowmode.ts
+++ b/backend/src/plugins/Automod/actions/setSlowmode.ts
@@ -1,9 +1,9 @@
+import { TextChannel } from "discord.js";
 import * as t from "io-ts";
-import { automodAction } from "../helpers";
-import { convertDelayStringToMS, isDiscordRESTError, tDelayString, tNullable } from "../../../utils";
-import { LogType } from "../../../data/LogType";
-import { Constants, TextChannel } from "discord.js";
 import { ChannelTypeStrings } from "src/types";
+import { LogType } from "../../../data/LogType";
+import { convertDelayStringToMS, isDiscordRESTError, tDelayString, tNullable } from "../../../utils";
+import { automodAction } from "../helpers";
 
 export const SetSlowmodeAction = automodAction({
   configType: t.type({
diff --git a/backend/src/plugins/Automod/actions/warn.ts b/backend/src/plugins/Automod/actions/warn.ts
index 38f131b8..29dd4955 100644
--- a/backend/src/plugins/Automod/actions/warn.ts
+++ b/backend/src/plugins/Automod/actions/warn.ts
@@ -1,10 +1,9 @@
 import * as t from "io-ts";
-import { automodAction } from "../helpers";
-import { LogType } from "../../../data/LogType";
 import { asyncMap, nonNullish, resolveMember, tNullable, unique } from "../../../utils";
-import { resolveActionContactMethods } from "../functions/resolveActionContactMethods";
-import { ModActionsPlugin } from "../../ModActions/ModActionsPlugin";
 import { CaseArgs } from "../../Cases/types";
+import { ModActionsPlugin } from "../../ModActions/ModActionsPlugin";
+import { resolveActionContactMethods } from "../functions/resolveActionContactMethods";
+import { automodAction } from "../helpers";
 
 export const WarnAction = automodAction({
   configType: t.type({
diff --git a/backend/src/plugins/Automod/commands/AntiraidClearCmd.ts b/backend/src/plugins/Automod/commands/AntiraidClearCmd.ts
index 8aa210ee..3f119b6b 100644
--- a/backend/src/plugins/Automod/commands/AntiraidClearCmd.ts
+++ b/backend/src/plugins/Automod/commands/AntiraidClearCmd.ts
@@ -1,7 +1,7 @@
-import { typedGuildCommand, GuildPluginData } from "knub";
-import { AutomodPluginType } from "../types";
-import { setAntiraidLevel } from "../functions/setAntiraidLevel";
+import { typedGuildCommand } from "knub";
 import { sendSuccessMessage } from "../../../pluginUtils";
+import { setAntiraidLevel } from "../functions/setAntiraidLevel";
+import { AutomodPluginType } from "../types";
 
 export const AntiraidClearCmd = typedGuildCommand<AutomodPluginType>()({
   trigger: ["antiraid clear", "antiraid reset", "antiraid none", "antiraid off"],
diff --git a/backend/src/plugins/Automod/commands/SetAntiraidCmd.ts b/backend/src/plugins/Automod/commands/SetAntiraidCmd.ts
index 0f98ac8a..3ec0f2f9 100644
--- a/backend/src/plugins/Automod/commands/SetAntiraidCmd.ts
+++ b/backend/src/plugins/Automod/commands/SetAntiraidCmd.ts
@@ -1,8 +1,8 @@
-import { typedGuildCommand, GuildPluginData } from "knub";
-import { AutomodPluginType } from "../types";
-import { setAntiraidLevel } from "../functions/setAntiraidLevel";
-import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { typedGuildCommand } from "knub";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { setAntiraidLevel } from "../functions/setAntiraidLevel";
+import { AutomodPluginType } from "../types";
 
 export const SetAntiraidCmd = typedGuildCommand<AutomodPluginType>()({
   trigger: "antiraid",
diff --git a/backend/src/plugins/Automod/commands/ViewAntiraidCmd.ts b/backend/src/plugins/Automod/commands/ViewAntiraidCmd.ts
index 397e60e1..5c208497 100644
--- a/backend/src/plugins/Automod/commands/ViewAntiraidCmd.ts
+++ b/backend/src/plugins/Automod/commands/ViewAntiraidCmd.ts
@@ -1,8 +1,5 @@
-import { typedGuildCommand, GuildPluginData } from "knub";
+import { typedGuildCommand } from "knub";
 import { AutomodPluginType } from "../types";
-import { setAntiraidLevel } from "../functions/setAntiraidLevel";
-import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
 
 export const ViewAntiraidCmd = typedGuildCommand<AutomodPluginType>()({
   trigger: "antiraid",
diff --git a/backend/src/plugins/Automod/events/RunAutomodOnJoinEvt.ts b/backend/src/plugins/Automod/events/RunAutomodOnJoinEvt.ts
index 504a014e..17e98ba0 100644
--- a/backend/src/plugins/Automod/events/RunAutomodOnJoinEvt.ts
+++ b/backend/src/plugins/Automod/events/RunAutomodOnJoinEvt.ts
@@ -1,7 +1,7 @@
 import { typedGuildEventListener } from "knub";
-import { AutomodContext, AutomodPluginType } from "../types";
-import { runAutomod } from "../functions/runAutomod";
 import { RecentActionType } from "../constants";
+import { runAutomod } from "../functions/runAutomod";
+import { AutomodContext, AutomodPluginType } from "../types";
 
 export const RunAutomodOnJoinEvt = typedGuildEventListener<AutomodPluginType>()({
   event: "guildMemberAdd",
diff --git a/backend/src/plugins/Automod/events/RunAutomodOnMemberUpdate.ts b/backend/src/plugins/Automod/events/RunAutomodOnMemberUpdate.ts
index 8ef0b461..611aadde 100644
--- a/backend/src/plugins/Automod/events/RunAutomodOnMemberUpdate.ts
+++ b/backend/src/plugins/Automod/events/RunAutomodOnMemberUpdate.ts
@@ -1,9 +1,8 @@
 import { typedGuildEventListener } from "knub";
-import { AutomodContext, AutomodPluginType } from "../types";
-import { RecentActionType } from "../constants";
-import { runAutomod } from "../functions/runAutomod";
-import isEqual from "lodash.isequal";
 import diff from "lodash.difference";
+import isEqual from "lodash.isequal";
+import { runAutomod } from "../functions/runAutomod";
+import { AutomodContext, AutomodPluginType } from "../types";
 
 export const RunAutomodOnMemberUpdate = typedGuildEventListener<AutomodPluginType>()({
   event: "guildMemberUpdate",
diff --git a/backend/src/plugins/Automod/events/runAutomodOnAntiraidLevel.ts b/backend/src/plugins/Automod/events/runAutomodOnAntiraidLevel.ts
index 4145cb19..2dfc4bac 100644
--- a/backend/src/plugins/Automod/events/runAutomodOnAntiraidLevel.ts
+++ b/backend/src/plugins/Automod/events/runAutomodOnAntiraidLevel.ts
@@ -1,7 +1,7 @@
-import { GuildPluginData } from "knub";
-import { AutomodContext, AutomodPluginType } from "../types";
-import { runAutomod } from "../functions/runAutomod";
 import { User } from "discord.js";
+import { GuildPluginData } from "knub";
+import { runAutomod } from "../functions/runAutomod";
+import { AutomodContext, AutomodPluginType } from "../types";
 
 export async function runAutomodOnAntiraidLevel(
   pluginData: GuildPluginData<AutomodPluginType>,
diff --git a/backend/src/plugins/Automod/events/runAutomodOnCounterTrigger.ts b/backend/src/plugins/Automod/events/runAutomodOnCounterTrigger.ts
index 2b1b974d..01f75116 100644
--- a/backend/src/plugins/Automod/events/runAutomodOnCounterTrigger.ts
+++ b/backend/src/plugins/Automod/events/runAutomodOnCounterTrigger.ts
@@ -1,8 +1,8 @@
 import { GuildPluginData } from "knub";
-import { AutomodContext, AutomodPluginType } from "../types";
-import { runAutomod } from "../functions/runAutomod";
 import { resolveMember, resolveUser, UnknownUser } from "../../../utils";
 import { CountersPlugin } from "../../Counters/CountersPlugin";
+import { runAutomod } from "../functions/runAutomod";
+import { AutomodContext, AutomodPluginType } from "../types";
 
 export async function runAutomodOnCounterTrigger(
   pluginData: GuildPluginData<AutomodPluginType>,
diff --git a/backend/src/plugins/Automod/events/runAutomodOnMessage.ts b/backend/src/plugins/Automod/events/runAutomodOnMessage.ts
index a3db2cf4..1945be37 100644
--- a/backend/src/plugins/Automod/events/runAutomodOnMessage.ts
+++ b/backend/src/plugins/Automod/events/runAutomodOnMessage.ts
@@ -1,10 +1,10 @@
-import { SavedMessage } from "../../../data/entities/SavedMessage";
 import { GuildPluginData } from "knub";
-import { AutomodContext, AutomodPluginType } from "../types";
-import { runAutomod } from "../functions/runAutomod";
-import { addRecentActionsFromMessage } from "../functions/addRecentActionsFromMessage";
 import moment from "moment-timezone";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { addRecentActionsFromMessage } from "../functions/addRecentActionsFromMessage";
 import { clearRecentActionsForMessage } from "../functions/clearRecentActionsForMessage";
+import { runAutomod } from "../functions/runAutomod";
+import { AutomodContext, AutomodPluginType } from "../types";
 
 export function runAutomodOnMessage(
   pluginData: GuildPluginData<AutomodPluginType>,
diff --git a/backend/src/plugins/Automod/events/runAutomodOnModAction.ts b/backend/src/plugins/Automod/events/runAutomodOnModAction.ts
index 5f9437c1..79c8dbea 100644
--- a/backend/src/plugins/Automod/events/runAutomodOnModAction.ts
+++ b/backend/src/plugins/Automod/events/runAutomodOnModAction.ts
@@ -1,8 +1,8 @@
 import { GuildPluginData } from "knub";
-import { AutomodContext, AutomodPluginType } from "../types";
-import { runAutomod } from "../functions/runAutomod";
 import { resolveMember, resolveUser, UnknownUser } from "../../../utils";
 import { ModActionType } from "../../ModActions/types";
+import { runAutomod } from "../functions/runAutomod";
+import { AutomodContext, AutomodPluginType } from "../types";
 
 export async function runAutomodOnModAction(
   pluginData: GuildPluginData<AutomodPluginType>,
diff --git a/backend/src/plugins/Automod/functions/addRecentActionsFromMessage.ts b/backend/src/plugins/Automod/functions/addRecentActionsFromMessage.ts
index 90b8dba6..4f533182 100644
--- a/backend/src/plugins/Automod/functions/addRecentActionsFromMessage.ts
+++ b/backend/src/plugins/Automod/functions/addRecentActionsFromMessage.ts
@@ -1,7 +1,7 @@
-import { AutomodContext, AutomodPluginType } from "../types";
 import { GuildPluginData } from "knub";
-import { RECENT_ACTION_EXPIRY_TIME, RecentActionType } from "../constants";
 import { getEmojiInString, getRoleMentions, getUrlsInString, getUserMentions } from "../../../utils";
+import { RecentActionType, RECENT_ACTION_EXPIRY_TIME } from "../constants";
+import { AutomodContext, AutomodPluginType } from "../types";
 
 export function addRecentActionsFromMessage(pluginData: GuildPluginData<AutomodPluginType>, context: AutomodContext) {
   const message = context.message!;
diff --git a/backend/src/plugins/Automod/functions/checkAndUpdateCooldown.ts b/backend/src/plugins/Automod/functions/checkAndUpdateCooldown.ts
index 887d18f0..6338d698 100644
--- a/backend/src/plugins/Automod/functions/checkAndUpdateCooldown.ts
+++ b/backend/src/plugins/Automod/functions/checkAndUpdateCooldown.ts
@@ -1,7 +1,6 @@
-import { AutomodContext, AutomodPluginType, TRule } from "../types";
 import { GuildPluginData } from "knub";
-import { AutomodTriggerMatchResult } from "../helpers";
 import { convertDelayStringToMS } from "../../../utils";
+import { AutomodContext, AutomodPluginType, TRule } from "../types";
 
 export function checkAndUpdateCooldown(
   pluginData: GuildPluginData<AutomodPluginType>,
diff --git a/backend/src/plugins/Automod/functions/clearOldNicknameChanges.ts b/backend/src/plugins/Automod/functions/clearOldNicknameChanges.ts
index 8d668ba7..0d720c2d 100644
--- a/backend/src/plugins/Automod/functions/clearOldNicknameChanges.ts
+++ b/backend/src/plugins/Automod/functions/clearOldNicknameChanges.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
+import { RECENT_NICKNAME_CHANGE_EXPIRY_TIME } from "../constants";
 import { AutomodPluginType } from "../types";
-import { RECENT_NICKNAME_CHANGE_EXPIRY_TIME, RECENT_SPAM_EXPIRY_TIME } from "../constants";
 
 export function clearOldRecentNicknameChanges(pluginData: GuildPluginData<AutomodPluginType>) {
   const now = Date.now();
diff --git a/backend/src/plugins/Automod/functions/clearOldRecentActions.ts b/backend/src/plugins/Automod/functions/clearOldRecentActions.ts
index e1ee2fe5..67a79718 100644
--- a/backend/src/plugins/Automod/functions/clearOldRecentActions.ts
+++ b/backend/src/plugins/Automod/functions/clearOldRecentActions.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { AutomodPluginType } from "../types";
 import { RECENT_ACTION_EXPIRY_TIME } from "../constants";
+import { AutomodPluginType } from "../types";
 
 export function clearOldRecentActions(pluginData: GuildPluginData<AutomodPluginType>) {
   const now = Date.now();
diff --git a/backend/src/plugins/Automod/functions/clearOldRecentSpam.ts b/backend/src/plugins/Automod/functions/clearOldRecentSpam.ts
index 7fcec63e..a0f34c8b 100644
--- a/backend/src/plugins/Automod/functions/clearOldRecentSpam.ts
+++ b/backend/src/plugins/Automod/functions/clearOldRecentSpam.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { AutomodPluginType } from "../types";
 import { RECENT_SPAM_EXPIRY_TIME } from "../constants";
+import { AutomodPluginType } from "../types";
 
 export function clearOldRecentSpam(pluginData: GuildPluginData<AutomodPluginType>) {
   const now = Date.now();
diff --git a/backend/src/plugins/Automod/functions/clearRecentActionsForMessage.ts b/backend/src/plugins/Automod/functions/clearRecentActionsForMessage.ts
index 03af6c9d..7aa9750a 100644
--- a/backend/src/plugins/Automod/functions/clearRecentActionsForMessage.ts
+++ b/backend/src/plugins/Automod/functions/clearRecentActionsForMessage.ts
@@ -1,7 +1,5 @@
-import { AutomodContext, AutomodPluginType } from "../types";
 import { GuildPluginData } from "knub";
-import { RECENT_ACTION_EXPIRY_TIME, RecentActionType } from "../constants";
-import { getEmojiInString, getRoleMentions, getUrlsInString, getUserMentions } from "../../../utils";
+import { AutomodContext, AutomodPluginType } from "../types";
 
 export function clearRecentActionsForMessage(pluginData: GuildPluginData<AutomodPluginType>, context: AutomodContext) {
   const message = context.message!;
diff --git a/backend/src/plugins/Automod/functions/createMessageSpamTrigger.ts b/backend/src/plugins/Automod/functions/createMessageSpamTrigger.ts
index 09f4af78..009a1f52 100644
--- a/backend/src/plugins/Automod/functions/createMessageSpamTrigger.ts
+++ b/backend/src/plugins/Automod/functions/createMessageSpamTrigger.ts
@@ -1,13 +1,13 @@
-import { RecentActionType } from "../constants";
-import { automodTrigger } from "../helpers";
+import * as t from "io-ts";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { humanizeDurationShort } from "../../../humanizeDurationShort";
 import { getBaseUrl } from "../../../pluginUtils";
 import { convertDelayStringToMS, sorter, tDelayString, tNullable } from "../../../utils";
-import { humanizeDurationShort } from "../../../humanizeDurationShort";
+import { RecentActionType } from "../constants";
+import { automodTrigger } from "../helpers";
 import { findRecentSpam } from "./findRecentSpam";
 import { getMatchingMessageRecentActions } from "./getMatchingMessageRecentActions";
-import * as t from "io-ts";
 import { getMessageSpamIdentifier } from "./getSpamIdentifier";
-import { SavedMessage } from "../../../data/entities/SavedMessage";
 
 const MessageSpamTriggerConfig = t.type({
   amount: t.number,
diff --git a/backend/src/plugins/Automod/functions/findRecentSpam.ts b/backend/src/plugins/Automod/functions/findRecentSpam.ts
index 6ec8a59f..0e042ed5 100644
--- a/backend/src/plugins/Automod/functions/findRecentSpam.ts
+++ b/backend/src/plugins/Automod/functions/findRecentSpam.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { AutomodPluginType } from "../types";
 import { RecentActionType } from "../constants";
+import { AutomodPluginType } from "../types";
 
 export function findRecentSpam(
   pluginData: GuildPluginData<AutomodPluginType>,
diff --git a/backend/src/plugins/Automod/functions/getMatchingMessageRecentActions.ts b/backend/src/plugins/Automod/functions/getMatchingMessageRecentActions.ts
index 7e7299bc..8318ea1e 100644
--- a/backend/src/plugins/Automod/functions/getMatchingMessageRecentActions.ts
+++ b/backend/src/plugins/Automod/functions/getMatchingMessageRecentActions.ts
@@ -1,9 +1,9 @@
 import { GuildPluginData } from "knub";
-import { AutomodPluginType } from "../types";
-import { SavedMessage } from "../../../data/entities/SavedMessage";
 import moment from "moment-timezone";
-import { getMatchingRecentActions } from "./getMatchingRecentActions";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
 import { RecentActionType } from "../constants";
+import { AutomodPluginType } from "../types";
+import { getMatchingRecentActions } from "./getMatchingRecentActions";
 
 export function getMatchingMessageRecentActions(
   pluginData: GuildPluginData<AutomodPluginType>,
diff --git a/backend/src/plugins/Automod/functions/getMatchingRecentActions.ts b/backend/src/plugins/Automod/functions/getMatchingRecentActions.ts
index 56d251c2..416c050b 100644
--- a/backend/src/plugins/Automod/functions/getMatchingRecentActions.ts
+++ b/backend/src/plugins/Automod/functions/getMatchingRecentActions.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { AutomodPluginType } from "../types";
 import { RecentActionType } from "../constants";
+import { AutomodPluginType } from "../types";
 
 export function getMatchingRecentActions(
   pluginData: GuildPluginData<AutomodPluginType>,
diff --git a/backend/src/plugins/Automod/functions/getTextMatchPartialSummary.ts b/backend/src/plugins/Automod/functions/getTextMatchPartialSummary.ts
index 99442b1e..7ce964d5 100644
--- a/backend/src/plugins/Automod/functions/getTextMatchPartialSummary.ts
+++ b/backend/src/plugins/Automod/functions/getTextMatchPartialSummary.ts
@@ -1,7 +1,7 @@
-import { MatchableTextType } from "./matchMultipleTextTypesOnMessage";
-import { AutomodContext, AutomodPluginType } from "../types";
-import { messageSummary, verboseChannelMention } from "../../../utils";
 import { GuildPluginData } from "knub";
+import { messageSummary, verboseChannelMention } from "../../../utils";
+import { AutomodContext, AutomodPluginType } from "../types";
+import { MatchableTextType } from "./matchMultipleTextTypesOnMessage";
 
 export function getTextMatchPartialSummary(
   pluginData: GuildPluginData<AutomodPluginType>,
diff --git a/backend/src/plugins/Automod/functions/ignoredRoleChanges.ts b/backend/src/plugins/Automod/functions/ignoredRoleChanges.ts
index a3c881a6..a8314a85 100644
--- a/backend/src/plugins/Automod/functions/ignoredRoleChanges.ts
+++ b/backend/src/plugins/Automod/functions/ignoredRoleChanges.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { AutomodPluginType } from "../types";
 import { MINUTES } from "../../../utils";
+import { AutomodPluginType } from "../types";
 
 const IGNORED_ROLE_CHANGE_LIFETIME = 5 * MINUTES;
 
diff --git a/backend/src/plugins/Automod/functions/matchMultipleTextTypesOnMessage.ts b/backend/src/plugins/Automod/functions/matchMultipleTextTypesOnMessage.ts
index 2638d677..6b2e1038 100644
--- a/backend/src/plugins/Automod/functions/matchMultipleTextTypesOnMessage.ts
+++ b/backend/src/plugins/Automod/functions/matchMultipleTextTypesOnMessage.ts
@@ -1,8 +1,8 @@
+import { Constants } from "discord.js";
+import { GuildPluginData } from "knub";
 import { SavedMessage } from "../../../data/entities/SavedMessage";
 import { resolveMember } from "../../../utils";
-import { GuildPluginData } from "knub";
 import { AutomodPluginType } from "../types";
-import { Activity, Constants } from "discord.js";
 
 type TextTriggerWithMultipleMatchTypes = {
   match_messages: boolean;
diff --git a/backend/src/plugins/Automod/functions/resolveActionContactMethods.ts b/backend/src/plugins/Automod/functions/resolveActionContactMethods.ts
index 83753a02..a7c465fc 100644
--- a/backend/src/plugins/Automod/functions/resolveActionContactMethods.ts
+++ b/backend/src/plugins/Automod/functions/resolveActionContactMethods.ts
@@ -1,9 +1,9 @@
-import { disableUserNotificationStrings, UserNotificationMethod } from "../../../utils";
-import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
-
-import { GuildPluginData } from "knub";
-import { AutomodPluginType } from "../types";
 import { TextChannel } from "discord.js";
+import { GuildPluginData } from "knub";
+import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
+import { disableUserNotificationStrings, UserNotificationMethod } from "../../../utils";
+import { AutomodPluginType } from "../types";
+
 
 export function resolveActionContactMethods(
   pluginData: GuildPluginData<AutomodPluginType>,
diff --git a/backend/src/plugins/Automod/functions/runAutomod.ts b/backend/src/plugins/Automod/functions/runAutomod.ts
index f95a9abf..3af968da 100644
--- a/backend/src/plugins/Automod/functions/runAutomod.ts
+++ b/backend/src/plugins/Automod/functions/runAutomod.ts
@@ -1,11 +1,11 @@
-import { GuildPluginData } from "knub";
-import { AutomodContext, AutomodPluginType } from "../types";
-import { availableTriggers } from "../triggers/availableTriggers";
-import { availableActions } from "../actions/availableActions";
-import { AutomodTriggerMatchResult } from "../helpers";
-import { CleanAction } from "../actions/clean";
-import { checkAndUpdateCooldown } from "./checkAndUpdateCooldown";
 import { TextChannel } from "discord.js";
+import { GuildPluginData } from "knub";
+import { availableActions } from "../actions/availableActions";
+import { CleanAction } from "../actions/clean";
+import { AutomodTriggerMatchResult } from "../helpers";
+import { availableTriggers } from "../triggers/availableTriggers";
+import { AutomodContext, AutomodPluginType } from "../types";
+import { checkAndUpdateCooldown } from "./checkAndUpdateCooldown";
 
 export async function runAutomod(pluginData: GuildPluginData<AutomodPluginType>, context: AutomodContext) {
   const userId = context.user?.id || context.member?.id || context.message?.user_id;
diff --git a/backend/src/plugins/Automod/functions/setAntiraidLevel.ts b/backend/src/plugins/Automod/functions/setAntiraidLevel.ts
index 8d926525..328a8772 100644
--- a/backend/src/plugins/Automod/functions/setAntiraidLevel.ts
+++ b/backend/src/plugins/Automod/functions/setAntiraidLevel.ts
@@ -1,10 +1,10 @@
+import { User } from "discord.js";
 import { GuildPluginData } from "knub";
-import { AutomodPluginType } from "../types";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
 import { LogType } from "../../../data/LogType";
 import { stripObjectToScalars } from "../../../utils";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
 import { runAutomodOnAntiraidLevel } from "../events/runAutomodOnAntiraidLevel";
-import { User } from "discord.js";
+import { AutomodPluginType } from "../types";
 
 export async function setAntiraidLevel(
   pluginData: GuildPluginData<AutomodPluginType>,
diff --git a/backend/src/plugins/Automod/helpers.ts b/backend/src/plugins/Automod/helpers.ts
index f14e0331..20bafe7e 100644
--- a/backend/src/plugins/Automod/helpers.ts
+++ b/backend/src/plugins/Automod/helpers.ts
@@ -1,6 +1,6 @@
+import * as t from "io-ts";
 import { GuildPluginData } from "knub";
 import { Awaitable } from "knub/dist/utils";
-import * as t from "io-ts";
 import { AutomodContext, AutomodPluginType } from "./types";
 
 interface BaseAutomodTriggerMatchResult {
diff --git a/backend/src/plugins/Automod/info.ts b/backend/src/plugins/Automod/info.ts
index 9fcdced0..6a053757 100644
--- a/backend/src/plugins/Automod/info.ts
+++ b/backend/src/plugins/Automod/info.ts
@@ -1,5 +1,5 @@
-import { ZeppelinGuildPluginBlueprint } from "../ZeppelinPluginBlueprint";
 import { trimPluginDescription } from "../../utils";
+import { ZeppelinGuildPluginBlueprint } from "../ZeppelinPluginBlueprint";
 
 export const pluginInfo: ZeppelinGuildPluginBlueprint["info"] = {
   prettyName: "Automod",
diff --git a/backend/src/plugins/Automod/triggers/antiraidLevel.ts b/backend/src/plugins/Automod/triggers/antiraidLevel.ts
index 98398811..24959c66 100644
--- a/backend/src/plugins/Automod/triggers/antiraidLevel.ts
+++ b/backend/src/plugins/Automod/triggers/antiraidLevel.ts
@@ -1,6 +1,6 @@
 import * as t from "io-ts";
-import { automodTrigger } from "../helpers";
 import { tNullable } from "../../../utils";
+import { automodTrigger } from "../helpers";
 
 // tslint:disable-next-line
 interface AntiraidLevelTriggerResult {}
diff --git a/backend/src/plugins/Automod/triggers/anyMessage.ts b/backend/src/plugins/Automod/triggers/anyMessage.ts
index 4f15c3cb..59c120ad 100644
--- a/backend/src/plugins/Automod/triggers/anyMessage.ts
+++ b/backend/src/plugins/Automod/triggers/anyMessage.ts
@@ -1,6 +1,6 @@
 import * as t from "io-ts";
-import { automodTrigger } from "../helpers";
 import { verboseChannelMention } from "../../../utils";
+import { automodTrigger } from "../helpers";
 
 // tslint:disable-next-line:no-empty-interface
 interface AnyMessageResultType {}
diff --git a/backend/src/plugins/Automod/triggers/availableTriggers.ts b/backend/src/plugins/Automod/triggers/availableTriggers.ts
index cbb5b7d2..dbd02cc8 100644
--- a/backend/src/plugins/Automod/triggers/availableTriggers.ts
+++ b/backend/src/plugins/Automod/triggers/availableTriggers.ts
@@ -1,32 +1,32 @@
 import * as t from "io-ts";
-import { MatchWordsTrigger } from "./matchWords";
 import { AutomodTriggerBlueprint } from "../helpers";
-import { MessageSpamTrigger } from "./messageSpam";
-import { MentionSpamTrigger } from "./mentionSpam";
-import { LinkSpamTrigger } from "./linkSpam";
+import { AntiraidLevelTrigger } from "./antiraidLevel";
+import { AnyMessageTrigger } from "./anyMessage";
 import { AttachmentSpamTrigger } from "./attachmentSpam";
-import { EmojiSpamTrigger } from "./emojiSpam";
-import { LineSpamTrigger } from "./lineSpam";
+import { BanTrigger } from "./ban";
 import { CharacterSpamTrigger } from "./characterSpam";
-import { MatchRegexTrigger } from "./matchRegex";
+import { CounterTrigger } from "./counterTrigger";
+import { EmojiSpamTrigger } from "./emojiSpam";
+import { KickTrigger } from "./kick";
+import { LineSpamTrigger } from "./lineSpam";
+import { LinkSpamTrigger } from "./linkSpam";
+import { MatchAttachmentTypeTrigger } from "./matchAttachmentType";
 import { MatchInvitesTrigger } from "./matchInvites";
 import { MatchLinksTrigger } from "./matchLinks";
-import { MatchAttachmentTypeTrigger } from "./matchAttachmentType";
-import { MemberJoinSpamTrigger } from "./memberJoinSpam";
+import { MatchRegexTrigger } from "./matchRegex";
+import { MatchWordsTrigger } from "./matchWords";
 import { MemberJoinTrigger } from "./memberJoin";
+import { MemberJoinSpamTrigger } from "./memberJoinSpam";
+import { MentionSpamTrigger } from "./mentionSpam";
+import { MessageSpamTrigger } from "./messageSpam";
+import { MuteTrigger } from "./mute";
+import { NoteTrigger } from "./note";
 import { RoleAddedTrigger } from "./roleAdded";
 import { RoleRemovedTrigger } from "./roleRemoved";
 import { StickerSpamTrigger } from "./stickerSpam";
-import { CounterTrigger } from "./counterTrigger";
-import { NoteTrigger } from "./note";
-import { WarnTrigger } from "./warn";
-import { MuteTrigger } from "./mute";
-import { UnmuteTrigger } from "./unmute";
-import { KickTrigger } from "./kick";
-import { BanTrigger } from "./ban";
 import { UnbanTrigger } from "./unban";
-import { AnyMessageTrigger } from "./anyMessage";
-import { AntiraidLevelTrigger } from "./antiraidLevel";
+import { UnmuteTrigger } from "./unmute";
+import { WarnTrigger } from "./warn";
 
 export const availableTriggers: Record<string, AutomodTriggerBlueprint<any, any>> = {
   any_message: AnyMessageTrigger,
diff --git a/backend/src/plugins/Automod/triggers/counterTrigger.ts b/backend/src/plugins/Automod/triggers/counterTrigger.ts
index ddfda013..a446164b 100644
--- a/backend/src/plugins/Automod/triggers/counterTrigger.ts
+++ b/backend/src/plugins/Automod/triggers/counterTrigger.ts
@@ -1,8 +1,6 @@
 import * as t from "io-ts";
-import { automodTrigger } from "../helpers";
-import { consumeIgnoredRoleChange } from "../functions/ignoredRoleChanges";
-import { CountersPlugin } from "../../Counters/CountersPlugin";
 import { tNullable } from "../../../utils";
+import { automodTrigger } from "../helpers";
 
 // tslint:disable-next-line
 interface CounterTriggerResult {}
diff --git a/backend/src/plugins/Automod/triggers/matchAttachmentType.ts b/backend/src/plugins/Automod/triggers/matchAttachmentType.ts
index 39163095..7541b577 100644
--- a/backend/src/plugins/Automod/triggers/matchAttachmentType.ts
+++ b/backend/src/plugins/Automod/triggers/matchAttachmentType.ts
@@ -1,12 +1,12 @@
 import * as t from "io-ts";
-import { automodTrigger } from "../helpers";
 import {
-  asSingleLine,
-  disableCodeBlocks,
-  disableInlineCode,
-  messageSummary,
-  verboseChannelMention,
+    asSingleLine,
+
+    disableInlineCode,
+    messageSummary,
+    verboseChannelMention
 } from "../../../utils";
+import { automodTrigger } from "../helpers";
 
 interface MatchResultType {
   matchedType: string;
diff --git a/backend/src/plugins/Automod/triggers/matchInvites.ts b/backend/src/plugins/Automod/triggers/matchInvites.ts
index 1e254711..6b238841 100644
--- a/backend/src/plugins/Automod/triggers/matchInvites.ts
+++ b/backend/src/plugins/Automod/triggers/matchInvites.ts
@@ -1,17 +1,14 @@
 import * as t from "io-ts";
-import { automodTrigger } from "../helpers";
 import {
-  disableCodeBlocks,
-  disableInlineCode,
-  getInviteCodesInString,
-  GuildInvite,
-  isGuildInvite,
-  resolveInvite,
-  tNullable,
-  verboseChannelMention,
+    getInviteCodesInString,
+    GuildInvite,
+    isGuildInvite,
+    resolveInvite,
+    tNullable
 } from "../../../utils";
-import { MatchableTextType, matchMultipleTextTypesOnMessage } from "../functions/matchMultipleTextTypesOnMessage";
 import { getTextMatchPartialSummary } from "../functions/getTextMatchPartialSummary";
+import { MatchableTextType, matchMultipleTextTypesOnMessage } from "../functions/matchMultipleTextTypesOnMessage";
+import { automodTrigger } from "../helpers";
 
 interface MatchResultType {
   type: MatchableTextType;
diff --git a/backend/src/plugins/Automod/triggers/matchLinks.ts b/backend/src/plugins/Automod/triggers/matchLinks.ts
index 50d953d6..29c05190 100644
--- a/backend/src/plugins/Automod/triggers/matchLinks.ts
+++ b/backend/src/plugins/Automod/triggers/matchLinks.ts
@@ -1,18 +1,15 @@
-import * as t from "io-ts";
 import escapeStringRegexp from "escape-string-regexp";
-import { automodTrigger } from "../helpers";
+import * as t from "io-ts";
+import { allowTimeout } from "../../../RegExpRunner";
 import {
-  asSingleLine,
-  disableCodeBlocks,
-  disableInlineCode,
-  getUrlsInString,
-  tNullable,
-  verboseChannelMention,
+    disableInlineCode,
+    getUrlsInString,
+    tNullable
 } from "../../../utils";
-import { MatchableTextType, matchMultipleTextTypesOnMessage } from "../functions/matchMultipleTextTypesOnMessage";
 import { TRegex } from "../../../validatorUtils";
 import { getTextMatchPartialSummary } from "../functions/getTextMatchPartialSummary";
-import { allowTimeout } from "../../../RegExpRunner";
+import { MatchableTextType, matchMultipleTextTypesOnMessage } from "../functions/matchMultipleTextTypesOnMessage";
+import { automodTrigger } from "../helpers";
 
 interface MatchResultType {
   type: MatchableTextType;
diff --git a/backend/src/plugins/Automod/triggers/matchRegex.ts b/backend/src/plugins/Automod/triggers/matchRegex.ts
index 95dc3241..5d585f08 100644
--- a/backend/src/plugins/Automod/triggers/matchRegex.ts
+++ b/backend/src/plugins/Automod/triggers/matchRegex.ts
@@ -1,12 +1,12 @@
 import * as t from "io-ts";
-import { automodTrigger } from "../helpers";
-import { disableInlineCode, verboseChannelMention } from "../../../utils";
-import { MatchableTextType, matchMultipleTextTypesOnMessage } from "../functions/matchMultipleTextTypesOnMessage";
-import { getTextMatchPartialSummary } from "../functions/getTextMatchPartialSummary";
 import { allowTimeout } from "../../../RegExpRunner";
-import { TRegex } from "../../../validatorUtils";
+import { disableInlineCode } from "../../../utils";
 import { normalizeText } from "../../../utils/normalizeText";
 import { stripMarkdown } from "../../../utils/stripMarkdown";
+import { TRegex } from "../../../validatorUtils";
+import { getTextMatchPartialSummary } from "../functions/getTextMatchPartialSummary";
+import { MatchableTextType, matchMultipleTextTypesOnMessage } from "../functions/matchMultipleTextTypesOnMessage";
+import { automodTrigger } from "../helpers";
 
 interface MatchResultType {
   pattern: string;
diff --git a/backend/src/plugins/Automod/triggers/matchWords.ts b/backend/src/plugins/Automod/triggers/matchWords.ts
index b5a2da97..2a011546 100644
--- a/backend/src/plugins/Automod/triggers/matchWords.ts
+++ b/backend/src/plugins/Automod/triggers/matchWords.ts
@@ -1,11 +1,11 @@
-import * as t from "io-ts";
 import escapeStringRegexp from "escape-string-regexp";
-import { automodTrigger } from "../helpers";
-import { disableInlineCode, verboseChannelMention } from "../../../utils";
-import { MatchableTextType, matchMultipleTextTypesOnMessage } from "../functions/matchMultipleTextTypesOnMessage";
-import { getTextMatchPartialSummary } from "../functions/getTextMatchPartialSummary";
+import * as t from "io-ts";
+import { disableInlineCode } from "../../../utils";
 import { normalizeText } from "../../../utils/normalizeText";
 import { stripMarkdown } from "../../../utils/stripMarkdown";
+import { getTextMatchPartialSummary } from "../functions/getTextMatchPartialSummary";
+import { MatchableTextType, matchMultipleTextTypesOnMessage } from "../functions/matchMultipleTextTypesOnMessage";
+import { automodTrigger } from "../helpers";
 
 interface MatchResultType {
   word: string;
diff --git a/backend/src/plugins/Automod/triggers/memberJoin.ts b/backend/src/plugins/Automod/triggers/memberJoin.ts
index a94b6b52..014c992b 100644
--- a/backend/src/plugins/Automod/triggers/memberJoin.ts
+++ b/backend/src/plugins/Automod/triggers/memberJoin.ts
@@ -1,6 +1,6 @@
 import * as t from "io-ts";
-import { automodTrigger } from "../helpers";
 import { convertDelayStringToMS, tDelayString } from "../../../utils";
+import { automodTrigger } from "../helpers";
 
 export const MemberJoinTrigger = automodTrigger<unknown>()({
   configType: t.type({
diff --git a/backend/src/plugins/Automod/triggers/memberJoinSpam.ts b/backend/src/plugins/Automod/triggers/memberJoinSpam.ts
index f0f9b704..7ab1964a 100644
--- a/backend/src/plugins/Automod/triggers/memberJoinSpam.ts
+++ b/backend/src/plugins/Automod/triggers/memberJoinSpam.ts
@@ -1,10 +1,10 @@
 import * as t from "io-ts";
-import { automodTrigger } from "../helpers";
 import { convertDelayStringToMS, tDelayString } from "../../../utils";
-import { getMatchingRecentActions } from "../functions/getMatchingRecentActions";
 import { RecentActionType } from "../constants";
-import { sumRecentActionCounts } from "../functions/sumRecentActionCounts";
 import { findRecentSpam } from "../functions/findRecentSpam";
+import { getMatchingRecentActions } from "../functions/getMatchingRecentActions";
+import { sumRecentActionCounts } from "../functions/sumRecentActionCounts";
+import { automodTrigger } from "../helpers";
 
 export const MemberJoinSpamTrigger = automodTrigger<unknown>()({
   configType: t.type({
diff --git a/backend/src/plugins/Automod/triggers/roleAdded.ts b/backend/src/plugins/Automod/triggers/roleAdded.ts
index f3a4d7cb..ad0e6bfd 100644
--- a/backend/src/plugins/Automod/triggers/roleAdded.ts
+++ b/backend/src/plugins/Automod/triggers/roleAdded.ts
@@ -1,6 +1,6 @@
 import * as t from "io-ts";
-import { automodTrigger } from "../helpers";
 import { consumeIgnoredRoleChange } from "../functions/ignoredRoleChanges";
+import { automodTrigger } from "../helpers";
 
 interface RoleAddedMatchResult {
   matchedRoleId: string;
diff --git a/backend/src/plugins/Automod/triggers/roleRemoved.ts b/backend/src/plugins/Automod/triggers/roleRemoved.ts
index 430ec746..b0af1166 100644
--- a/backend/src/plugins/Automod/triggers/roleRemoved.ts
+++ b/backend/src/plugins/Automod/triggers/roleRemoved.ts
@@ -1,6 +1,6 @@
 import * as t from "io-ts";
-import { automodTrigger } from "../helpers";
 import { consumeIgnoredRoleChange } from "../functions/ignoredRoleChanges";
+import { automodTrigger } from "../helpers";
 
 interface RoleAddedMatchResult {
   matchedRoleId: string;
diff --git a/backend/src/plugins/Automod/types.ts b/backend/src/plugins/Automod/types.ts
index 08b49ee4..100899bd 100644
--- a/backend/src/plugins/Automod/types.ts
+++ b/backend/src/plugins/Automod/types.ts
@@ -1,22 +1,22 @@
+import { GuildMember, User } from "discord.js";
 import * as t from "io-ts";
-import { tNullable, UnknownUser } from "../../utils";
 import { BasePluginType, CooldownManager } from "knub";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
-import { GuildLogs } from "../../data/GuildLogs";
 import { SavedMessage } from "../../data/entities/SavedMessage";
-
-import { AvailableTriggers } from "./triggers/availableTriggers";
-import { AvailableActions } from "./actions/availableActions";
-import { Queue } from "../../Queue";
 import { GuildAntiraidLevels } from "../../data/GuildAntiraidLevels";
 import { GuildArchives } from "../../data/GuildArchives";
-import { RecentActionType } from "./constants";
-import Timeout = NodeJS.Timeout;
+import { GuildLogs } from "../../data/GuildLogs";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { Queue } from "../../Queue";
 import { RegExpRunner } from "../../RegExpRunner";
+import { tNullable } from "../../utils";
 import { CounterEvents } from "../Counters/types";
 import { ModActionsEvents, ModActionType } from "../ModActions/types";
 import { MutesEvents } from "../Mutes/types";
-import { GuildMember, User } from "discord.js";
+import { AvailableActions } from "./actions/availableActions";
+import { RecentActionType } from "./constants";
+import { AvailableTriggers } from "./triggers/availableTriggers";
+
+import Timeout = NodeJS.Timeout;
 
 export const Rule = t.type({
   enabled: t.boolean,
diff --git a/backend/src/plugins/BotControl/BotControlPlugin.ts b/backend/src/plugins/BotControl/BotControlPlugin.ts
index 6c5cffc3..8bce0acb 100644
--- a/backend/src/plugins/BotControl/BotControlPlugin.ts
+++ b/backend/src/plugins/BotControl/BotControlPlugin.ts
@@ -1,24 +1,24 @@
-import { zeppelinGlobalPlugin } from "../ZeppelinPluginBlueprint";
-import { BotControlPluginType, ConfigSchema } from "./types";
-import { GuildArchives } from "../../data/GuildArchives";
-
-import { sendSuccessMessage } from "../../pluginUtils";
-import { getActiveReload, resetActiveReload } from "./activeReload";
-import { ReloadGlobalPluginsCmd } from "./commands/ReloadGlobalPluginsCmd";
-import { ServersCmd } from "./commands/ServersCmd";
-import { LeaveServerCmd } from "./commands/LeaveServerCmd";
-import { ReloadServerCmd } from "./commands/ReloadServerCmd";
+import { TextChannel } from "discord.js";
 import { AllowedGuilds } from "../../data/AllowedGuilds";
+import { ApiPermissionAssignments } from "../../data/ApiPermissionAssignments";
+import { Configs } from "../../data/Configs";
+import { GuildArchives } from "../../data/GuildArchives";
+import { sendSuccessMessage } from "../../pluginUtils";
+import { zeppelinGlobalPlugin } from "../ZeppelinPluginBlueprint";
+import { getActiveReload, resetActiveReload } from "./activeReload";
+import { AddDashboardUserCmd } from "./commands/AddDashboardUserCmd";
 import { AllowServerCmd } from "./commands/AllowServerCmd";
 import { DisallowServerCmd } from "./commands/DisallowServerCmd";
-import { AddDashboardUserCmd } from "./commands/AddDashboardUserCmd";
-import { RemoveDashboardUserCmd } from "./commands/RemoveDashboardUserCmd";
-import { Configs } from "../../data/Configs";
-import { ApiPermissionAssignments } from "../../data/ApiPermissionAssignments";
-import { ListDashboardUsersCmd } from "./commands/ListDashboardUsersCmd";
-import { ListDashboardPermsCmd } from "./commands/ListDashboardPermsCmd";
 import { EligibleCmd } from "./commands/EligibleCmd";
-import { TextChannel } from "discord.js";
+import { LeaveServerCmd } from "./commands/LeaveServerCmd";
+import { ListDashboardPermsCmd } from "./commands/ListDashboardPermsCmd";
+import { ListDashboardUsersCmd } from "./commands/ListDashboardUsersCmd";
+import { ReloadGlobalPluginsCmd } from "./commands/ReloadGlobalPluginsCmd";
+import { ReloadServerCmd } from "./commands/ReloadServerCmd";
+import { RemoveDashboardUserCmd } from "./commands/RemoveDashboardUserCmd";
+import { ServersCmd } from "./commands/ServersCmd";
+import { BotControlPluginType, ConfigSchema } from "./types";
+
 
 const defaultOptions = {
   config: {
diff --git a/backend/src/plugins/BotControl/commands/AddDashboardUserCmd.ts b/backend/src/plugins/BotControl/commands/AddDashboardUserCmd.ts
index 3e207b1e..156606da 100644
--- a/backend/src/plugins/BotControl/commands/AddDashboardUserCmd.ts
+++ b/backend/src/plugins/BotControl/commands/AddDashboardUserCmd.ts
@@ -1,8 +1,8 @@
-import { botControlCmd } from "../types";
-import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { ApiPermissions } from "@shared/apiPermissions";
 import { TextChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { botControlCmd } from "../types";
 
 export const AddDashboardUserCmd = botControlCmd({
   trigger: ["add_dashboard_user"],
diff --git a/backend/src/plugins/BotControl/commands/AllowServerCmd.ts b/backend/src/plugins/BotControl/commands/AllowServerCmd.ts
index 751fdfcc..2ff34f6d 100644
--- a/backend/src/plugins/BotControl/commands/AllowServerCmd.ts
+++ b/backend/src/plugins/BotControl/commands/AllowServerCmd.ts
@@ -1,9 +1,9 @@
-import { botControlCmd } from "../types";
-import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { isSnowflake } from "../../../utils";
 import { ApiPermissions } from "@shared/apiPermissions";
 import { TextChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { isSnowflake } from "../../../utils";
+import { botControlCmd } from "../types";
 
 export const AllowServerCmd = botControlCmd({
   trigger: ["allow_server", "allowserver", "add_server", "addserver"],
diff --git a/backend/src/plugins/BotControl/commands/DisallowServerCmd.ts b/backend/src/plugins/BotControl/commands/DisallowServerCmd.ts
index 1fc4916e..9dfd9599 100644
--- a/backend/src/plugins/BotControl/commands/DisallowServerCmd.ts
+++ b/backend/src/plugins/BotControl/commands/DisallowServerCmd.ts
@@ -1,8 +1,8 @@
-import { botControlCmd } from "../types";
-import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { noop } from "../../../utils";
 import { TextChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { noop } from "../../../utils";
+import { botControlCmd } from "../types";
 
 export const DisallowServerCmd = botControlCmd({
   trigger: ["disallow_server", "disallowserver", "remove_server", "removeserver"],
diff --git a/backend/src/plugins/BotControl/commands/EligibleCmd.ts b/backend/src/plugins/BotControl/commands/EligibleCmd.ts
index ff68d1d8..522cf3a0 100644
--- a/backend/src/plugins/BotControl/commands/EligibleCmd.ts
+++ b/backend/src/plugins/BotControl/commands/EligibleCmd.ts
@@ -1,8 +1,8 @@
-import { botControlCmd } from "../types";
-import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { resolveInvite, verboseUserMention } from "../../../utils";
 import { TextChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { resolveInvite, verboseUserMention } from "../../../utils";
+import { botControlCmd } from "../types";
 
 const REQUIRED_MEMBER_COUNT = 5000;
 
diff --git a/backend/src/plugins/BotControl/commands/LeaveServerCmd.ts b/backend/src/plugins/BotControl/commands/LeaveServerCmd.ts
index 1d96eb96..8352548a 100644
--- a/backend/src/plugins/BotControl/commands/LeaveServerCmd.ts
+++ b/backend/src/plugins/BotControl/commands/LeaveServerCmd.ts
@@ -1,7 +1,7 @@
-import { botControlCmd } from "../types";
-import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { TextChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { botControlCmd } from "../types";
 
 export const LeaveServerCmd = botControlCmd({
   trigger: ["leave_server", "leave_guild"],
diff --git a/backend/src/plugins/BotControl/commands/ListDashboardPermsCmd.ts b/backend/src/plugins/BotControl/commands/ListDashboardPermsCmd.ts
index 2933cf32..d9310906 100644
--- a/backend/src/plugins/BotControl/commands/ListDashboardPermsCmd.ts
+++ b/backend/src/plugins/BotControl/commands/ListDashboardPermsCmd.ts
@@ -1,10 +1,10 @@
-import { botControlCmd } from "../types";
-import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { TextChannel } from "discord.js";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { createChunkedMessage, resolveUser } from "../../../utils";
 import { AllowedGuild } from "../../../data/entities/AllowedGuild";
 import { ApiPermissionAssignment } from "../../../data/entities/ApiPermissionAssignment";
-import { TextChannel } from "discord.js";
+import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { resolveUser } from "../../../utils";
+import { botControlCmd } from "../types";
 
 export const ListDashboardPermsCmd = botControlCmd({
   trigger: ["list_dashboard_permissions", "list_dashboard_perms", "list_dash_permissionss", "list_dash_perms"],
diff --git a/backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts b/backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts
index 107579b2..81e58fb7 100644
--- a/backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts
+++ b/backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts
@@ -1,9 +1,8 @@
-import { botControlCmd } from "../types";
-import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { ApiPermissions } from "@shared/apiPermissions";
-import { resolveUser, UnknownUser } from "../../../utils";
 import { TextChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { resolveUser } from "../../../utils";
+import { botControlCmd } from "../types";
 
 export const ListDashboardUsersCmd = botControlCmd({
   trigger: ["list_dashboard_users"],
diff --git a/backend/src/plugins/BotControl/commands/ReloadGlobalPluginsCmd.ts b/backend/src/plugins/BotControl/commands/ReloadGlobalPluginsCmd.ts
index 8be32a5e..1b3629ce 100644
--- a/backend/src/plugins/BotControl/commands/ReloadGlobalPluginsCmd.ts
+++ b/backend/src/plugins/BotControl/commands/ReloadGlobalPluginsCmd.ts
@@ -1,7 +1,7 @@
-import { botControlCmd } from "../types";
+import { TextChannel } from "discord.js";
 import { isOwnerPreFilter } from "../../../pluginUtils";
 import { getActiveReload, setActiveReload } from "../activeReload";
-import { TextChannel } from "discord.js";
+import { botControlCmd } from "../types";
 
 export const ReloadGlobalPluginsCmd = botControlCmd({
   trigger: "bot_reload_global_plugins",
diff --git a/backend/src/plugins/BotControl/commands/ReloadServerCmd.ts b/backend/src/plugins/BotControl/commands/ReloadServerCmd.ts
index 892ef744..0166cba1 100644
--- a/backend/src/plugins/BotControl/commands/ReloadServerCmd.ts
+++ b/backend/src/plugins/BotControl/commands/ReloadServerCmd.ts
@@ -1,7 +1,7 @@
-import { botControlCmd } from "../types";
-import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { TextChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { botControlCmd } from "../types";
 
 export const ReloadServerCmd = botControlCmd({
   trigger: ["reload_server", "reload_guild"],
diff --git a/backend/src/plugins/BotControl/commands/RemoveDashboardUserCmd.ts b/backend/src/plugins/BotControl/commands/RemoveDashboardUserCmd.ts
index 186e02a2..75085491 100644
--- a/backend/src/plugins/BotControl/commands/RemoveDashboardUserCmd.ts
+++ b/backend/src/plugins/BotControl/commands/RemoveDashboardUserCmd.ts
@@ -1,8 +1,7 @@
-import { botControlCmd } from "../types";
-import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { ApiPermissions } from "@shared/apiPermissions";
 import { TextChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { botControlCmd } from "../types";
 
 export const RemoveDashboardUserCmd = botControlCmd({
   trigger: ["remove_dashboard_user"],
diff --git a/backend/src/plugins/BotControl/commands/ServersCmd.ts b/backend/src/plugins/BotControl/commands/ServersCmd.ts
index 1d99230b..53950f53 100644
--- a/backend/src/plugins/BotControl/commands/ServersCmd.ts
+++ b/backend/src/plugins/BotControl/commands/ServersCmd.ts
@@ -1,9 +1,9 @@
-import { botControlCmd } from "../types";
-import { isOwnerPreFilter } from "../../../pluginUtils";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import escapeStringRegexp from "escape-string-regexp";
-import { createChunkedMessage, getUser, sorter } from "../../../utils";
 import { TextChannel } from "discord.js";
+import escapeStringRegexp from "escape-string-regexp";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { isOwnerPreFilter } from "../../../pluginUtils";
+import { createChunkedMessage, getUser, sorter } from "../../../utils";
+import { botControlCmd } from "../types";
 
 export const ServersCmd = botControlCmd({
   trigger: ["servers", "guilds"],
diff --git a/backend/src/plugins/BotControl/types.ts b/backend/src/plugins/BotControl/types.ts
index d84a526d..1acac3a4 100644
--- a/backend/src/plugins/BotControl/types.ts
+++ b/backend/src/plugins/BotControl/types.ts
@@ -1,10 +1,10 @@
 import * as t from "io-ts";
-import { tNullable } from "../../utils";
 import { BasePluginType, typedGlobalCommand, typedGlobalEventListener } from "knub";
-import { GuildArchives } from "../../data/GuildArchives";
 import { AllowedGuilds } from "../../data/AllowedGuilds";
 import { ApiPermissionAssignments } from "../../data/ApiPermissionAssignments";
 import { Configs } from "../../data/Configs";
+import { GuildArchives } from "../../data/GuildArchives";
+import { tNullable } from "../../utils";
 
 export const ConfigSchema = t.type({
   can_use: t.boolean,
diff --git a/backend/src/plugins/Cases/CasesPlugin.ts b/backend/src/plugins/Cases/CasesPlugin.ts
index 2bc0d861..6f870fc6 100644
--- a/backend/src/plugins/Cases/CasesPlugin.ts
+++ b/backend/src/plugins/Cases/CasesPlugin.ts
@@ -1,21 +1,21 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { CaseArgs, CaseNoteArgs, CasesPluginType, ConfigSchema } from "./types";
-import { createCase } from "./functions/createCase";
-import { GuildLogs } from "../../data/GuildLogs";
+import { CaseTypes } from "../../data/CaseTypes";
+import { Case } from "../../data/entities/Case";
 import { GuildArchives } from "../../data/GuildArchives";
 import { GuildCases } from "../../data/GuildCases";
-import { createCaseNote } from "./functions/createCaseNote";
-import { Case } from "../../data/entities/Case";
-import { postCaseToCaseLogChannel } from "./functions/postToCaseLogChannel";
-import { CaseTypes } from "../../data/CaseTypes";
-import { getCaseTypeAmountForUserId } from "./functions/getCaseTypeAmountForUserId";
-import { getCaseEmbed } from "./functions/getCaseEmbed";
-import { trimPluginDescription } from "../../utils";
-import { getCaseSummary } from "./functions/getCaseSummary";
-import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
+import { GuildLogs } from "../../data/GuildLogs";
 import { mapToPublicFn } from "../../pluginUtils";
-import { getTotalCasesByMod } from "./functions/getTotalCasesByMod";
+import { trimPluginDescription } from "../../utils";
+import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { createCase } from "./functions/createCase";
+import { createCaseNote } from "./functions/createCaseNote";
+import { getCaseEmbed } from "./functions/getCaseEmbed";
+import { getCaseSummary } from "./functions/getCaseSummary";
+import { getCaseTypeAmountForUserId } from "./functions/getCaseTypeAmountForUserId";
 import { getRecentCasesByMod } from "./functions/getRecentCasesByMod";
+import { getTotalCasesByMod } from "./functions/getTotalCasesByMod";
+import { postCaseToCaseLogChannel } from "./functions/postToCaseLogChannel";
+import { CaseArgs, CaseNoteArgs, CasesPluginType, ConfigSchema } from "./types";
 
 const defaultOptions = {
   config: {
diff --git a/backend/src/plugins/Cases/functions/createCase.ts b/backend/src/plugins/Cases/functions/createCase.ts
index fd3caa04..0d66c71e 100644
--- a/backend/src/plugins/Cases/functions/createCase.ts
+++ b/backend/src/plugins/Cases/functions/createCase.ts
@@ -1,9 +1,9 @@
-import { CaseArgs, CasesPluginType } from "../types";
-import { resolveUser } from "../../../utils";
 import { GuildPluginData } from "knub";
+import { logger } from "../../../logger";
+import { resolveUser } from "../../../utils";
+import { CaseArgs, CasesPluginType } from "../types";
 import { createCaseNote } from "./createCaseNote";
 import { postCaseToCaseLogChannel } from "./postToCaseLogChannel";
-import { logger } from "../../../logger";
 
 export async function createCase(pluginData: GuildPluginData<CasesPluginType>, args: CaseArgs) {
   const user = await resolveUser(pluginData.client, args.userId);
diff --git a/backend/src/plugins/Cases/functions/createCaseNote.ts b/backend/src/plugins/Cases/functions/createCaseNote.ts
index cd3ae649..ed95e7a7 100644
--- a/backend/src/plugins/Cases/functions/createCaseNote.ts
+++ b/backend/src/plugins/Cases/functions/createCaseNote.ts
@@ -1,9 +1,9 @@
-import { CaseNoteArgs, CasesPluginType } from "../types";
 import { GuildPluginData } from "knub";
 import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
-import { resolveCaseId } from "./resolveCaseId";
-import { postCaseToCaseLogChannel } from "./postToCaseLogChannel";
 import { resolveUser, UnknownUser } from "../../../utils";
+import { CaseNoteArgs, CasesPluginType } from "../types";
+import { postCaseToCaseLogChannel } from "./postToCaseLogChannel";
+import { resolveCaseId } from "./resolveCaseId";
 
 export async function createCaseNote(pluginData: GuildPluginData<CasesPluginType>, args: CaseNoteArgs): Promise<void> {
   const theCase = await pluginData.state.cases.find(resolveCaseId(args.caseId));
diff --git a/backend/src/plugins/Cases/functions/getCaseColor.ts b/backend/src/plugins/Cases/functions/getCaseColor.ts
index 1cf6ce77..379b171d 100644
--- a/backend/src/plugins/Cases/functions/getCaseColor.ts
+++ b/backend/src/plugins/Cases/functions/getCaseColor.ts
@@ -1,7 +1,7 @@
 import { GuildPluginData } from "knub";
-import { CasesPluginType } from "../types";
 import { CaseTypes, CaseTypeToName } from "../../../data/CaseTypes";
 import { caseColors } from "../caseColors";
+import { CasesPluginType } from "../types";
 
 export function getCaseColor(pluginData: GuildPluginData<CasesPluginType>, caseType: CaseTypes) {
   return pluginData.config.get().case_colors?.[CaseTypeToName[caseType]] ?? caseColors[caseType];
diff --git a/backend/src/plugins/Cases/functions/getCaseEmbed.ts b/backend/src/plugins/Cases/functions/getCaseEmbed.ts
index a73c5e15..5a3562c8 100644
--- a/backend/src/plugins/Cases/functions/getCaseEmbed.ts
+++ b/backend/src/plugins/Cases/functions/getCaseEmbed.ts
@@ -1,14 +1,14 @@
-import { Case } from "../../../data/entities/Case";
-
+import { MessageOptions } from "discord.js";
+import { GuildPluginData } from "knub";
 import moment from "moment-timezone";
 import { CaseTypes } from "../../../data/CaseTypes";
-import { GuildPluginData, helpers } from "knub";
-import { CasesPluginType } from "../types";
-import { resolveCaseId } from "./resolveCaseId";
-import { chunkLines, chunkMessageLines, emptyEmbedValue, messageLink } from "../../../utils";
-import { getCaseColor } from "./getCaseColor";
+import { Case } from "../../../data/entities/Case";
+import { chunkMessageLines, emptyEmbedValue, messageLink } from "../../../utils";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
-import { MessageOptions } from "discord.js";
+import { CasesPluginType } from "../types";
+import { getCaseColor } from "./getCaseColor";
+import { resolveCaseId } from "./resolveCaseId";
+
 
 export async function getCaseEmbed(
   pluginData: GuildPluginData<CasesPluginType>,
diff --git a/backend/src/plugins/Cases/functions/getCaseIcon.ts b/backend/src/plugins/Cases/functions/getCaseIcon.ts
index eb8fc3d5..6748a7ef 100644
--- a/backend/src/plugins/Cases/functions/getCaseIcon.ts
+++ b/backend/src/plugins/Cases/functions/getCaseIcon.ts
@@ -1,7 +1,7 @@
 import { GuildPluginData } from "knub";
-import { CasesPluginType } from "../types";
 import { CaseTypes, CaseTypeToName } from "../../../data/CaseTypes";
 import { caseIcons } from "../caseIcons";
+import { CasesPluginType } from "../types";
 
 export function getCaseIcon(pluginData: GuildPluginData<CasesPluginType>, caseType: CaseTypes) {
   return pluginData.config.get().case_icons?.[CaseTypeToName[caseType]] ?? caseIcons[caseType];
diff --git a/backend/src/plugins/Cases/functions/getCaseSummary.ts b/backend/src/plugins/Cases/functions/getCaseSummary.ts
index d948fdac..5f2f388e 100644
--- a/backend/src/plugins/Cases/functions/getCaseSummary.ts
+++ b/backend/src/plugins/Cases/functions/getCaseSummary.ts
@@ -1,22 +1,19 @@
 import { GuildPluginData } from "knub";
-import { CasesPluginType } from "../types";
-import {
-  convertDelayStringToMS,
-  DAYS,
-  DBDateFormat,
-  disableLinkPreviews,
-  emptyEmbedValue,
-  messageLink,
-} from "../../../utils";
-import { CaseTypes, CaseTypeToName } from "../../../data/CaseTypes";
+import { splitMessageIntoChunks } from "knub/dist/helpers";
 import moment from "moment-timezone";
 import { Case } from "../../../data/entities/Case";
-import humanizeDuration from "humanize-duration";
-import { humanizeDurationShort } from "../../../humanizeDurationShort";
-import { caseAbbreviations } from "../caseAbbreviations";
-import { getCaseIcon } from "./getCaseIcon";
+import {
+    convertDelayStringToMS,
+    DAYS,
+    DBDateFormat,
+    disableLinkPreviews,
+
+    messageLink
+} from "../../../utils";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
-import { splitIntoCleanChunks, splitMessageIntoChunks } from "knub/dist/helpers";
+import { caseAbbreviations } from "../caseAbbreviations";
+import { CasesPluginType } from "../types";
+import { getCaseIcon } from "./getCaseIcon";
 
 const CASE_SUMMARY_REASON_MAX_LENGTH = 300;
 const INCLUDE_MORE_NOTES_THRESHOLD = 20;
diff --git a/backend/src/plugins/Cases/functions/getCaseTypeAmountForUserId.ts b/backend/src/plugins/Cases/functions/getCaseTypeAmountForUserId.ts
index 60752242..94f35d7f 100644
--- a/backend/src/plugins/Cases/functions/getCaseTypeAmountForUserId.ts
+++ b/backend/src/plugins/Cases/functions/getCaseTypeAmountForUserId.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { CasesPluginType } from "../types";
 import { CaseTypes } from "../../../data/CaseTypes";
+import { CasesPluginType } from "../types";
 
 export async function getCaseTypeAmountForUserId(
   pluginData: GuildPluginData<CasesPluginType>,
diff --git a/backend/src/plugins/Cases/functions/getRecentCasesByMod.ts b/backend/src/plugins/Cases/functions/getRecentCasesByMod.ts
index 89ec703c..b9988078 100644
--- a/backend/src/plugins/Cases/functions/getRecentCasesByMod.ts
+++ b/backend/src/plugins/Cases/functions/getRecentCasesByMod.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { CasesPluginType } from "../types";
 import { Case } from "../../../data/entities/Case";
+import { CasesPluginType } from "../types";
 
 export function getRecentCasesByMod(
   pluginData: GuildPluginData<CasesPluginType>,
diff --git a/backend/src/plugins/Cases/functions/postToCaseLogChannel.ts b/backend/src/plugins/Cases/functions/postToCaseLogChannel.ts
index feacede1..f16895b3 100644
--- a/backend/src/plugins/Cases/functions/postToCaseLogChannel.ts
+++ b/backend/src/plugins/Cases/functions/postToCaseLogChannel.ts
@@ -1,12 +1,12 @@
+import { FileOptions, Message, MessageOptions, TextChannel } from "discord.js";
 import { GuildPluginData } from "knub";
-import { CasesPluginType } from "../types";
-
-import { isDiscordRESTError } from "../../../utils";
-import { LogType } from "../../../data/LogType";
 import { Case } from "../../../data/entities/Case";
+import { LogType } from "../../../data/LogType";
+import { isDiscordRESTError } from "../../../utils";
+import { CasesPluginType } from "../types";
 import { getCaseEmbed } from "./getCaseEmbed";
 import { resolveCaseId } from "./resolveCaseId";
-import { FileOptions, Message, MessageOptions, TextChannel } from "discord.js";
+
 
 export async function postToCaseLogChannel(
   pluginData: GuildPluginData<CasesPluginType>,
diff --git a/backend/src/plugins/Cases/types.ts b/backend/src/plugins/Cases/types.ts
index 94fe1920..9ec1a371 100644
--- a/backend/src/plugins/Cases/types.ts
+++ b/backend/src/plugins/Cases/types.ts
@@ -1,10 +1,10 @@
 import * as t from "io-ts";
-import { tDelayString, tPartialDictionary, tNullable } from "../../utils";
+import { BasePluginType } from "knub";
 import { CaseNameToType, CaseTypes } from "../../data/CaseTypes";
-import { BasePluginType, typedGuildCommand, typedGuildEventListener } from "knub";
-import { GuildLogs } from "../../data/GuildLogs";
-import { GuildCases } from "../../data/GuildCases";
 import { GuildArchives } from "../../data/GuildArchives";
+import { GuildCases } from "../../data/GuildCases";
+import { GuildLogs } from "../../data/GuildLogs";
+import { tDelayString, tNullable, tPartialDictionary } from "../../utils";
 import { tColor } from "../../utils/tColor";
 
 export const ConfigSchema = t.type({
diff --git a/backend/src/plugins/Censor/CensorPlugin.ts b/backend/src/plugins/Censor/CensorPlugin.ts
index 4dc103ec..f8401f54 100644
--- a/backend/src/plugins/Censor/CensorPlugin.ts
+++ b/backend/src/plugins/Censor/CensorPlugin.ts
@@ -1,13 +1,13 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { PluginOptions } from "knub";
-import { ConfigSchema, CensorPluginType } from "./types";
 import { GuildLogs } from "../../data/GuildLogs";
 import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners";
+import { trimPluginDescription } from "../../utils";
+import { LogsPlugin } from "../Logs/LogsPlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { CensorPluginType, ConfigSchema } from "./types";
 import { onMessageCreate } from "./util/onMessageCreate";
 import { onMessageUpdate } from "./util/onMessageUpdate";
-import { trimPluginDescription } from "../../utils";
-import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners";
-import { LogsPlugin } from "../Logs/LogsPlugin";
 
 const defaultOptions: PluginOptions<CensorPluginType> = {
   config: {
diff --git a/backend/src/plugins/Censor/types.ts b/backend/src/plugins/Censor/types.ts
index 5cc64f5d..1363baef 100644
--- a/backend/src/plugins/Censor/types.ts
+++ b/backend/src/plugins/Censor/types.ts
@@ -1,10 +1,10 @@
 import * as t from "io-ts";
 import { BasePluginType } from "knub";
-import { tNullable } from "../../utils";
-import { TRegex } from "../../validatorUtils";
 import { GuildLogs } from "../../data/GuildLogs";
 import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { RegExpRunner } from "../../RegExpRunner";
+import { tNullable } from "../../utils";
+import { TRegex } from "../../validatorUtils";
 
 export const ConfigSchema = t.type({
   filter_zalgo: t.boolean,
diff --git a/backend/src/plugins/Censor/util/applyFiltersToMsg.ts b/backend/src/plugins/Censor/util/applyFiltersToMsg.ts
index 045276f2..f0ea8c40 100644
--- a/backend/src/plugins/Censor/util/applyFiltersToMsg.ts
+++ b/backend/src/plugins/Censor/util/applyFiltersToMsg.ts
@@ -1,15 +1,14 @@
-import { GuildPluginData } from "knub";
-import { CensorPluginType } from "../types";
-import { SavedMessage } from "../../../data/entities/SavedMessage";
-
-import { ZalgoRegex } from "../../../data/Zalgo";
-import { getInviteCodesInString, getUrlsInString, resolveMember, resolveInvite, isGuildInvite } from "../../../utils";
-import cloneDeep from "lodash.clonedeep";
-import { censorMessage } from "./censorMessage";
+import { Invite, MessageEmbed } from "discord.js";
 import escapeStringRegexp from "escape-string-regexp";
-import { logger } from "../../../logger";
+import { GuildPluginData } from "knub";
+import cloneDeep from "lodash.clonedeep";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { ZalgoRegex } from "../../../data/Zalgo";
 import { allowTimeout } from "../../../RegExpRunner";
-import { MessageEmbed, Invite } from "discord.js";
+import { getInviteCodesInString, getUrlsInString, isGuildInvite, resolveInvite, resolveMember } from "../../../utils";
+import { CensorPluginType } from "../types";
+import { censorMessage } from "./censorMessage";
+
 
 export async function applyFiltersToMsg(
   pluginData: GuildPluginData<CensorPluginType>,
diff --git a/backend/src/plugins/Censor/util/censorMessage.ts b/backend/src/plugins/Censor/util/censorMessage.ts
index 69ed2859..62249446 100644
--- a/backend/src/plugins/Censor/util/censorMessage.ts
+++ b/backend/src/plugins/Censor/util/censorMessage.ts
@@ -1,10 +1,10 @@
+import { TextChannel } from "discord.js";
 import { GuildPluginData } from "knub";
-import { CensorPluginType } from "../types";
+import { deactivateMentions, disableCodeBlocks } from "knub/dist/helpers";
 import { SavedMessage } from "../../../data/entities/SavedMessage";
 import { LogType } from "../../../data/LogType";
-import { stripObjectToScalars, resolveUser } from "../../../utils";
-import { disableCodeBlocks, deactivateMentions } from "knub/dist/helpers";
-import { TextChannel } from "discord.js";
+import { resolveUser, stripObjectToScalars } from "../../../utils";
+import { CensorPluginType } from "../types";
 
 export async function censorMessage(
   pluginData: GuildPluginData<CensorPluginType>,
diff --git a/backend/src/plugins/Censor/util/onMessageCreate.ts b/backend/src/plugins/Censor/util/onMessageCreate.ts
index fb9cfaeb..482e9cff 100644
--- a/backend/src/plugins/Censor/util/onMessageCreate.ts
+++ b/backend/src/plugins/Censor/util/onMessageCreate.ts
@@ -1,8 +1,8 @@
 import { GuildPluginData } from "knub";
-import { CensorPluginType } from "../types";
 import { SavedMessage } from "../../../data/entities/SavedMessage";
-import { applyFiltersToMsg } from "./applyFiltersToMsg";
 import { messageLock } from "../../../utils/lockNameHelpers";
+import { CensorPluginType } from "../types";
+import { applyFiltersToMsg } from "./applyFiltersToMsg";
 
 export async function onMessageCreate(pluginData: GuildPluginData<CensorPluginType>, savedMessage: SavedMessage) {
   if (savedMessage.is_bot) return;
diff --git a/backend/src/plugins/Censor/util/onMessageUpdate.ts b/backend/src/plugins/Censor/util/onMessageUpdate.ts
index 7afd4c17..d17bf6b0 100644
--- a/backend/src/plugins/Censor/util/onMessageUpdate.ts
+++ b/backend/src/plugins/Censor/util/onMessageUpdate.ts
@@ -1,8 +1,8 @@
 import { GuildPluginData } from "knub";
-import { CensorPluginType } from "../types";
 import { SavedMessage } from "../../../data/entities/SavedMessage";
-import { applyFiltersToMsg } from "./applyFiltersToMsg";
 import { messageLock } from "../../../utils/lockNameHelpers";
+import { CensorPluginType } from "../types";
+import { applyFiltersToMsg } from "./applyFiltersToMsg";
 
 export async function onMessageUpdate(pluginData: GuildPluginData<CensorPluginType>, savedMessage: SavedMessage) {
   if (savedMessage.is_bot) return;
diff --git a/backend/src/plugins/ChannelArchiver/ChannelArchiverPlugin.ts b/backend/src/plugins/ChannelArchiver/ChannelArchiverPlugin.ts
index 249a5ef0..3349c242 100644
--- a/backend/src/plugins/ChannelArchiver/ChannelArchiverPlugin.ts
+++ b/backend/src/plugins/ChannelArchiver/ChannelArchiverPlugin.ts
@@ -1,8 +1,8 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { ChannelArchiverPluginType } from "./types";
-import { ArchiveChannelCmd } from "./commands/ArchiveChannelCmd";
 import * as t from "io-ts";
 import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { ArchiveChannelCmd } from "./commands/ArchiveChannelCmd";
+import { ChannelArchiverPluginType } from "./types";
 
 export const ChannelArchiverPlugin = zeppelinGuildPlugin<ChannelArchiverPluginType>()({
   name: "channel_archiver",
diff --git a/backend/src/plugins/ChannelArchiver/commands/ArchiveChannelCmd.ts b/backend/src/plugins/ChannelArchiver/commands/ArchiveChannelCmd.ts
index 87b61934..3d4112a9 100644
--- a/backend/src/plugins/ChannelArchiver/commands/ArchiveChannelCmd.ts
+++ b/backend/src/plugins/ChannelArchiver/commands/ArchiveChannelCmd.ts
@@ -1,10 +1,10 @@
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { channelArchiverCmd } from "../types";
-import { isOwner, sendErrorMessage } from "../../../pluginUtils";
-import { confirm, SECONDS, noop } from "../../../utils";
 import moment from "moment-timezone";
-import { rehostAttachment } from "../rehostAttachment";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { isOwner, sendErrorMessage } from "../../../pluginUtils";
+import { confirm, noop, SECONDS } from "../../../utils";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
+import { rehostAttachment } from "../rehostAttachment";
+import { channelArchiverCmd } from "../types";
 
 const MAX_ARCHIVED_MESSAGES = 5000;
 const MAX_MESSAGES_PER_FETCH = 100;
diff --git a/backend/src/plugins/ChannelArchiver/rehostAttachment.ts b/backend/src/plugins/ChannelArchiver/rehostAttachment.ts
index bf05d122..f51c6173 100644
--- a/backend/src/plugins/ChannelArchiver/rehostAttachment.ts
+++ b/backend/src/plugins/ChannelArchiver/rehostAttachment.ts
@@ -1,6 +1,6 @@
-import { downloadFile } from "../../utils";
-import fs from "fs";
 import { MessageAttachment, MessageOptions, TextChannel } from "discord.js";
+import fs from "fs";
+import { downloadFile } from "../../utils";
 const fsp = fs.promises;
 
 const MAX_ATTACHMENT_REHOST_SIZE = 1024 * 1024 * 8;
diff --git a/backend/src/plugins/CompanionChannels/CompanionChannelsPlugin.ts b/backend/src/plugins/CompanionChannels/CompanionChannelsPlugin.ts
index d3a89865..64bda1c1 100644
--- a/backend/src/plugins/CompanionChannels/CompanionChannelsPlugin.ts
+++ b/backend/src/plugins/CompanionChannels/CompanionChannelsPlugin.ts
@@ -1,9 +1,9 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { CompanionChannelsPluginType, ConfigSchema } from "./types";
+import { CooldownManager } from "knub";
 import { trimPluginDescription } from "../../utils";
 import { LogsPlugin } from "../Logs/LogsPlugin";
-import { CooldownManager } from "knub";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { VoiceStateUpdateEvt } from "./events/VoiceStateUpdateEvt";
+import { CompanionChannelsPluginType, ConfigSchema } from "./types";
 
 const defaultOptions = {
   config: {
diff --git a/backend/src/plugins/CompanionChannels/events/VoiceStateUpdateEvt.ts b/backend/src/plugins/CompanionChannels/events/VoiceStateUpdateEvt.ts
index 142e9b17..07251fdb 100644
--- a/backend/src/plugins/CompanionChannels/events/VoiceStateUpdateEvt.ts
+++ b/backend/src/plugins/CompanionChannels/events/VoiceStateUpdateEvt.ts
@@ -1,5 +1,5 @@
-import { companionChannelsEvt } from "../types";
 import { handleCompanionPermissions } from "../functions/handleCompanionPermissions";
+import { companionChannelsEvt } from "../types";
 
 export const VoiceStateUpdateEvt = companionChannelsEvt({
   event: "voiceStateUpdate",
diff --git a/backend/src/plugins/CompanionChannels/functions/handleCompanionPermissions.ts b/backend/src/plugins/CompanionChannels/functions/handleCompanionPermissions.ts
index 1a338251..3ea79867 100644
--- a/backend/src/plugins/CompanionChannels/functions/handleCompanionPermissions.ts
+++ b/backend/src/plugins/CompanionChannels/functions/handleCompanionPermissions.ts
@@ -1,11 +1,11 @@
-import { CompanionChannelsPluginType, TCompanionChannelOpts } from "../types";
-import { getCompanionChannelOptsForVoiceChannelId } from "./getCompanionChannelOptsForVoiceChannelId";
+import { Permissions, StageChannel, TextChannel, VoiceChannel } from "discord.js";
 import { GuildPluginData } from "knub";
-
+import { LogType } from "../../../data/LogType";
 import { isDiscordRESTError, MINUTES } from "../../../utils";
 import { LogsPlugin } from "../../Logs/LogsPlugin";
-import { LogType } from "../../../data/LogType";
-import { VoiceChannel, TextChannel, Permissions, StageChannel } from "discord.js";
+import { CompanionChannelsPluginType, TCompanionChannelOpts } from "../types";
+import { getCompanionChannelOptsForVoiceChannelId } from "./getCompanionChannelOptsForVoiceChannelId";
+
 
 const ERROR_COOLDOWN_KEY = "errorCooldown";
 const ERROR_COOLDOWN = 5 * MINUTES;
diff --git a/backend/src/plugins/CompanionChannels/types.ts b/backend/src/plugins/CompanionChannels/types.ts
index 1a91800d..1168b4f8 100644
--- a/backend/src/plugins/CompanionChannels/types.ts
+++ b/backend/src/plugins/CompanionChannels/types.ts
@@ -1,8 +1,6 @@
 import * as t from "io-ts";
-import { tNullable } from "../../utils";
 import { BasePluginType, CooldownManager, typedGuildEventListener } from "knub";
-import { GuildLogs } from "../../data/GuildLogs";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { tNullable } from "../../utils";
 
 // Permissions using these numbers: https://abal.moe/Eris/docs/reference (add all allowed/denied ones up)
 export const CompanionChannelOpts = t.type({
diff --git a/backend/src/plugins/Counters/CountersPlugin.ts b/backend/src/plugins/Counters/CountersPlugin.ts
index 028c6a0d..fe23cd6d 100644
--- a/backend/src/plugins/Counters/CountersPlugin.ts
+++ b/backend/src/plugins/Counters/CountersPlugin.ts
@@ -1,33 +1,32 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { ConfigSchema, CountersPluginType, TTrigger } from "./types";
+import { EventEmitter } from "events";
+import { PluginOptions } from "knub";
+import { ConfigPreprocessorFn } from "knub/dist/config/configTypes";
+import {
+    buildCounterConditionString,
+    CounterTrigger,
+    getReverseCounterComparisonOp,
+    parseCounterConditionString
+} from "../../data/entities/CounterTrigger";
 import { GuildCounters } from "../../data/GuildCounters";
 import { mapToPublicFn } from "../../pluginUtils";
-import { changeCounterValue } from "./functions/changeCounterValue";
-import { setCounterValue } from "./functions/setCounterValue";
-import { convertDelayStringToMS, MINUTES, SECONDS } from "../../utils";
-import { EventEmitter } from "events";
-import { onCounterEvent } from "./functions/onCounterEvent";
-import { offCounterEvent } from "./functions/offCounterEvent";
-import { emitCounterEvent } from "./functions/emitCounterEvent";
-import { ConfigPreprocessorFn } from "knub/dist/config/configTypes";
-import { decayCounter } from "./functions/decayCounter";
+import { convertDelayStringToMS, MINUTES } from "../../utils";
 import { StrictValidationError } from "../../validatorUtils";
-import { PluginOptions } from "knub";
-import { ViewCounterCmd } from "./commands/ViewCounterCmd";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { AddCounterCmd } from "./commands/AddCounterCmd";
+import { CountersListCmd } from "./commands/CountersListCmd";
+import { ResetAllCounterValuesCmd } from "./commands/ResetAllCounterValuesCmd";
+import { ResetCounterCmd } from "./commands/ResetCounterCmd";
 import { SetCounterCmd } from "./commands/SetCounterCmd";
-import {
-  buildCounterConditionString,
-  CounterTrigger,
-  getReverseCounterComparisonOp,
-  parseCounterConditionString,
-} from "../../data/entities/CounterTrigger";
+import { ViewCounterCmd } from "./commands/ViewCounterCmd";
+import { changeCounterValue } from "./functions/changeCounterValue";
+import { counterExists } from "./functions/counterExists";
+import { decayCounter } from "./functions/decayCounter";
 import { getPrettyNameForCounter } from "./functions/getPrettyNameForCounter";
 import { getPrettyNameForCounterTrigger } from "./functions/getPrettyNameForCounterTrigger";
-import { counterExists } from "./functions/counterExists";
-import { ResetAllCounterValuesCmd } from "./commands/ResetAllCounterValuesCmd";
-import { CountersListCmd } from "./commands/CountersListCmd";
-import { ResetCounterCmd } from "./commands/ResetCounterCmd";
+import { offCounterEvent } from "./functions/offCounterEvent";
+import { onCounterEvent } from "./functions/onCounterEvent";
+import { setCounterValue } from "./functions/setCounterValue";
+import { ConfigSchema, CountersPluginType, TTrigger } from "./types";
 
 const MAX_COUNTERS = 5;
 const MAX_TRIGGERS_PER_COUNTER = 5;
diff --git a/backend/src/plugins/Counters/commands/AddCounterCmd.ts b/backend/src/plugins/Counters/commands/AddCounterCmd.ts
index 779c83f0..455c4549 100644
--- a/backend/src/plugins/Counters/commands/AddCounterCmd.ts
+++ b/backend/src/plugins/Counters/commands/AddCounterCmd.ts
@@ -1,12 +1,12 @@
+import { TextChannel } from "discord.js";
 import { typedGuildCommand } from "knub";
-import { CountersPluginType } from "../types";
+import { waitForReply } from "knub/dist/helpers";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage } from "../../../pluginUtils";
-import { waitForReply } from "knub/dist/helpers";
-
 import { resolveUser, UnknownUser } from "../../../utils";
 import { changeCounterValue } from "../functions/changeCounterValue";
-import { TextChannel } from "discord.js";
+import { CountersPluginType } from "../types";
+
 
 export const AddCounterCmd = typedGuildCommand<CountersPluginType>()({
   trigger: ["counters add", "counter add", "addcounter"],
diff --git a/backend/src/plugins/Counters/commands/CountersListCmd.ts b/backend/src/plugins/Counters/commands/CountersListCmd.ts
index 5e35a28a..c92a2fe4 100644
--- a/backend/src/plugins/Counters/commands/CountersListCmd.ts
+++ b/backend/src/plugins/Counters/commands/CountersListCmd.ts
@@ -1,8 +1,8 @@
 import { typedGuildCommand } from "knub";
-import { CountersPluginType } from "../types";
 import { sendErrorMessage } from "../../../pluginUtils";
 import { trimMultilineString, ucfirst } from "../../../utils";
 import { getGuildPrefix } from "../../../utils/getGuildPrefix";
+import { CountersPluginType } from "../types";
 
 export const CountersListCmd = typedGuildCommand<CountersPluginType>()({
   trigger: ["counters list", "counter list", "counters"],
diff --git a/backend/src/plugins/Counters/commands/ResetAllCounterValuesCmd.ts b/backend/src/plugins/Counters/commands/ResetAllCounterValuesCmd.ts
index 021c93c3..a4cc3587 100644
--- a/backend/src/plugins/Counters/commands/ResetAllCounterValuesCmd.ts
+++ b/backend/src/plugins/Counters/commands/ResetAllCounterValuesCmd.ts
@@ -1,11 +1,10 @@
 import { typedGuildCommand } from "knub";
-import { CountersPluginType } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-
-import { confirm, MINUTES, noop, trimMultilineString } from "../../../utils";
+import { confirm, noop, trimMultilineString } from "../../../utils";
 import { resetAllCounterValues } from "../functions/resetAllCounterValues";
-import { counterIdLock } from "../../../utils/lockNameHelpers";
+import { CountersPluginType } from "../types";
+
 
 export const ResetAllCounterValuesCmd = typedGuildCommand<CountersPluginType>()({
   trigger: ["counters reset_all"],
diff --git a/backend/src/plugins/Counters/commands/ResetCounterCmd.ts b/backend/src/plugins/Counters/commands/ResetCounterCmd.ts
index 736f66f8..c684fa7b 100644
--- a/backend/src/plugins/Counters/commands/ResetCounterCmd.ts
+++ b/backend/src/plugins/Counters/commands/ResetCounterCmd.ts
@@ -1,12 +1,12 @@
+import { TextChannel } from "discord.js";
 import { typedGuildCommand } from "knub";
-import { CountersPluginType } from "../types";
+import { waitForReply } from "knub/dist/helpers";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage } from "../../../pluginUtils";
-import { waitForReply } from "knub/dist/helpers";
-
 import { resolveUser, UnknownUser } from "../../../utils";
 import { setCounterValue } from "../functions/setCounterValue";
-import { TextChannel } from "discord.js";
+import { CountersPluginType } from "../types";
+
 
 export const ResetCounterCmd = typedGuildCommand<CountersPluginType>()({
   trigger: ["counters reset", "counter reset", "resetcounter"],
diff --git a/backend/src/plugins/Counters/commands/SetCounterCmd.ts b/backend/src/plugins/Counters/commands/SetCounterCmd.ts
index 1158b5a6..02ced104 100644
--- a/backend/src/plugins/Counters/commands/SetCounterCmd.ts
+++ b/backend/src/plugins/Counters/commands/SetCounterCmd.ts
@@ -1,12 +1,12 @@
+import { TextChannel } from "discord.js";
 import { typedGuildCommand } from "knub";
-import { CountersPluginType } from "../types";
+import { waitForReply } from "knub/dist/helpers";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage } from "../../../pluginUtils";
-import { waitForReply } from "knub/dist/helpers";
-
 import { resolveUser, UnknownUser } from "../../../utils";
 import { setCounterValue } from "../functions/setCounterValue";
-import { TextChannel } from "discord.js";
+import { CountersPluginType } from "../types";
+
 
 export const SetCounterCmd = typedGuildCommand<CountersPluginType>()({
   trigger: ["counters set", "counter set", "setcounter"],
diff --git a/backend/src/plugins/Counters/commands/ViewCounterCmd.ts b/backend/src/plugins/Counters/commands/ViewCounterCmd.ts
index bafbcb76..73ce6287 100644
--- a/backend/src/plugins/Counters/commands/ViewCounterCmd.ts
+++ b/backend/src/plugins/Counters/commands/ViewCounterCmd.ts
@@ -1,11 +1,11 @@
+import { TextChannel } from "discord.js";
 import { typedGuildCommand } from "knub";
-import { CountersPluginType } from "../types";
+import { waitForReply } from "knub/dist/helpers";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage } from "../../../pluginUtils";
-import { waitForReply } from "knub/dist/helpers";
-
 import { resolveUser, UnknownUser } from "../../../utils";
-import { TextChannel } from "discord.js";
+import { CountersPluginType } from "../types";
+
 
 export const ViewCounterCmd = typedGuildCommand<CountersPluginType>()({
   trigger: ["counters view", "counter view", "viewcounter", "counter"],
diff --git a/backend/src/plugins/Counters/functions/checkAllValuesForReverseTrigger.ts b/backend/src/plugins/Counters/functions/checkAllValuesForReverseTrigger.ts
index 19998225..263855dc 100644
--- a/backend/src/plugins/Counters/functions/checkAllValuesForReverseTrigger.ts
+++ b/backend/src/plugins/Counters/functions/checkAllValuesForReverseTrigger.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { CountersPluginType } from "../types";
 import { CounterTrigger } from "../../../data/entities/CounterTrigger";
+import { CountersPluginType } from "../types";
 import { emitCounterEvent } from "./emitCounterEvent";
 
 export async function checkAllValuesForReverseTrigger(
diff --git a/backend/src/plugins/Counters/functions/checkAllValuesForTrigger.ts b/backend/src/plugins/Counters/functions/checkAllValuesForTrigger.ts
index 02b02e5f..0a42673f 100644
--- a/backend/src/plugins/Counters/functions/checkAllValuesForTrigger.ts
+++ b/backend/src/plugins/Counters/functions/checkAllValuesForTrigger.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { CountersPluginType } from "../types";
 import { CounterTrigger } from "../../../data/entities/CounterTrigger";
+import { CountersPluginType } from "../types";
 import { emitCounterEvent } from "./emitCounterEvent";
 
 export async function checkAllValuesForTrigger(
diff --git a/backend/src/plugins/Counters/functions/checkCounterTrigger.ts b/backend/src/plugins/Counters/functions/checkCounterTrigger.ts
index 5bdd1b05..8923abf5 100644
--- a/backend/src/plugins/Counters/functions/checkCounterTrigger.ts
+++ b/backend/src/plugins/Counters/functions/checkCounterTrigger.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { CountersPluginType } from "../types";
 import { CounterTrigger } from "../../../data/entities/CounterTrigger";
+import { CountersPluginType } from "../types";
 import { emitCounterEvent } from "./emitCounterEvent";
 
 export async function checkCounterTrigger(
diff --git a/backend/src/plugins/Counters/functions/checkReverseCounterTrigger.ts b/backend/src/plugins/Counters/functions/checkReverseCounterTrigger.ts
index e601dd9d..544d4066 100644
--- a/backend/src/plugins/Counters/functions/checkReverseCounterTrigger.ts
+++ b/backend/src/plugins/Counters/functions/checkReverseCounterTrigger.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { CountersPluginType } from "../types";
 import { CounterTrigger } from "../../../data/entities/CounterTrigger";
+import { CountersPluginType } from "../types";
 import { emitCounterEvent } from "./emitCounterEvent";
 
 export async function checkReverseCounterTrigger(
diff --git a/backend/src/plugins/Counters/functions/decayCounter.ts b/backend/src/plugins/Counters/functions/decayCounter.ts
index 7db4cef3..c7b813ea 100644
--- a/backend/src/plugins/Counters/functions/decayCounter.ts
+++ b/backend/src/plugins/Counters/functions/decayCounter.ts
@@ -1,8 +1,8 @@
 import { GuildPluginData } from "knub";
-import { CountersPluginType } from "../types";
-import { checkAllValuesForTrigger } from "./checkAllValuesForTrigger";
-import { checkAllValuesForReverseTrigger } from "./checkAllValuesForReverseTrigger";
 import { counterIdLock } from "../../../utils/lockNameHelpers";
+import { CountersPluginType } from "../types";
+import { checkAllValuesForReverseTrigger } from "./checkAllValuesForReverseTrigger";
+import { checkAllValuesForTrigger } from "./checkAllValuesForTrigger";
 
 export async function decayCounter(
   pluginData: GuildPluginData<CountersPluginType>,
diff --git a/backend/src/plugins/Counters/functions/emitCounterEvent.ts b/backend/src/plugins/Counters/functions/emitCounterEvent.ts
index ad131e54..30e4bfea 100644
--- a/backend/src/plugins/Counters/functions/emitCounterEvent.ts
+++ b/backend/src/plugins/Counters/functions/emitCounterEvent.ts
@@ -1,5 +1,5 @@
-import { CounterEvents, CountersPluginType } from "../types";
 import { GuildPluginData } from "knub";
+import { CounterEvents, CountersPluginType } from "../types";
 
 export function emitCounterEvent<TEvent extends keyof CounterEvents>(
   pluginData: GuildPluginData<CountersPluginType>,
diff --git a/backend/src/plugins/Counters/functions/getPrettyNameForCounter.ts b/backend/src/plugins/Counters/functions/getPrettyNameForCounter.ts
index 766b4ef3..c9fd0342 100644
--- a/backend/src/plugins/Counters/functions/getPrettyNameForCounter.ts
+++ b/backend/src/plugins/Counters/functions/getPrettyNameForCounter.ts
@@ -1,5 +1,5 @@
-import { CountersPluginType } from "../types";
 import { GuildPluginData } from "knub";
+import { CountersPluginType } from "../types";
 
 export function getPrettyNameForCounter(pluginData: GuildPluginData<CountersPluginType>, counterName: string) {
   const config = pluginData.config.get();
diff --git a/backend/src/plugins/Counters/functions/getPrettyNameForCounterTrigger.ts b/backend/src/plugins/Counters/functions/getPrettyNameForCounterTrigger.ts
index d7a2b923..1445bdd8 100644
--- a/backend/src/plugins/Counters/functions/getPrettyNameForCounterTrigger.ts
+++ b/backend/src/plugins/Counters/functions/getPrettyNameForCounterTrigger.ts
@@ -1,5 +1,5 @@
-import { CountersPluginType, TTrigger } from "../types";
 import { GuildPluginData } from "knub";
+import { CountersPluginType, TTrigger } from "../types";
 
 export function getPrettyNameForCounterTrigger(
   pluginData: GuildPluginData<CountersPluginType>,
diff --git a/backend/src/plugins/Counters/functions/offCounterEvent.ts b/backend/src/plugins/Counters/functions/offCounterEvent.ts
index 66ee9624..08c28cff 100644
--- a/backend/src/plugins/Counters/functions/offCounterEvent.ts
+++ b/backend/src/plugins/Counters/functions/offCounterEvent.ts
@@ -1,5 +1,5 @@
-import { CounterEventEmitter, CountersPluginType } from "../types";
 import { GuildPluginData } from "knub";
+import { CounterEventEmitter, CountersPluginType } from "../types";
 
 export function offCounterEvent(
   pluginData: GuildPluginData<CountersPluginType>,
diff --git a/backend/src/plugins/Counters/functions/onCounterEvent.ts b/backend/src/plugins/Counters/functions/onCounterEvent.ts
index 1a3aa6fd..1789571b 100644
--- a/backend/src/plugins/Counters/functions/onCounterEvent.ts
+++ b/backend/src/plugins/Counters/functions/onCounterEvent.ts
@@ -1,5 +1,5 @@
-import { CounterEvents, CountersPluginType } from "../types";
 import { GuildPluginData } from "knub";
+import { CounterEvents, CountersPluginType } from "../types";
 
 export function onCounterEvent<TEvent extends keyof CounterEvents>(
   pluginData: GuildPluginData<CountersPluginType>,
diff --git a/backend/src/plugins/Counters/types.ts b/backend/src/plugins/Counters/types.ts
index 1efdc474..57bc69d6 100644
--- a/backend/src/plugins/Counters/types.ts
+++ b/backend/src/plugins/Counters/types.ts
@@ -1,9 +1,9 @@
+import { EventEmitter } from "events";
 import * as t from "io-ts";
 import { BasePluginType } from "knub";
+import { CounterTrigger } from "../../data/entities/CounterTrigger";
 import { GuildCounters } from "../../data/GuildCounters";
 import { tDelayString, tNullable } from "../../utils";
-import { EventEmitter } from "events";
-import { CounterTrigger } from "../../data/entities/CounterTrigger";
 import Timeout = NodeJS.Timeout;
 
 export const Trigger = t.type({
diff --git a/backend/src/plugins/CustomEvents/CustomEventsPlugin.ts b/backend/src/plugins/CustomEvents/CustomEventsPlugin.ts
index 43d25250..c1c183eb 100644
--- a/backend/src/plugins/CustomEvents/CustomEventsPlugin.ts
+++ b/backend/src/plugins/CustomEvents/CustomEventsPlugin.ts
@@ -1,9 +1,9 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { ConfigSchema, CustomEventsPluginType } from "./types";
-import { typedGuildCommand, parseSignature } from "knub";
+import { parseSignature, typedGuildCommand } from "knub";
 import { commandTypes } from "../../commandTypes";
 import { stripObjectToScalars } from "../../utils";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { runEvent } from "./functions/runEvent";
+import { ConfigSchema, CustomEventsPluginType } from "./types";
 
 const defaultOptions = {
   config: {
diff --git a/backend/src/plugins/CustomEvents/actions/addRoleAction.ts b/backend/src/plugins/CustomEvents/actions/addRoleAction.ts
index f356e6f9..b5549bce 100644
--- a/backend/src/plugins/CustomEvents/actions/addRoleAction.ts
+++ b/backend/src/plugins/CustomEvents/actions/addRoleAction.ts
@@ -1,10 +1,10 @@
-import { GuildPluginData } from "knub";
-import { CustomEventsPluginType, TCustomEvent } from "../types";
 import * as t from "io-ts";
+import { GuildPluginData } from "knub";
+import { canActOn } from "../../../pluginUtils";
 import { renderTemplate } from "../../../templateFormatter";
 import { resolveMember } from "../../../utils";
 import { ActionError } from "../ActionError";
-import { canActOn } from "../../../pluginUtils";
+import { CustomEventsPluginType, TCustomEvent } from "../types";
 
 export const AddRoleAction = t.type({
   type: t.literal("add_role"),
diff --git a/backend/src/plugins/CustomEvents/actions/createCaseAction.ts b/backend/src/plugins/CustomEvents/actions/createCaseAction.ts
index 985ff14c..e9e4fac1 100644
--- a/backend/src/plugins/CustomEvents/actions/createCaseAction.ts
+++ b/backend/src/plugins/CustomEvents/actions/createCaseAction.ts
@@ -1,10 +1,10 @@
-import { GuildPluginData } from "knub";
-import { CustomEventsPluginType, TCustomEvent } from "../types";
 import * as t from "io-ts";
-import { renderTemplate } from "../../../templateFormatter";
+import { GuildPluginData } from "knub";
 import { CaseTypes } from "../../../data/CaseTypes";
-import { ActionError } from "../ActionError";
+import { renderTemplate } from "../../../templateFormatter";
 import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { ActionError } from "../ActionError";
+import { CustomEventsPluginType, TCustomEvent } from "../types";
 
 export const CreateCaseAction = t.type({
   type: t.literal("create_case"),
diff --git a/backend/src/plugins/CustomEvents/actions/makeRoleMentionableAction.ts b/backend/src/plugins/CustomEvents/actions/makeRoleMentionableAction.ts
index d08abfcb..63c381cc 100644
--- a/backend/src/plugins/CustomEvents/actions/makeRoleMentionableAction.ts
+++ b/backend/src/plugins/CustomEvents/actions/makeRoleMentionableAction.ts
@@ -1,8 +1,8 @@
-import { GuildPluginData } from "knub";
-import { CustomEventsPluginType, TCustomEvent } from "../types";
 import * as t from "io-ts";
+import { GuildPluginData } from "knub";
 import { convertDelayStringToMS, noop, tDelayString } from "../../../utils";
 import { ActionError } from "../ActionError";
+import { CustomEventsPluginType, TCustomEvent } from "../types";
 
 export const MakeRoleMentionableAction = t.type({
   type: t.literal("make_role_mentionable"),
diff --git a/backend/src/plugins/CustomEvents/actions/makeRoleUnmentionableAction.ts b/backend/src/plugins/CustomEvents/actions/makeRoleUnmentionableAction.ts
index ea75ff12..de0a413c 100644
--- a/backend/src/plugins/CustomEvents/actions/makeRoleUnmentionableAction.ts
+++ b/backend/src/plugins/CustomEvents/actions/makeRoleUnmentionableAction.ts
@@ -1,7 +1,7 @@
-import { GuildPluginData } from "knub";
-import { CustomEventsPluginType, TCustomEvent } from "../types";
 import * as t from "io-ts";
+import { GuildPluginData } from "knub";
 import { ActionError } from "../ActionError";
+import { CustomEventsPluginType, TCustomEvent } from "../types";
 
 export const MakeRoleUnmentionableAction = t.type({
   type: t.literal("make_role_unmentionable"),
diff --git a/backend/src/plugins/CustomEvents/actions/messageAction.ts b/backend/src/plugins/CustomEvents/actions/messageAction.ts
index fe03eda0..9fa91ba0 100644
--- a/backend/src/plugins/CustomEvents/actions/messageAction.ts
+++ b/backend/src/plugins/CustomEvents/actions/messageAction.ts
@@ -1,9 +1,9 @@
-import { GuildPluginData } from "knub";
-import { CustomEventsPluginType } from "../types";
+import { TextChannel } from "discord.js";
 import * as t from "io-ts";
+import { GuildPluginData } from "knub";
 import { renderTemplate } from "../../../templateFormatter";
 import { ActionError } from "../ActionError";
-import { TextChannel } from "discord.js";
+import { CustomEventsPluginType } from "../types";
 
 export const MessageAction = t.type({
   type: t.literal("message"),
diff --git a/backend/src/plugins/CustomEvents/actions/moveToVoiceChannelAction.ts b/backend/src/plugins/CustomEvents/actions/moveToVoiceChannelAction.ts
index 6d8f0731..176a768e 100644
--- a/backend/src/plugins/CustomEvents/actions/moveToVoiceChannelAction.ts
+++ b/backend/src/plugins/CustomEvents/actions/moveToVoiceChannelAction.ts
@@ -1,11 +1,11 @@
-import { GuildPluginData } from "knub";
-import { CustomEventsPluginType, TCustomEvent } from "../types";
+import { VoiceChannel } from "discord.js";
 import * as t from "io-ts";
+import { GuildPluginData } from "knub";
+import { canActOn } from "../../../pluginUtils";
 import { renderTemplate } from "../../../templateFormatter";
 import { resolveMember } from "../../../utils";
 import { ActionError } from "../ActionError";
-import { canActOn } from "../../../pluginUtils";
-import { VoiceChannel } from "discord.js";
+import { CustomEventsPluginType, TCustomEvent } from "../types";
 
 export const MoveToVoiceChannelAction = t.type({
   type: t.literal("move_to_vc"),
diff --git a/backend/src/plugins/CustomEvents/actions/setChannelPermissionOverrides.ts b/backend/src/plugins/CustomEvents/actions/setChannelPermissionOverrides.ts
index 24555c2e..4203d2a8 100644
--- a/backend/src/plugins/CustomEvents/actions/setChannelPermissionOverrides.ts
+++ b/backend/src/plugins/CustomEvents/actions/setChannelPermissionOverrides.ts
@@ -1,7 +1,7 @@
-import { GuildPluginData } from "knub";
-import { CustomEventsPluginType, TCustomEvent } from "../types";
 import * as t from "io-ts";
+import { GuildPluginData } from "knub";
 import { ActionError } from "../ActionError";
+import { CustomEventsPluginType, TCustomEvent } from "../types";
 
 export const SetChannelPermissionOverridesAction = t.type({
   type: t.literal("set_channel_permission_overrides"),
diff --git a/backend/src/plugins/CustomEvents/functions/runEvent.ts b/backend/src/plugins/CustomEvents/functions/runEvent.ts
index 5a4121ac..11ae8aaf 100644
--- a/backend/src/plugins/CustomEvents/functions/runEvent.ts
+++ b/backend/src/plugins/CustomEvents/functions/runEvent.ts
@@ -1,16 +1,16 @@
+import { Message, TextChannel } from "discord.js";
 import { GuildPluginData } from "knub";
-import { CustomEventsPluginType, TCustomEvent } from "../types";
 import { sendErrorMessage } from "../../../pluginUtils";
 import { ActionError } from "../ActionError";
-
 import { addRoleAction } from "../actions/addRoleAction";
 import { createCaseAction } from "../actions/createCaseAction";
-import { moveToVoiceChannelAction } from "../actions/moveToVoiceChannelAction";
-import { messageAction } from "../actions/messageAction";
 import { makeRoleMentionableAction } from "../actions/makeRoleMentionableAction";
 import { makeRoleUnmentionableAction } from "../actions/makeRoleUnmentionableAction";
+import { messageAction } from "../actions/messageAction";
+import { moveToVoiceChannelAction } from "../actions/moveToVoiceChannelAction";
 import { setChannelPermissionOverridesAction } from "../actions/setChannelPermissionOverrides";
-import { Message, TextChannel } from "discord.js";
+import { CustomEventsPluginType, TCustomEvent } from "../types";
+
 
 export async function runEvent(
   pluginData: GuildPluginData<CustomEventsPluginType>,
diff --git a/backend/src/plugins/CustomEvents/types.ts b/backend/src/plugins/CustomEvents/types.ts
index 44058777..48628376 100644
--- a/backend/src/plugins/CustomEvents/types.ts
+++ b/backend/src/plugins/CustomEvents/types.ts
@@ -2,10 +2,10 @@ import * as t from "io-ts";
 import { BasePluginType } from "knub";
 import { AddRoleAction } from "./actions/addRoleAction";
 import { CreateCaseAction } from "./actions/createCaseAction";
-import { MoveToVoiceChannelAction } from "./actions/moveToVoiceChannelAction";
-import { MessageAction } from "./actions/messageAction";
 import { MakeRoleMentionableAction } from "./actions/makeRoleMentionableAction";
 import { MakeRoleUnmentionableAction } from "./actions/makeRoleUnmentionableAction";
+import { MessageAction } from "./actions/messageAction";
+import { MoveToVoiceChannelAction } from "./actions/moveToVoiceChannelAction";
 import { SetChannelPermissionOverridesAction } from "./actions/setChannelPermissionOverrides";
 
 // Triggers
diff --git a/backend/src/plugins/GuildAccessMonitor/GuildAccessMonitorPlugin.ts b/backend/src/plugins/GuildAccessMonitor/GuildAccessMonitorPlugin.ts
index ca322168..a8fc7432 100644
--- a/backend/src/plugins/GuildAccessMonitor/GuildAccessMonitorPlugin.ts
+++ b/backend/src/plugins/GuildAccessMonitor/GuildAccessMonitorPlugin.ts
@@ -1,8 +1,8 @@
-import { zeppelinGlobalPlugin } from "../ZeppelinPluginBlueprint";
-import { BasePluginType, typedGlobalEventListener, GlobalPluginData } from "knub";
-import * as t from "io-ts";
-import { AllowedGuilds } from "../../data/AllowedGuilds";
 import { Guild } from "discord.js";
+import * as t from "io-ts";
+import { BasePluginType, GlobalPluginData, typedGlobalEventListener } from "knub";
+import { AllowedGuilds } from "../../data/AllowedGuilds";
+import { zeppelinGlobalPlugin } from "../ZeppelinPluginBlueprint";
 
 interface GuildAccessMonitorPluginType extends BasePluginType {
   config: {};
diff --git a/backend/src/plugins/GuildConfigReloader/GuildConfigReloaderPlugin.ts b/backend/src/plugins/GuildConfigReloader/GuildConfigReloaderPlugin.ts
index 5316232f..c48745e1 100644
--- a/backend/src/plugins/GuildConfigReloader/GuildConfigReloaderPlugin.ts
+++ b/backend/src/plugins/GuildConfigReloader/GuildConfigReloaderPlugin.ts
@@ -1,8 +1,8 @@
-import { zeppelinGlobalPlugin } from "../ZeppelinPluginBlueprint";
-import { GuildConfigReloaderPluginType } from "./types";
-import { Configs } from "../../data/Configs";
-import { reloadChangedGuilds } from "./functions/reloadChangedGuilds";
 import * as t from "io-ts";
+import { Configs } from "../../data/Configs";
+import { zeppelinGlobalPlugin } from "../ZeppelinPluginBlueprint";
+import { reloadChangedGuilds } from "./functions/reloadChangedGuilds";
+import { GuildConfigReloaderPluginType } from "./types";
 
 export const GuildConfigReloaderPlugin = zeppelinGlobalPlugin<GuildConfigReloaderPluginType>()({
   name: "guild_config_reloader",
diff --git a/backend/src/plugins/GuildConfigReloader/functions/reloadChangedGuilds.ts b/backend/src/plugins/GuildConfigReloader/functions/reloadChangedGuilds.ts
index 10cd97c0..65571b46 100644
--- a/backend/src/plugins/GuildConfigReloader/functions/reloadChangedGuilds.ts
+++ b/backend/src/plugins/GuildConfigReloader/functions/reloadChangedGuilds.ts
@@ -1,6 +1,6 @@
 import { GlobalPluginData } from "knub";
-import { GuildConfigReloaderPluginType } from "../types";
 import { SECONDS } from "../../../utils";
+import { GuildConfigReloaderPluginType } from "../types";
 
 const CHECK_INTERVAL = 1 * SECONDS;
 
diff --git a/backend/src/plugins/GuildConfigReloader/types.ts b/backend/src/plugins/GuildConfigReloader/types.ts
index ded863ee..94ada5cf 100644
--- a/backend/src/plugins/GuildConfigReloader/types.ts
+++ b/backend/src/plugins/GuildConfigReloader/types.ts
@@ -1,6 +1,6 @@
 import { BasePluginType } from "knub";
-import { TConfigSchema } from "../Mutes/types";
 import { Configs } from "../../data/Configs";
+import { TConfigSchema } from "../Mutes/types";
 import Timeout = NodeJS.Timeout;
 
 export interface GuildConfigReloaderPluginType extends BasePluginType {
diff --git a/backend/src/plugins/GuildInfoSaver/GuildInfoSaverPlugin.ts b/backend/src/plugins/GuildInfoSaver/GuildInfoSaverPlugin.ts
index 45858330..4591b228 100644
--- a/backend/src/plugins/GuildInfoSaver/GuildInfoSaverPlugin.ts
+++ b/backend/src/plugins/GuildInfoSaver/GuildInfoSaverPlugin.ts
@@ -1,9 +1,9 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import * as t from "io-ts";
 import { GuildPluginData } from "knub";
 import { AllowedGuilds } from "../../data/AllowedGuilds";
-import { GuildInfoSaverPluginType } from "./types";
 import { MINUTES } from "../../utils";
-import * as t from "io-ts";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { GuildInfoSaverPluginType } from "./types";
 
 export const GuildInfoSaverPlugin = zeppelinGuildPlugin<GuildInfoSaverPluginType>()({
   name: "guild_info_saver",
diff --git a/backend/src/plugins/LocateUser/LocateUserPlugin.ts b/backend/src/plugins/LocateUser/LocateUserPlugin.ts
index b6bf2538..fc77d99a 100644
--- a/backend/src/plugins/LocateUser/LocateUserPlugin.ts
+++ b/backend/src/plugins/LocateUser/LocateUserPlugin.ts
@@ -1,15 +1,15 @@
 import { PluginOptions } from "knub";
-import { ConfigSchema, LocateUserPluginType } from "./types";
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { GuildVCAlerts } from "../../data/GuildVCAlerts";
-import { outdatedAlertsLoop } from "./utils/outdatedLoop";
-import { fillActiveAlertsList } from "./utils/fillAlertsList";
-import { WhereCmd } from "./commands/WhereCmd";
+import { trimPluginDescription } from "../../utils";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { FollowCmd } from "./commands/FollowCmd";
 import { DeleteFollowCmd, ListFollowCmd } from "./commands/ListFollowCmd";
-import { VoiceStateUpdateAlertEvt } from "./events/SendAlertsEvts";
+import { WhereCmd } from "./commands/WhereCmd";
 import { GuildBanRemoveAlertsEvt } from "./events/BanRemoveAlertsEvt";
-import { trimPluginDescription } from "../../utils";
+import { VoiceStateUpdateAlertEvt } from "./events/SendAlertsEvts";
+import { ConfigSchema, LocateUserPluginType } from "./types";
+import { fillActiveAlertsList } from "./utils/fillAlertsList";
+import { outdatedAlertsLoop } from "./utils/outdatedLoop";
 import Timeout = NodeJS.Timeout;
 
 const defaultOptions: PluginOptions<LocateUserPluginType> = {
diff --git a/backend/src/plugins/LocateUser/commands/FollowCmd.ts b/backend/src/plugins/LocateUser/commands/FollowCmd.ts
index 74838673..5a8d7e5d 100644
--- a/backend/src/plugins/LocateUser/commands/FollowCmd.ts
+++ b/backend/src/plugins/LocateUser/commands/FollowCmd.ts
@@ -1,9 +1,9 @@
-import { locateUserCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import moment from "moment-timezone";
 import humanizeDuration from "humanize-duration";
-import { MINUTES, SECONDS } from "../../../utils";
+import moment from "moment-timezone";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { MINUTES, SECONDS } from "../../../utils";
+import { locateUserCmd } from "../types";
 
 export const FollowCmd = locateUserCmd({
   trigger: ["follow", "f"],
diff --git a/backend/src/plugins/LocateUser/commands/ListFollowCmd.ts b/backend/src/plugins/LocateUser/commands/ListFollowCmd.ts
index 67ad383d..f8e669bc 100644
--- a/backend/src/plugins/LocateUser/commands/ListFollowCmd.ts
+++ b/backend/src/plugins/LocateUser/commands/ListFollowCmd.ts
@@ -1,7 +1,7 @@
-import { locateUserCmd } from "../types";
-import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
 import { createChunkedMessage, sorter } from "../../../utils";
+import { locateUserCmd } from "../types";
 
 export const ListFollowCmd = locateUserCmd({
   trigger: ["follows", "fs"],
diff --git a/backend/src/plugins/LocateUser/commands/WhereCmd.ts b/backend/src/plugins/LocateUser/commands/WhereCmd.ts
index 5cbdac4a..0ff00d91 100644
--- a/backend/src/plugins/LocateUser/commands/WhereCmd.ts
+++ b/backend/src/plugins/LocateUser/commands/WhereCmd.ts
@@ -1,6 +1,5 @@
-import { locateUserCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { resolveMember } from "../../../utils";
+import { locateUserCmd } from "../types";
 import { sendWhere } from "../utils/sendWhere";
 
 export const WhereCmd = locateUserCmd({
diff --git a/backend/src/plugins/LocateUser/utils/moveMember.ts b/backend/src/plugins/LocateUser/utils/moveMember.ts
index 6e74ae4b..7912d7b8 100644
--- a/backend/src/plugins/LocateUser/utils/moveMember.ts
+++ b/backend/src/plugins/LocateUser/utils/moveMember.ts
@@ -1,7 +1,7 @@
-import { GuildPluginData } from "knub";
-import { LocateUserPluginType } from "../types";
-import { sendErrorMessage } from "../../../pluginUtils";
 import { GuildMember, TextChannel } from "discord.js";
+import { GuildPluginData } from "knub";
+import { sendErrorMessage } from "../../../pluginUtils";
+import { LocateUserPluginType } from "../types";
 
 export async function moveMember(
   pluginData: GuildPluginData<LocateUserPluginType>,
diff --git a/backend/src/plugins/LocateUser/utils/outdatedLoop.ts b/backend/src/plugins/LocateUser/utils/outdatedLoop.ts
index 0e3f29cd..4236342d 100644
--- a/backend/src/plugins/LocateUser/utils/outdatedLoop.ts
+++ b/backend/src/plugins/LocateUser/utils/outdatedLoop.ts
@@ -1,7 +1,7 @@
-import { SECONDS } from "../../../utils";
-import { removeUserIdFromActiveAlerts } from "./removeUserIdFromActiveAlerts";
 import { GuildPluginData } from "knub";
+import { SECONDS } from "../../../utils";
 import { LocateUserPluginType } from "../types";
+import { removeUserIdFromActiveAlerts } from "./removeUserIdFromActiveAlerts";
 
 const ALERT_LOOP_TIME = 30 * SECONDS;
 
diff --git a/backend/src/plugins/LocateUser/utils/sendAlerts.ts b/backend/src/plugins/LocateUser/utils/sendAlerts.ts
index 882e4344..e88dcec9 100644
--- a/backend/src/plugins/LocateUser/utils/sendAlerts.ts
+++ b/backend/src/plugins/LocateUser/utils/sendAlerts.ts
@@ -1,10 +1,10 @@
+import { TextChannel } from "discord.js";
 import { GuildPluginData } from "knub";
-import { LocateUserPluginType } from "../types";
 import { resolveMember } from "../../../utils";
+import { LocateUserPluginType } from "../types";
+import { moveMember } from "./moveMember";
 import { sendWhere } from "./sendWhere";
 
-import { moveMember } from "./moveMember";
-import { TextChannel } from "discord.js";
 
 export async function sendAlerts(pluginData: GuildPluginData<LocateUserPluginType>, userId: string) {
   const triggeredAlerts = await pluginData.state.alerts.getAlertsByUserId(userId);
diff --git a/backend/src/plugins/LocateUser/utils/sendWhere.ts b/backend/src/plugins/LocateUser/utils/sendWhere.ts
index 4fb151b6..b9cc9cb8 100644
--- a/backend/src/plugins/LocateUser/utils/sendWhere.ts
+++ b/backend/src/plugins/LocateUser/utils/sendWhere.ts
@@ -1,9 +1,9 @@
-import { getInviteLink } from "knub/dist/helpers";
-import { createOrReuseInvite } from "./createOrReuseInvite";
-import { GuildPluginData } from "knub";
-import { LocateUserPluginType } from "../types";
-import { sendErrorMessage } from "../../../pluginUtils";
 import { GuildMember, Invite, TextChannel, VoiceChannel } from "discord.js";
+import { GuildPluginData } from "knub";
+import { getInviteLink } from "knub/dist/helpers";
+import { sendErrorMessage } from "../../../pluginUtils";
+import { LocateUserPluginType } from "../types";
+import { createOrReuseInvite } from "./createOrReuseInvite";
 
 export async function sendWhere(
   pluginData: GuildPluginData<LocateUserPluginType>,
diff --git a/backend/src/plugins/Logs/LogsPlugin.ts b/backend/src/plugins/Logs/LogsPlugin.ts
index 2d2be7b2..6de27037 100644
--- a/backend/src/plugins/Logs/LogsPlugin.ts
+++ b/backend/src/plugins/Logs/LogsPlugin.ts
@@ -1,28 +1,28 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { PluginOptions } from "knub";
-import { ConfigSchema, FORMAT_NO_TIMESTAMP, LogsPluginType } from "./types";
 import DefaultLogMessages from "../../data/DefaultLogMessages.json";
-import { GuildLogs } from "../../data/GuildLogs";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildArchives } from "../../data/GuildArchives";
 import { GuildCases } from "../../data/GuildCases";
+import { GuildLogs } from "../../data/GuildLogs";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { LogType } from "../../data/LogType";
+import { logger } from "../../logger";
+import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners";
+import { disableCodeBlocks } from "../../utils";
+import { CasesPlugin } from "../Cases/CasesPlugin";
+import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { LogsChannelCreateEvt, LogsChannelDeleteEvt } from "./events/LogsChannelModifyEvts";
+import { LogsGuildMemberAddEvt } from "./events/LogsGuildMemberAddEvt";
+import { LogsGuildMemberRemoveEvt } from "./events/LogsGuildMemberRemoveEvt";
+import { LogsRoleCreateEvt, LogsRoleDeleteEvt } from "./events/LogsRoleModifyEvts";
+import { LogsGuildMemberUpdateEvt } from "./events/LogsUserUpdateEvts";
+import { LogsVoiceStateUpdateEvt } from "./events/LogsVoiceChannelEvts";
+import { ConfigSchema, FORMAT_NO_TIMESTAMP, LogsPluginType } from "./types";
+import { getLogMessage } from "./util/getLogMessage";
+import { log } from "./util/log";
 import { onMessageDelete } from "./util/onMessageDelete";
 import { onMessageDeleteBulk } from "./util/onMessageDeleteBulk";
 import { onMessageUpdate } from "./util/onMessageUpdate";
-import { LogsGuildMemberAddEvt } from "./events/LogsGuildMemberAddEvt";
-import { LogsGuildMemberRemoveEvt } from "./events/LogsGuildMemberRemoveEvt";
-import { LogsGuildMemberUpdateEvt } from "./events/LogsUserUpdateEvts";
-import { LogsChannelCreateEvt, LogsChannelDeleteEvt } from "./events/LogsChannelModifyEvts";
-import { LogsRoleCreateEvt, LogsRoleDeleteEvt } from "./events/LogsRoleModifyEvts";
-import { log } from "./util/log";
-import { LogType } from "../../data/LogType";
-import { getLogMessage } from "./util/getLogMessage";
-import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners";
-import { disableCodeBlocks } from "../../utils";
-import { logger } from "../../logger";
-import { CasesPlugin } from "../Cases/CasesPlugin";
-import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
-import { LogsVoiceStateUpdateEvt } from "./events/LogsVoiceChannelEvts";
 
 const defaultOptions: PluginOptions<LogsPluginType> = {
   config: {
diff --git a/backend/src/plugins/Logs/events/LogsChannelModifyEvts.ts b/backend/src/plugins/Logs/events/LogsChannelModifyEvts.ts
index dad30a6a..fb7b9e74 100644
--- a/backend/src/plugins/Logs/events/LogsChannelModifyEvts.ts
+++ b/backend/src/plugins/Logs/events/LogsChannelModifyEvts.ts
@@ -1,6 +1,6 @@
-import { logsEvt } from "../types";
-import { stripObjectToScalars } from "../../../utils";
 import { LogType } from "../../../data/LogType";
+import { stripObjectToScalars } from "../../../utils";
+import { logsEvt } from "../types";
 
 export const LogsChannelCreateEvt = logsEvt({
   event: "channelCreate",
diff --git a/backend/src/plugins/Logs/events/LogsGuildBanEvts.ts b/backend/src/plugins/Logs/events/LogsGuildBanEvts.ts
index ab7d7498..220543ac 100644
--- a/backend/src/plugins/Logs/events/LogsGuildBanEvts.ts
+++ b/backend/src/plugins/Logs/events/LogsGuildBanEvts.ts
@@ -1,9 +1,9 @@
-import { logsEvt } from "../types";
-import { stripObjectToScalars, UnknownUser } from "../../../utils";
-import { LogType } from "../../../data/LogType";
-
-import { safeFindRelevantAuditLogEntry } from "../../../utils/safeFindRelevantAuditLogEntry";
 import { GuildAuditLogs } from "discord.js";
+import { LogType } from "../../../data/LogType";
+import { stripObjectToScalars, UnknownUser } from "../../../utils";
+import { safeFindRelevantAuditLogEntry } from "../../../utils/safeFindRelevantAuditLogEntry";
+import { logsEvt } from "../types";
+
 
 export const LogsGuildBanAddEvt = logsEvt({
   event: "guildBanAdd",
diff --git a/backend/src/plugins/Logs/events/LogsGuildMemberAddEvt.ts b/backend/src/plugins/Logs/events/LogsGuildMemberAddEvt.ts
index 71448dbb..e206b99a 100644
--- a/backend/src/plugins/Logs/events/LogsGuildMemberAddEvt.ts
+++ b/backend/src/plugins/Logs/events/LogsGuildMemberAddEvt.ts
@@ -1,9 +1,9 @@
-import { logsEvt } from "../types";
-import { stripObjectToScalars } from "../../../utils";
-import { LogType } from "../../../data/LogType";
-import moment from "moment-timezone";
 import humanizeDuration from "humanize-duration";
+import moment from "moment-timezone";
+import { LogType } from "../../../data/LogType";
+import { stripObjectToScalars } from "../../../utils";
 import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { logsEvt } from "../types";
 
 export const LogsGuildMemberAddEvt = logsEvt({
   event: "guildMemberAdd",
diff --git a/backend/src/plugins/Logs/events/LogsGuildMemberRemoveEvt.ts b/backend/src/plugins/Logs/events/LogsGuildMemberRemoveEvt.ts
index cde1fbd8..69be59d3 100644
--- a/backend/src/plugins/Logs/events/LogsGuildMemberRemoveEvt.ts
+++ b/backend/src/plugins/Logs/events/LogsGuildMemberRemoveEvt.ts
@@ -1,6 +1,6 @@
-import { logsEvt } from "../types";
-import { stripObjectToScalars } from "../../../utils";
 import { LogType } from "../../../data/LogType";
+import { stripObjectToScalars } from "../../../utils";
+import { logsEvt } from "../types";
 
 export const LogsGuildMemberRemoveEvt = logsEvt({
   event: "guildMemberRemove",
diff --git a/backend/src/plugins/Logs/events/LogsRoleModifyEvts.ts b/backend/src/plugins/Logs/events/LogsRoleModifyEvts.ts
index 48a85448..7c5f2108 100644
--- a/backend/src/plugins/Logs/events/LogsRoleModifyEvts.ts
+++ b/backend/src/plugins/Logs/events/LogsRoleModifyEvts.ts
@@ -1,6 +1,6 @@
-import { logsEvt } from "../types";
-import { stripObjectToScalars } from "../../../utils";
 import { LogType } from "../../../data/LogType";
+import { stripObjectToScalars } from "../../../utils";
+import { logsEvt } from "../types";
 
 export const LogsRoleCreateEvt = logsEvt({
   event: "roleCreate",
diff --git a/backend/src/plugins/Logs/events/LogsUserUpdateEvts.ts b/backend/src/plugins/Logs/events/LogsUserUpdateEvts.ts
index 170e8543..ba4b5d08 100644
--- a/backend/src/plugins/Logs/events/LogsUserUpdateEvts.ts
+++ b/backend/src/plugins/Logs/events/LogsUserUpdateEvts.ts
@@ -1,11 +1,11 @@
-import { logsEvt } from "../types";
-import { stripObjectToScalars, UnknownUser } from "../../../utils";
-
-import { LogType } from "../../../data/LogType";
-import isEqual from "lodash.isequal";
-import diff from "lodash.difference";
-import { safeFindRelevantAuditLogEntry } from "../../../utils/safeFindRelevantAuditLogEntry";
 import { GuildAuditLogs } from "discord.js";
+import diff from "lodash.difference";
+import isEqual from "lodash.isequal";
+import { LogType } from "../../../data/LogType";
+import { stripObjectToScalars, UnknownUser } from "../../../utils";
+import { safeFindRelevantAuditLogEntry } from "../../../utils/safeFindRelevantAuditLogEntry";
+import { logsEvt } from "../types";
+
 
 export const LogsGuildMemberUpdateEvt = logsEvt({
   event: "guildMemberUpdate",
diff --git a/backend/src/plugins/Logs/events/LogsVoiceChannelEvts.ts b/backend/src/plugins/Logs/events/LogsVoiceChannelEvts.ts
index 61ce1593..50d31bfa 100644
--- a/backend/src/plugins/Logs/events/LogsVoiceChannelEvts.ts
+++ b/backend/src/plugins/Logs/events/LogsVoiceChannelEvts.ts
@@ -1,6 +1,6 @@
-import { logsEvt } from "../types";
-import { stripObjectToScalars } from "../../../utils";
 import { LogType } from "../../../data/LogType";
+import { stripObjectToScalars } from "../../../utils";
+import { logsEvt } from "../types";
 
 export const LogsVoiceStateUpdateEvt = logsEvt({
   event: "voiceStateUpdate",
diff --git a/backend/src/plugins/Logs/types.ts b/backend/src/plugins/Logs/types.ts
index bdb96a4d..56178d6b 100644
--- a/backend/src/plugins/Logs/types.ts
+++ b/backend/src/plugins/Logs/types.ts
@@ -1,12 +1,12 @@
 import * as t from "io-ts";
 import { BasePluginType, typedGuildEventListener } from "knub";
-import { TRegex } from "../../validatorUtils";
-import { GuildLogs } from "../../data/GuildLogs";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildArchives } from "../../data/GuildArchives";
 import { GuildCases } from "../../data/GuildCases";
-import { tMessageContent, tNullable } from "../../utils";
+import { GuildLogs } from "../../data/GuildLogs";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { RegExpRunner } from "../../RegExpRunner";
+import { tMessageContent, tNullable } from "../../utils";
+import { TRegex } from "../../validatorUtils";
 
 export const tLogFormats = t.record(t.string, t.union([t.string, tMessageContent]));
 export type TLogFormats = t.TypeOf<typeof tLogFormats>;
diff --git a/backend/src/plugins/Logs/util/getLogMessage.ts b/backend/src/plugins/Logs/util/getLogMessage.ts
index 06baebc5..435264e3 100644
--- a/backend/src/plugins/Logs/util/getLogMessage.ts
+++ b/backend/src/plugins/Logs/util/getLogMessage.ts
@@ -1,19 +1,17 @@
-import { GuildPluginData } from "knub";
-import { FORMAT_NO_TIMESTAMP, LogsPluginType, TLogChannel, TLogFormats } from "../types";
-import { LogType } from "../../../data/LogType";
-import {
-  verboseUserMention,
-  verboseUserName,
-  verboseChannelMention,
-  messageSummary,
-  resolveMember,
-  renderRecursively,
-} from "../../../utils";
-import { SavedMessage } from "../../../data/entities/SavedMessage";
-import { renderTemplate, TemplateParseError } from "../../../templateFormatter";
-import { logger } from "../../../logger";
-import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
 import { MessageOptions } from "discord.js";
+import { GuildPluginData } from "knub";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { LogType } from "../../../data/LogType";
+import { logger } from "../../../logger";
+import { renderTemplate, TemplateParseError } from "../../../templateFormatter";
+import {
+    messageSummary,
+
+    renderRecursively, resolveMember, verboseChannelMention, verboseUserMention,
+    verboseUserName
+} from "../../../utils";
+import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
+import { FORMAT_NO_TIMESTAMP, LogsPluginType, TLogChannel } from "../types";
 
 export async function getLogMessage(
   pluginData: GuildPluginData<LogsPluginType>,
diff --git a/backend/src/plugins/Logs/util/log.ts b/backend/src/plugins/Logs/util/log.ts
index 0bb8c616..3d9d438c 100644
--- a/backend/src/plugins/Logs/util/log.ts
+++ b/backend/src/plugins/Logs/util/log.ts
@@ -1,12 +1,12 @@
-import { GuildPluginData } from "knub";
-import { LogsPluginType, TLogChannelMap } from "../types";
-import { LogType } from "../../../data/LogType";
-
-import { createChunkedMessage, get, noop } from "../../../utils";
-import { getLogMessage } from "./getLogMessage";
-import { allowTimeout } from "../../../RegExpRunner";
-import { SavedMessage } from "../../../data/entities/SavedMessage";
 import { MessageMentionTypes, TextChannel } from "discord.js";
+import { GuildPluginData } from "knub";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { LogType } from "../../../data/LogType";
+import { allowTimeout } from "../../../RegExpRunner";
+import { createChunkedMessage, get, noop } from "../../../utils";
+import { LogsPluginType, TLogChannelMap } from "../types";
+import { getLogMessage } from "./getLogMessage";
+
 
 const excludedUserProps = ["user", "member", "mod"];
 const excludedRoleProps = ["message.member.roles", "member.roles"];
diff --git a/backend/src/plugins/Logs/util/onMessageDelete.ts b/backend/src/plugins/Logs/util/onMessageDelete.ts
index a7437713..c64185d8 100644
--- a/backend/src/plugins/Logs/util/onMessageDelete.ts
+++ b/backend/src/plugins/Logs/util/onMessageDelete.ts
@@ -1,12 +1,12 @@
-import { SavedMessage } from "../../../data/entities/SavedMessage";
-
-import { useMediaUrls, stripObjectToScalars, resolveUser } from "../../../utils";
-import { LogType } from "../../../data/LogType";
-import moment from "moment-timezone";
-import { GuildPluginData } from "knub";
-import { FORMAT_NO_TIMESTAMP, LogsPluginType } from "../types";
-import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
 import { MessageAttachment } from "discord.js";
+import { GuildPluginData } from "knub";
+import moment from "moment-timezone";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { LogType } from "../../../data/LogType";
+import { resolveUser, stripObjectToScalars, useMediaUrls } from "../../../utils";
+import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
+import { FORMAT_NO_TIMESTAMP, LogsPluginType } from "../types";
+
 
 export async function onMessageDelete(pluginData: GuildPluginData<LogsPluginType>, savedMessage: SavedMessage) {
   const user = await resolveUser(pluginData.client, savedMessage.user_id);
diff --git a/backend/src/plugins/Logs/util/onMessageDeleteBulk.ts b/backend/src/plugins/Logs/util/onMessageDeleteBulk.ts
index d0fac9c5..6e23315a 100644
--- a/backend/src/plugins/Logs/util/onMessageDeleteBulk.ts
+++ b/backend/src/plugins/Logs/util/onMessageDeleteBulk.ts
@@ -1,8 +1,8 @@
 import { GuildPluginData } from "knub";
-import { LogsPluginType } from "../types";
 import { SavedMessage } from "../../../data/entities/SavedMessage";
 import { LogType } from "../../../data/LogType";
 import { getBaseUrl } from "../../../pluginUtils";
+import { LogsPluginType } from "../types";
 
 export async function onMessageDeleteBulk(pluginData: GuildPluginData<LogsPluginType>, savedMessages: SavedMessage[]) {
   const channel = pluginData.guild.channels.cache.get(savedMessages[0].channel_id);
diff --git a/backend/src/plugins/Logs/util/onMessageUpdate.ts b/backend/src/plugins/Logs/util/onMessageUpdate.ts
index 1075d63e..87631bbc 100644
--- a/backend/src/plugins/Logs/util/onMessageUpdate.ts
+++ b/backend/src/plugins/Logs/util/onMessageUpdate.ts
@@ -1,11 +1,11 @@
-import { GuildPluginData } from "knub";
-import { LogsPluginType } from "../types";
-import { SavedMessage } from "../../../data/entities/SavedMessage";
-
-import { LogType } from "../../../data/LogType";
-import { stripObjectToScalars, resolveUser } from "../../../utils";
-import cloneDeep from "lodash.clonedeep";
 import { MessageEmbed } from "discord.js";
+import { GuildPluginData } from "knub";
+import cloneDeep from "lodash.clonedeep";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { LogType } from "../../../data/LogType";
+import { resolveUser, stripObjectToScalars } from "../../../utils";
+import { LogsPluginType } from "../types";
+
 
 export async function onMessageUpdate(
   pluginData: GuildPluginData<LogsPluginType>,
diff --git a/backend/src/plugins/MessageSaver/MessageSaverPlugin.ts b/backend/src/plugins/MessageSaver/MessageSaverPlugin.ts
index 955663cb..eb529ffa 100644
--- a/backend/src/plugins/MessageSaver/MessageSaverPlugin.ts
+++ b/backend/src/plugins/MessageSaver/MessageSaverPlugin.ts
@@ -1,10 +1,10 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { ConfigSchema, MessageSaverPluginType } from "./types";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { PluginOptions } from "knub";
-import { MessageCreateEvt, MessageDeleteBulkEvt, MessageDeleteEvt, MessageUpdateEvt } from "./events/SaveMessagesEvts";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { SaveMessagesToDBCmd } from "./commands/SaveMessagesToDB";
 import { SavePinsToDBCmd } from "./commands/SavePinsToDB";
+import { MessageCreateEvt, MessageDeleteBulkEvt, MessageDeleteEvt, MessageUpdateEvt } from "./events/SaveMessagesEvts";
+import { ConfigSchema, MessageSaverPluginType } from "./types";
 
 const defaultOptions: PluginOptions<MessageSaverPluginType> = {
   config: {
diff --git a/backend/src/plugins/MessageSaver/commands/SaveMessagesToDB.ts b/backend/src/plugins/MessageSaver/commands/SaveMessagesToDB.ts
index 226a8a2b..3d2456e8 100644
--- a/backend/src/plugins/MessageSaver/commands/SaveMessagesToDB.ts
+++ b/backend/src/plugins/MessageSaver/commands/SaveMessagesToDB.ts
@@ -1,7 +1,7 @@
-import { messageSaverCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { saveMessagesToDB } from "../saveMessagesToDB";
 import { sendSuccessMessage } from "../../../pluginUtils";
+import { saveMessagesToDB } from "../saveMessagesToDB";
+import { messageSaverCmd } from "../types";
 
 export const SaveMessagesToDBCmd = messageSaverCmd({
   trigger: "save_messages_to_db",
diff --git a/backend/src/plugins/MessageSaver/commands/SavePinsToDB.ts b/backend/src/plugins/MessageSaver/commands/SavePinsToDB.ts
index a159a642..ede884d6 100644
--- a/backend/src/plugins/MessageSaver/commands/SavePinsToDB.ts
+++ b/backend/src/plugins/MessageSaver/commands/SavePinsToDB.ts
@@ -1,7 +1,7 @@
-import { messageSaverCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { saveMessagesToDB } from "../saveMessagesToDB";
 import { sendSuccessMessage } from "../../../pluginUtils";
+import { saveMessagesToDB } from "../saveMessagesToDB";
+import { messageSaverCmd } from "../types";
 
 export const SavePinsToDBCmd = messageSaverCmd({
   trigger: "save_pins_to_db",
diff --git a/backend/src/plugins/MessageSaver/saveMessagesToDB.ts b/backend/src/plugins/MessageSaver/saveMessagesToDB.ts
index dd0f3b80..1ce82aa9 100644
--- a/backend/src/plugins/MessageSaver/saveMessagesToDB.ts
+++ b/backend/src/plugins/MessageSaver/saveMessagesToDB.ts
@@ -1,6 +1,6 @@
-import { MessageSaverPluginType } from "./types";
+import { Message, TextChannel } from "discord.js";
 import { GuildPluginData } from "knub";
-import { TextChannel, Message } from "discord.js";
+import { MessageSaverPluginType } from "./types";
 
 export async function saveMessagesToDB(
   pluginData: GuildPluginData<MessageSaverPluginType>,
diff --git a/backend/src/plugins/ModActions/ModActionsPlugin.ts b/backend/src/plugins/ModActions/ModActionsPlugin.ts
index f0a51c69..3be7332a 100644
--- a/backend/src/plugins/ModActions/ModActionsPlugin.ts
+++ b/backend/src/plugins/ModActions/ModActionsPlugin.ts
@@ -1,51 +1,51 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { CasesPlugin } from "../Cases/CasesPlugin";
-import { MutesPlugin } from "../Mutes/MutesPlugin";
-import { BanOptions, ConfigSchema, KickOptions, ModActionsPluginType, WarnOptions } from "./types";
-import { CreateBanCaseOnManualBanEvt } from "./events/CreateBanCaseOnManualBanEvt";
-import { CreateUnbanCaseOnManualUnbanEvt } from "./events/CreateUnbanCaseOnManualUnbanEvt";
-import { CreateKickCaseOnManualKickEvt } from "./events/CreateKickCaseOnManualKickEvt";
-import { UpdateCmd } from "./commands/UpdateCmd";
-import { NoteCmd } from "./commands/NoteCmd";
-import { WarnCmd } from "./commands/WarnCmd";
-import { MuteCmd } from "./commands/MuteCmd";
-import { PostAlertOnMemberJoinEvt } from "./events/PostAlertOnMemberJoinEvt";
-import { ForcemuteCmd } from "./commands/ForcemuteCmd";
-import { UnmuteCmd } from "./commands/UnmuteCmd";
-import { KickCmd } from "./commands/KickCmd";
-import { SoftbanCmd } from "./commands/SoftbanCommand";
-import { BanCmd } from "./commands/BanCmd";
-import { UnbanCmd } from "./commands/UnbanCmd";
-import { ForcebanCmd } from "./commands/ForcebanCmd";
-import { MassunbanCmd } from "./commands/MassUnbanCmd";
-import { MassbanCmd } from "./commands/MassBanCmd";
-import { AddCaseCmd } from "./commands/AddCaseCmd";
-import { CaseCmd } from "./commands/CaseCmd";
-import { CasesUserCmd } from "./commands/CasesUserCmd";
-import { CasesModCmd } from "./commands/CasesModCmd";
-import { HideCaseCmd } from "./commands/HideCaseCmd";
-import { UnhideCaseCmd } from "./commands/UnhideCaseCmd";
-import { GuildMutes } from "../../data/GuildMutes";
+import { GuildMember, Message } from "discord.js";
+import { EventEmitter } from "events";
 import { GuildCases } from "../../data/GuildCases";
 import { GuildLogs } from "../../data/GuildLogs";
-import { ForceUnmuteCmd } from "./commands/ForceunmuteCmd";
-import { warnMember } from "./functions/warnMember";
-
-import { kickMember } from "./functions/kickMember";
-import { banUserId } from "./functions/banUserId";
-import { MassmuteCmd } from "./commands/MassmuteCmd";
-import { MINUTES, trimPluginDescription } from "../../utils";
-import { DeleteCaseCmd } from "./commands/DeleteCaseCmd";
-import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
+import { GuildMutes } from "../../data/GuildMutes";
 import { GuildTempbans } from "../../data/GuildTempbans";
-import { outdatedTempbansLoop } from "./functions/outdatedTempbansLoop";
-import { EventEmitter } from "events";
 import { mapToPublicFn } from "../../pluginUtils";
-import { onModActionsEvent } from "./functions/onModActionsEvent";
-import { offModActionsEvent } from "./functions/offModActionsEvent";
-import { updateCase } from "./functions/updateCase";
 import { Queue } from "../../Queue";
-import { GuildMember, Message } from "discord.js";
+import { MINUTES, trimPluginDescription } from "../../utils";
+import { CasesPlugin } from "../Cases/CasesPlugin";
+import { MutesPlugin } from "../Mutes/MutesPlugin";
+import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { AddCaseCmd } from "./commands/AddCaseCmd";
+import { BanCmd } from "./commands/BanCmd";
+import { CaseCmd } from "./commands/CaseCmd";
+import { CasesModCmd } from "./commands/CasesModCmd";
+import { CasesUserCmd } from "./commands/CasesUserCmd";
+import { DeleteCaseCmd } from "./commands/DeleteCaseCmd";
+import { ForcebanCmd } from "./commands/ForcebanCmd";
+import { ForcemuteCmd } from "./commands/ForcemuteCmd";
+import { ForceUnmuteCmd } from "./commands/ForceunmuteCmd";
+import { HideCaseCmd } from "./commands/HideCaseCmd";
+import { KickCmd } from "./commands/KickCmd";
+import { MassbanCmd } from "./commands/MassBanCmd";
+import { MassmuteCmd } from "./commands/MassmuteCmd";
+import { MassunbanCmd } from "./commands/MassUnbanCmd";
+import { MuteCmd } from "./commands/MuteCmd";
+import { NoteCmd } from "./commands/NoteCmd";
+import { SoftbanCmd } from "./commands/SoftbanCommand";
+import { UnbanCmd } from "./commands/UnbanCmd";
+import { UnhideCaseCmd } from "./commands/UnhideCaseCmd";
+import { UnmuteCmd } from "./commands/UnmuteCmd";
+import { UpdateCmd } from "./commands/UpdateCmd";
+import { WarnCmd } from "./commands/WarnCmd";
+import { CreateBanCaseOnManualBanEvt } from "./events/CreateBanCaseOnManualBanEvt";
+import { CreateKickCaseOnManualKickEvt } from "./events/CreateKickCaseOnManualKickEvt";
+import { CreateUnbanCaseOnManualUnbanEvt } from "./events/CreateUnbanCaseOnManualUnbanEvt";
+import { PostAlertOnMemberJoinEvt } from "./events/PostAlertOnMemberJoinEvt";
+import { banUserId } from "./functions/banUserId";
+import { kickMember } from "./functions/kickMember";
+import { offModActionsEvent } from "./functions/offModActionsEvent";
+import { onModActionsEvent } from "./functions/onModActionsEvent";
+import { outdatedTempbansLoop } from "./functions/outdatedTempbansLoop";
+import { updateCase } from "./functions/updateCase";
+import { warnMember } from "./functions/warnMember";
+import { BanOptions, ConfigSchema, KickOptions, ModActionsPluginType, WarnOptions } from "./types";
+
 
 const defaultOptions = {
   config: {
diff --git a/backend/src/plugins/ModActions/commands/AddCaseCmd.ts b/backend/src/plugins/ModActions/commands/AddCaseCmd.ts
index 7f2a551d..6dbfb67d 100644
--- a/backend/src/plugins/ModActions/commands/AddCaseCmd.ts
+++ b/backend/src/plugins/ModActions/commands/AddCaseCmd.ts
@@ -1,12 +1,12 @@
-import { modActionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { canActOn, sendErrorMessage, hasPermission, sendSuccessMessage } from "../../../pluginUtils";
-import { resolveUser, resolveMember, stripObjectToScalars } from "../../../utils";
-import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
 import { CaseTypes } from "../../../data/CaseTypes";
-import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
 import { Case } from "../../../data/entities/Case";
 import { LogType } from "../../../data/LogType";
+import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
+import { canActOn, hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { resolveMember, resolveUser, stripObjectToScalars } from "../../../utils";
+import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
+import { modActionsCmd } from "../types";
 
 const opts = {
   mod: ct.member({ option: true }),
diff --git a/backend/src/plugins/ModActions/commands/BanCmd.ts b/backend/src/plugins/ModActions/commands/BanCmd.ts
index 1d113168..8ebc8e2a 100644
--- a/backend/src/plugins/ModActions/commands/BanCmd.ts
+++ b/backend/src/plugins/ModActions/commands/BanCmd.ts
@@ -1,18 +1,18 @@
-import { modActionsCmd, IgnoredEventType } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { canActOn, sendErrorMessage, hasPermission, sendSuccessMessage } from "../../../pluginUtils";
-import { resolveUser, resolveMember, stripObjectToScalars, noop } from "../../../utils";
-import { isBanned } from "../functions/isBanned";
-import { readContactMethodsFromArgs } from "../functions/readContactMethodsFromArgs";
-import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
-import { banUserId } from "../functions/banUserId";
-import { getMemberLevel } from "knub/dist/helpers";
 import humanizeDuration from "humanize-duration";
-import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
+import { getMemberLevel } from "knub/dist/helpers";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { CaseTypes } from "../../../data/CaseTypes";
 import { LogType } from "../../../data/LogType";
+import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
+import { canActOn, hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { resolveMember, resolveUser, stripObjectToScalars } from "../../../utils";
 import { banLock } from "../../../utils/lockNameHelpers";
 import { waitForButtonConfirm } from "../../../utils/waitForInteraction";
+import { banUserId } from "../functions/banUserId";
+import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
+import { isBanned } from "../functions/isBanned";
+import { readContactMethodsFromArgs } from "../functions/readContactMethodsFromArgs";
+import { modActionsCmd } from "../types";
 
 const opts = {
   mod: ct.member({ option: true }),
diff --git a/backend/src/plugins/ModActions/commands/CaseCmd.ts b/backend/src/plugins/ModActions/commands/CaseCmd.ts
index 6c50d4c8..d3d8ce95 100644
--- a/backend/src/plugins/ModActions/commands/CaseCmd.ts
+++ b/backend/src/plugins/ModActions/commands/CaseCmd.ts
@@ -1,7 +1,7 @@
-import { modActionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { sendErrorMessage } from "../../../pluginUtils";
 import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
+import { sendErrorMessage } from "../../../pluginUtils";
+import { modActionsCmd } from "../types";
 
 export const CaseCmd = modActionsCmd({
   trigger: "case",
diff --git a/backend/src/plugins/ModActions/commands/CasesModCmd.ts b/backend/src/plugins/ModActions/commands/CasesModCmd.ts
index 49bbc937..7bc9d19f 100644
--- a/backend/src/plugins/ModActions/commands/CasesModCmd.ts
+++ b/backend/src/plugins/ModActions/commands/CasesModCmd.ts
@@ -1,15 +1,14 @@
-import { modActionsCmd } from "../types";
+import { MessageEmbedOptions, User } from "discord.js";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage } from "../../../pluginUtils";
-import { trimLines, createChunkedMessage, emptyEmbedValue, sorter, resolveUser } from "../../../utils";
-import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { emptyEmbedValue, resolveUser, trimLines } from "../../../utils";
 import { asyncMap } from "../../../utils/async";
-
-import { getChunkedEmbedFields } from "../../../utils/getChunkedEmbedFields";
-import { getDefaultPrefix } from "knub/dist/commands/commandUtils";
-import { getGuildPrefix } from "../../../utils/getGuildPrefix";
 import { createPaginatedMessage } from "../../../utils/createPaginatedMessage";
-import { MessageEmbedOptions, User } from "discord.js";
+import { getChunkedEmbedFields } from "../../../utils/getChunkedEmbedFields";
+import { getGuildPrefix } from "../../../utils/getGuildPrefix";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { modActionsCmd } from "../types";
+
 
 const opts = {
   mod: ct.userId({ option: true }),
diff --git a/backend/src/plugins/ModActions/commands/CasesUserCmd.ts b/backend/src/plugins/ModActions/commands/CasesUserCmd.ts
index 7fa4f499..b4af16a4 100644
--- a/backend/src/plugins/ModActions/commands/CasesUserCmd.ts
+++ b/backend/src/plugins/ModActions/commands/CasesUserCmd.ts
@@ -1,22 +1,16 @@
-import { modActionsCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { sendErrorMessage } from "../../../pluginUtils";
-import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
-import {
-  UnknownUser,
-  multiSorter,
-  trimLines,
-  createChunkedMessage,
-  resolveUser,
-  emptyEmbedValue,
-  chunkArray,
-} from "../../../utils";
-import { getGuildPrefix } from "../../../utils/getGuildPrefix";
-
-import { getChunkedEmbedFields } from "../../../utils/getChunkedEmbedFields";
-import { asyncMap } from "../../../utils/async";
-import { CaseTypes } from "../../../data/CaseTypes";
 import { MessageEmbedOptions, User } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { CaseTypes } from "../../../data/CaseTypes";
+import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
+import { sendErrorMessage } from "../../../pluginUtils";
+import {
+    chunkArray, emptyEmbedValue, resolveUser, trimLines, UnknownUser
+} from "../../../utils";
+import { asyncMap } from "../../../utils/async";
+import { getChunkedEmbedFields } from "../../../utils/getChunkedEmbedFields";
+import { getGuildPrefix } from "../../../utils/getGuildPrefix";
+import { modActionsCmd } from "../types";
+
 
 const opts = {
   expand: ct.bool({ option: true, isSwitch: true, shortcut: "e" }),
diff --git a/backend/src/plugins/ModActions/commands/DeleteCaseCmd.ts b/backend/src/plugins/ModActions/commands/DeleteCaseCmd.ts
index ecda9c25..6e99fb9f 100644
--- a/backend/src/plugins/ModActions/commands/DeleteCaseCmd.ts
+++ b/backend/src/plugins/ModActions/commands/DeleteCaseCmd.ts
@@ -1,16 +1,15 @@
-import { modActionsCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { helpers } from "knub";
-import { CasesPlugin } from "../../Cases/CasesPlugin";
-
-import { SECONDS, stripObjectToScalars, trimLines } from "../../../utils";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
-import { LogType } from "../../../data/LogType";
-import moment from "moment-timezone";
-import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
-import { Case } from "../../../data/entities/Case";
 import { TextChannel } from "discord.js";
+import { helpers } from "knub";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { Case } from "../../../data/entities/Case";
+import { LogType } from "../../../data/LogType";
+import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { SECONDS, stripObjectToScalars, trimLines } from "../../../utils";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
+import { modActionsCmd } from "../types";
+
 
 export const DeleteCaseCmd = modActionsCmd({
   trigger: ["delete_case", "deletecase"],
diff --git a/backend/src/plugins/ModActions/commands/ForcebanCmd.ts b/backend/src/plugins/ModActions/commands/ForcebanCmd.ts
index 6ba06b74..a4ea8460 100644
--- a/backend/src/plugins/ModActions/commands/ForcebanCmd.ts
+++ b/backend/src/plugins/ModActions/commands/ForcebanCmd.ts
@@ -1,15 +1,13 @@
-import { modActionsCmd, IgnoredEventType } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { canActOn, sendErrorMessage, hasPermission, sendSuccessMessage } from "../../../pluginUtils";
-import { resolveUser, resolveMember, stripObjectToScalars } from "../../../utils";
-import { isBanned } from "../functions/isBanned";
-import { readContactMethodsFromArgs } from "../functions/readContactMethodsFromArgs";
-import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
-import { banUserId } from "../functions/banUserId";
-import { ignoreEvent } from "../functions/ignoreEvent";
-import { LogType } from "../../../data/LogType";
 import { CaseTypes } from "../../../data/CaseTypes";
+import { LogType } from "../../../data/LogType";
 import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
+import { canActOn, hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { resolveMember, resolveUser, stripObjectToScalars } from "../../../utils";
+import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
+import { ignoreEvent } from "../functions/ignoreEvent";
+import { isBanned } from "../functions/isBanned";
+import { IgnoredEventType, modActionsCmd } from "../types";
 
 const opts = {
   mod: ct.member({ option: true }),
diff --git a/backend/src/plugins/ModActions/commands/ForcemuteCmd.ts b/backend/src/plugins/ModActions/commands/ForcemuteCmd.ts
index af680374..18fe1228 100644
--- a/backend/src/plugins/ModActions/commands/ForcemuteCmd.ts
+++ b/backend/src/plugins/ModActions/commands/ForcemuteCmd.ts
@@ -1,8 +1,8 @@
-import { modActionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { canActOn, sendErrorMessage } from "../../../pluginUtils";
 import { resolveMember, resolveUser } from "../../../utils";
 import { actualMuteUserCmd } from "../functions/actualMuteUserCmd";
+import { modActionsCmd } from "../types";
 
 const opts = {
   mod: ct.member({ option: true }),
diff --git a/backend/src/plugins/ModActions/commands/ForceunmuteCmd.ts b/backend/src/plugins/ModActions/commands/ForceunmuteCmd.ts
index e86a6408..8ce0ce14 100644
--- a/backend/src/plugins/ModActions/commands/ForceunmuteCmd.ts
+++ b/backend/src/plugins/ModActions/commands/ForceunmuteCmd.ts
@@ -1,8 +1,8 @@
-import { modActionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { canActOn, sendErrorMessage } from "../../../pluginUtils";
-import { resolveUser, resolveMember } from "../../../utils";
+import { resolveMember, resolveUser } from "../../../utils";
 import { actualUnmuteCmd } from "../functions/actualUnmuteUserCmd";
+import { modActionsCmd } from "../types";
 
 const opts = {
   mod: ct.member({ option: true }),
diff --git a/backend/src/plugins/ModActions/commands/HideCaseCmd.ts b/backend/src/plugins/ModActions/commands/HideCaseCmd.ts
index 0e12521f..38337d85 100644
--- a/backend/src/plugins/ModActions/commands/HideCaseCmd.ts
+++ b/backend/src/plugins/ModActions/commands/HideCaseCmd.ts
@@ -1,6 +1,6 @@
-import { modActionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { modActionsCmd } from "../types";
 
 export const HideCaseCmd = modActionsCmd({
   trigger: ["hide", "hidecase", "hide_case"],
diff --git a/backend/src/plugins/ModActions/commands/KickCmd.ts b/backend/src/plugins/ModActions/commands/KickCmd.ts
index d93e0369..080294d0 100644
--- a/backend/src/plugins/ModActions/commands/KickCmd.ts
+++ b/backend/src/plugins/ModActions/commands/KickCmd.ts
@@ -1,11 +1,6 @@
-import { modActionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { canActOn, sendErrorMessage } from "../../../pluginUtils";
-import { resolveUser, resolveMember } from "../../../utils";
-import { MutesPlugin } from "../../../plugins/Mutes/MutesPlugin";
-import { actualUnmuteCmd } from "../functions/actualUnmuteUserCmd";
-import { isBanned } from "../functions/isBanned";
 import { actualKickMemberCmd } from "../functions/actualKickMemberCmd";
+import { modActionsCmd } from "../types";
 
 const opts = {
   mod: ct.member({ option: true }),
diff --git a/backend/src/plugins/ModActions/commands/MassBanCmd.ts b/backend/src/plugins/ModActions/commands/MassBanCmd.ts
index 758dd268..796caf19 100644
--- a/backend/src/plugins/ModActions/commands/MassBanCmd.ts
+++ b/backend/src/plugins/ModActions/commands/MassBanCmd.ts
@@ -1,21 +1,17 @@
-import { modActionsCmd, IgnoredEventType } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { canActOn, sendErrorMessage, hasPermission, sendSuccessMessage } from "../../../pluginUtils";
-import { resolveUser, resolveMember, stripObjectToScalars, noop, MINUTES } from "../../../utils";
-import { isBanned } from "../functions/isBanned";
-import { readContactMethodsFromArgs } from "../functions/readContactMethodsFromArgs";
-import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
-import { banUserId } from "../functions/banUserId";
-import { CaseTypes } from "../../../data/CaseTypes";
-
-import { waitForReply } from "knub/dist/helpers";
-import { ignoreEvent } from "../functions/ignoreEvent";
-import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
-import { LogType } from "../../../data/LogType";
-import { performance } from "perf_hooks";
-import { humanizeDurationShort } from "../../../humanizeDurationShort";
-import { load } from "js-yaml";
 import { TextChannel } from "discord.js";
+import { waitForReply } from "knub/dist/helpers";
+import { performance } from "perf_hooks";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { CaseTypes } from "../../../data/CaseTypes";
+import { LogType } from "../../../data/LogType";
+import { humanizeDurationShort } from "../../../humanizeDurationShort";
+import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
+import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { MINUTES, noop, stripObjectToScalars } from "../../../utils";
+import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
+import { ignoreEvent } from "../functions/ignoreEvent";
+import { IgnoredEventType, modActionsCmd } from "../types";
+
 
 export const MassbanCmd = modActionsCmd({
   trigger: "massban",
diff --git a/backend/src/plugins/ModActions/commands/MassUnbanCmd.ts b/backend/src/plugins/ModActions/commands/MassUnbanCmd.ts
index d4673dbf..758b7817 100644
--- a/backend/src/plugins/ModActions/commands/MassUnbanCmd.ts
+++ b/backend/src/plugins/ModActions/commands/MassUnbanCmd.ts
@@ -1,16 +1,16 @@
-import { modActionsCmd, IgnoredEventType } from "../types";
+import { TextChannel } from "discord.js";
+import { waitForReply } from "knub/dist/helpers";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { CaseTypes } from "../../../data/CaseTypes";
+import { LogType } from "../../../data/LogType";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
 import { stripObjectToScalars } from "../../../utils";
-import { isBanned } from "../functions/isBanned";
-import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
-import { CaseTypes } from "../../../data/CaseTypes";
-
-import { waitForReply } from "knub/dist/helpers";
-import { ignoreEvent } from "../functions/ignoreEvent";
 import { CasesPlugin } from "../../Cases/CasesPlugin";
-import { LogType } from "../../../data/LogType";
-import { TextChannel } from "discord.js";
+import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
+import { ignoreEvent } from "../functions/ignoreEvent";
+import { isBanned } from "../functions/isBanned";
+import { IgnoredEventType, modActionsCmd } from "../types";
+
 
 export const MassunbanCmd = modActionsCmd({
   trigger: "massunban",
diff --git a/backend/src/plugins/ModActions/commands/MassmuteCmd.ts b/backend/src/plugins/ModActions/commands/MassmuteCmd.ts
index 15c2e90f..46c8eeea 100644
--- a/backend/src/plugins/ModActions/commands/MassmuteCmd.ts
+++ b/backend/src/plugins/ModActions/commands/MassmuteCmd.ts
@@ -1,14 +1,14 @@
-import { modActionsCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { stripObjectToScalars } from "../../../utils";
-import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
-
+import { TextChannel } from "discord.js";
 import { waitForReply } from "knub/dist/helpers";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { LogType } from "../../../data/LogType";
 import { logger } from "../../../logger";
 import { MutesPlugin } from "../../../plugins/Mutes/MutesPlugin";
-import { TextChannel } from "discord.js";
+import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { stripObjectToScalars } from "../../../utils";
+import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
+import { modActionsCmd } from "../types";
+
 
 export const MassmuteCmd = modActionsCmd({
   trigger: "massmute",
diff --git a/backend/src/plugins/ModActions/commands/MuteCmd.ts b/backend/src/plugins/ModActions/commands/MuteCmd.ts
index 4229bd6f..b51fbd1e 100644
--- a/backend/src/plugins/ModActions/commands/MuteCmd.ts
+++ b/backend/src/plugins/ModActions/commands/MuteCmd.ts
@@ -1,11 +1,11 @@
-import { modActionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { canActOn, sendErrorMessage } from "../../../pluginUtils";
-import { noop, resolveMember, resolveUser } from "../../../utils";
-import { isBanned } from "../functions/isBanned";
-
-import { actualMuteUserCmd } from "../functions/actualMuteUserCmd";
+import { resolveMember, resolveUser } from "../../../utils";
 import { waitForButtonConfirm } from "../../../utils/waitForInteraction";
+import { actualMuteUserCmd } from "../functions/actualMuteUserCmd";
+import { isBanned } from "../functions/isBanned";
+import { modActionsCmd } from "../types";
+
 
 const opts = {
   mod: ct.member({ option: true }),
diff --git a/backend/src/plugins/ModActions/commands/NoteCmd.ts b/backend/src/plugins/ModActions/commands/NoteCmd.ts
index 4b31954d..c5cd7679 100644
--- a/backend/src/plugins/ModActions/commands/NoteCmd.ts
+++ b/backend/src/plugins/ModActions/commands/NoteCmd.ts
@@ -1,12 +1,11 @@
-import { modActionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { Case } from "../../../data/entities/Case";
-import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
-import { CasesPlugin } from "../../Cases/CasesPlugin";
-import { LogType } from "../../../data/LogType";
 import { CaseTypes } from "../../../data/CaseTypes";
+import { LogType } from "../../../data/LogType";
+import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
 import { resolveUser, stripObjectToScalars } from "../../../utils";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
+import { modActionsCmd } from "../types";
 
 export const NoteCmd = modActionsCmd({
   trigger: "note",
diff --git a/backend/src/plugins/ModActions/commands/SoftbanCommand.ts b/backend/src/plugins/ModActions/commands/SoftbanCommand.ts
index ea768f09..9bbb6415 100644
--- a/backend/src/plugins/ModActions/commands/SoftbanCommand.ts
+++ b/backend/src/plugins/ModActions/commands/SoftbanCommand.ts
@@ -1,7 +1,7 @@
-import { modActionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { trimPluginDescription } from "../../../utils";
 import { actualKickMemberCmd } from "../functions/actualKickMemberCmd";
+import { modActionsCmd } from "../types";
 
 const opts = {
   mod: ct.member({ option: true }),
diff --git a/backend/src/plugins/ModActions/commands/UnbanCmd.ts b/backend/src/plugins/ModActions/commands/UnbanCmd.ts
index ada9c975..c93933f0 100644
--- a/backend/src/plugins/ModActions/commands/UnbanCmd.ts
+++ b/backend/src/plugins/ModActions/commands/UnbanCmd.ts
@@ -1,12 +1,12 @@
-import { modActionsCmd, IgnoredEventType } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { sendErrorMessage, hasPermission, sendSuccessMessage } from "../../../pluginUtils";
+import { CaseTypes } from "../../../data/CaseTypes";
+import { LogType } from "../../../data/LogType";
+import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
+import { hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
 import { resolveUser, stripObjectToScalars } from "../../../utils";
 import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
-import { LogType } from "../../../data/LogType";
 import { ignoreEvent } from "../functions/ignoreEvent";
-import { CaseTypes } from "../../../data/CaseTypes";
-import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
+import { IgnoredEventType, modActionsCmd } from "../types";
 
 const opts = {
   mod: ct.member({ option: true }),
diff --git a/backend/src/plugins/ModActions/commands/UnhideCaseCmd.ts b/backend/src/plugins/ModActions/commands/UnhideCaseCmd.ts
index 5418b2a5..9fe9e208 100644
--- a/backend/src/plugins/ModActions/commands/UnhideCaseCmd.ts
+++ b/backend/src/plugins/ModActions/commands/UnhideCaseCmd.ts
@@ -1,6 +1,6 @@
-import { modActionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { modActionsCmd } from "../types";
 
 export const UnhideCaseCmd = modActionsCmd({
   trigger: ["unhide", "unhidecase", "unhide_case"],
diff --git a/backend/src/plugins/ModActions/commands/UnmuteCmd.ts b/backend/src/plugins/ModActions/commands/UnmuteCmd.ts
index dae00bea..f09c2e83 100644
--- a/backend/src/plugins/ModActions/commands/UnmuteCmd.ts
+++ b/backend/src/plugins/ModActions/commands/UnmuteCmd.ts
@@ -1,11 +1,11 @@
-import { modActionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { canActOn, sendErrorMessage } from "../../../pluginUtils";
-import { resolveUser, resolveMember, noop } from "../../../utils";
 import { MutesPlugin } from "../../../plugins/Mutes/MutesPlugin";
+import { canActOn, sendErrorMessage } from "../../../pluginUtils";
+import { resolveMember, resolveUser } from "../../../utils";
+import { waitForButtonConfirm } from "../../../utils/waitForInteraction";
 import { actualUnmuteCmd } from "../functions/actualUnmuteUserCmd";
 import { isBanned } from "../functions/isBanned";
-import { waitForButtonConfirm } from "../../../utils/waitForInteraction";
+import { modActionsCmd } from "../types";
 
 const opts = {
   mod: ct.member({ option: true }),
diff --git a/backend/src/plugins/ModActions/commands/UpdateCmd.ts b/backend/src/plugins/ModActions/commands/UpdateCmd.ts
index 6c8d78ca..3310522e 100644
--- a/backend/src/plugins/ModActions/commands/UpdateCmd.ts
+++ b/backend/src/plugins/ModActions/commands/UpdateCmd.ts
@@ -1,6 +1,6 @@
-import { modActionsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { updateCase } from "../functions/updateCase";
+import { modActionsCmd } from "../types";
 
 export const UpdateCmd = modActionsCmd({
   trigger: ["update", "reason"],
diff --git a/backend/src/plugins/ModActions/commands/WarnCmd.ts b/backend/src/plugins/ModActions/commands/WarnCmd.ts
index 37f8d814..f85e1bdb 100644
--- a/backend/src/plugins/ModActions/commands/WarnCmd.ts
+++ b/backend/src/plugins/ModActions/commands/WarnCmd.ts
@@ -1,17 +1,15 @@
-import { modActionsCmd } from "../types";
+import { TextChannel } from "discord.js";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { Case } from "../../../data/entities/Case";
-import { canActOn, hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
-import { CasesPlugin } from "../../Cases/CasesPlugin";
-import { LogType } from "../../../data/LogType";
 import { CaseTypes } from "../../../data/CaseTypes";
+import { canActOn, hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
 import { errorMessage, resolveMember, resolveUser } from "../../../utils";
+import { waitForButtonConfirm } from "../../../utils/waitForInteraction";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
 import { isBanned } from "../functions/isBanned";
 import { readContactMethodsFromArgs } from "../functions/readContactMethodsFromArgs";
 import { warnMember } from "../functions/warnMember";
-import { TextChannel } from "discord.js";
-import { waitForButtonConfirm } from "../../../utils/waitForInteraction";
+import { modActionsCmd } from "../types";
 
 export const WarnCmd = modActionsCmd({
   trigger: "warn",
diff --git a/backend/src/plugins/ModActions/events/CreateBanCaseOnManualBanEvt.ts b/backend/src/plugins/ModActions/events/CreateBanCaseOnManualBanEvt.ts
index cc9b975c..997a05d7 100644
--- a/backend/src/plugins/ModActions/events/CreateBanCaseOnManualBanEvt.ts
+++ b/backend/src/plugins/ModActions/events/CreateBanCaseOnManualBanEvt.ts
@@ -1,14 +1,14 @@
-import { IgnoredEventType, modActionsEvt } from "../types";
-import { isEventIgnored } from "../functions/isEventIgnored";
-import { clearIgnoredEvents } from "../functions/clearIgnoredEvents";
-
-import { CasesPlugin } from "../../Cases/CasesPlugin";
-import { CaseTypes } from "../../../data/CaseTypes";
-import { safeFindRelevantAuditLogEntry } from "../../../utils/safeFindRelevantAuditLogEntry";
-import { LogType } from "../../../data/LogType";
-import { stripObjectToScalars, resolveUser, UnknownUser } from "../../../utils";
-import { Case } from "../../../data/entities/Case";
 import { GuildAuditLogs, User } from "discord.js";
+import { CaseTypes } from "../../../data/CaseTypes";
+import { Case } from "../../../data/entities/Case";
+import { LogType } from "../../../data/LogType";
+import { resolveUser, stripObjectToScalars, UnknownUser } from "../../../utils";
+import { safeFindRelevantAuditLogEntry } from "../../../utils/safeFindRelevantAuditLogEntry";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { clearIgnoredEvents } from "../functions/clearIgnoredEvents";
+import { isEventIgnored } from "../functions/isEventIgnored";
+import { IgnoredEventType, modActionsEvt } from "../types";
+
 
 /**
  * Create a BAN case automatically when a user is banned manually.
diff --git a/backend/src/plugins/ModActions/events/CreateKickCaseOnManualKickEvt.ts b/backend/src/plugins/ModActions/events/CreateKickCaseOnManualKickEvt.ts
index 3229058d..2a6af747 100644
--- a/backend/src/plugins/ModActions/events/CreateKickCaseOnManualKickEvt.ts
+++ b/backend/src/plugins/ModActions/events/CreateKickCaseOnManualKickEvt.ts
@@ -1,15 +1,15 @@
-import { IgnoredEventType, modActionsEvt } from "../types";
-import { isEventIgnored } from "../functions/isEventIgnored";
-import { clearIgnoredEvents } from "../functions/clearIgnoredEvents";
-
-import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { GuildAuditLogs, User } from "discord.js";
 import { CaseTypes } from "../../../data/CaseTypes";
-import { logger } from "../../../logger";
+import { Case } from "../../../data/entities/Case";
 import { LogType } from "../../../data/LogType";
+import { logger } from "../../../logger";
 import { resolveUser, stripObjectToScalars, UnknownUser } from "../../../utils";
 import { safeFindRelevantAuditLogEntry } from "../../../utils/safeFindRelevantAuditLogEntry";
-import { Case } from "../../../data/entities/Case";
-import { GuildAuditLogs, User } from "discord.js";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { clearIgnoredEvents } from "../functions/clearIgnoredEvents";
+import { isEventIgnored } from "../functions/isEventIgnored";
+import { IgnoredEventType, modActionsEvt } from "../types";
+
 
 /**
  * Create a KICK case automatically when a user is kicked manually.
diff --git a/backend/src/plugins/ModActions/events/CreateUnbanCaseOnManualUnbanEvt.ts b/backend/src/plugins/ModActions/events/CreateUnbanCaseOnManualUnbanEvt.ts
index 5d684e97..d0824fe1 100644
--- a/backend/src/plugins/ModActions/events/CreateUnbanCaseOnManualUnbanEvt.ts
+++ b/backend/src/plugins/ModActions/events/CreateUnbanCaseOnManualUnbanEvt.ts
@@ -1,14 +1,14 @@
-import { IgnoredEventType, modActionsEvt } from "../types";
-import { isEventIgnored } from "../functions/isEventIgnored";
-import { clearIgnoredEvents } from "../functions/clearIgnoredEvents";
-
-import { CasesPlugin } from "../../Cases/CasesPlugin";
-import { CaseTypes } from "../../../data/CaseTypes";
-import { safeFindRelevantAuditLogEntry } from "../../../utils/safeFindRelevantAuditLogEntry";
-import { stripObjectToScalars, resolveUser, UnknownUser } from "../../../utils";
-import { LogType } from "../../../data/LogType";
-import { Case } from "../../../data/entities/Case";
 import { GuildAuditLogs, User } from "discord.js";
+import { CaseTypes } from "../../../data/CaseTypes";
+import { Case } from "../../../data/entities/Case";
+import { LogType } from "../../../data/LogType";
+import { resolveUser, stripObjectToScalars, UnknownUser } from "../../../utils";
+import { safeFindRelevantAuditLogEntry } from "../../../utils/safeFindRelevantAuditLogEntry";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { clearIgnoredEvents } from "../functions/clearIgnoredEvents";
+import { isEventIgnored } from "../functions/isEventIgnored";
+import { IgnoredEventType, modActionsEvt } from "../types";
+
 
 /**
  * Create an UNBAN case automatically when a user is unbanned manually.
diff --git a/backend/src/plugins/ModActions/events/PostAlertOnMemberJoinEvt.ts b/backend/src/plugins/ModActions/events/PostAlertOnMemberJoinEvt.ts
index d13ecef4..c17a7ad1 100644
--- a/backend/src/plugins/ModActions/events/PostAlertOnMemberJoinEvt.ts
+++ b/backend/src/plugins/ModActions/events/PostAlertOnMemberJoinEvt.ts
@@ -1,10 +1,10 @@
-import { modActionsEvt } from "../types";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { Permissions, TextChannel } from "discord.js";
 import { LogType } from "../../../data/LogType";
-
 import { resolveMember } from "../../../utils";
 import { hasDiscordPermissions } from "../../../utils/hasDiscordPermissions";
-import { TextChannel, Constants, Permissions } from "discord.js";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { modActionsEvt } from "../types";
+
 
 /**
  * Show an alert if a member with prior notes joins the server
diff --git a/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts b/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts
index 290996b0..06820890 100644
--- a/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts
+++ b/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts
@@ -1,15 +1,15 @@
-import { LogType } from "../../../data/LogType";
-import { IgnoredEventType, ModActionsPluginType } from "../types";
-import { errorMessage, resolveUser, resolveMember } from "../../../utils";
+import { GuildMember, TextChannel } from "discord.js";
 import { GuildPluginData } from "knub";
-import { sendErrorMessage, canActOn, sendSuccessMessage } from "../../../pluginUtils";
 import { hasPermission } from "knub/dist/helpers";
-import { readContactMethodsFromArgs } from "./readContactMethodsFromArgs";
+import { LogType } from "../../../data/LogType";
+import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { errorMessage, resolveMember, resolveUser } from "../../../utils";
+import { IgnoredEventType, ModActionsPluginType } from "../types";
 import { formatReasonWithAttachments } from "./formatReasonWithAttachments";
-import { kickMember } from "./kickMember";
 import { ignoreEvent } from "./ignoreEvent";
 import { isBanned } from "./isBanned";
-import { GuildMember, TextChannel } from "discord.js";
+import { kickMember } from "./kickMember";
+import { readContactMethodsFromArgs } from "./readContactMethodsFromArgs";
 
 export async function actualKickMemberCmd(
   pluginData: GuildPluginData<ModActionsPluginType>,
diff --git a/backend/src/plugins/ModActions/functions/actualMuteUserCmd.ts b/backend/src/plugins/ModActions/functions/actualMuteUserCmd.ts
index 203913b0..b5ff7ed1 100644
--- a/backend/src/plugins/ModActions/functions/actualMuteUserCmd.ts
+++ b/backend/src/plugins/ModActions/functions/actualMuteUserCmd.ts
@@ -1,15 +1,15 @@
-import { asSingleLine, isDiscordRESTError, UnknownUser } from "../../../utils";
-import { hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { GuildPluginData } from "knub";
-import { ModActionsPluginType } from "../types";
+import { GuildMember, Message, TextChannel, User } from "discord.js";
 import humanizeDuration from "humanize-duration";
-import { formatReasonWithAttachments } from "./formatReasonWithAttachments";
-import { MuteResult } from "../../Mutes/types";
-import { MutesPlugin } from "../../Mutes/MutesPlugin";
-import { readContactMethodsFromArgs } from "./readContactMethodsFromArgs";
-import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
+import { GuildPluginData } from "knub";
 import { logger } from "../../../logger";
-import { User, Message, TextChannel, GuildMember } from "discord.js";
+import { hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
+import { asSingleLine, isDiscordRESTError, UnknownUser } from "../../../utils";
+import { MutesPlugin } from "../../Mutes/MutesPlugin";
+import { MuteResult } from "../../Mutes/types";
+import { ModActionsPluginType } from "../types";
+import { formatReasonWithAttachments } from "./formatReasonWithAttachments";
+import { readContactMethodsFromArgs } from "./readContactMethodsFromArgs";
 
 /**
  * The actual function run by both !mute and !forcemute.
diff --git a/backend/src/plugins/ModActions/functions/actualUnmuteUserCmd.ts b/backend/src/plugins/ModActions/functions/actualUnmuteUserCmd.ts
index 72950b82..6b6ddd91 100644
--- a/backend/src/plugins/ModActions/functions/actualUnmuteUserCmd.ts
+++ b/backend/src/plugins/ModActions/functions/actualUnmuteUserCmd.ts
@@ -1,12 +1,12 @@
-import { GuildPluginData } from "knub";
-import { ModActionsPluginType } from "../types";
-
-import { UnknownUser, asSingleLine } from "../../../utils";
-import { sendErrorMessage, sendSuccessMessage, hasPermission } from "../../../pluginUtils";
-import { formatReasonWithAttachments } from "./formatReasonWithAttachments";
-import { MutesPlugin } from "../../../plugins/Mutes/MutesPlugin";
+import { GuildMember, Message, TextChannel, User } from "discord.js";
 import humanizeDuration from "humanize-duration";
-import { User, Message, GuildMember, TextChannel } from "discord.js";
+import { GuildPluginData } from "knub";
+import { MutesPlugin } from "../../../plugins/Mutes/MutesPlugin";
+import { hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { asSingleLine, UnknownUser } from "../../../utils";
+import { ModActionsPluginType } from "../types";
+import { formatReasonWithAttachments } from "./formatReasonWithAttachments";
+
 
 export async function actualUnmuteCmd(
   pluginData: GuildPluginData<ModActionsPluginType>,
diff --git a/backend/src/plugins/ModActions/functions/banUserId.ts b/backend/src/plugins/ModActions/functions/banUserId.ts
index e1da2e2d..b6bea1aa 100644
--- a/backend/src/plugins/ModActions/functions/banUserId.ts
+++ b/backend/src/plugins/ModActions/functions/banUserId.ts
@@ -1,23 +1,23 @@
-import { GuildPluginData } from "knub";
-import { BanOptions, BanResult, IgnoredEventType, ModActionsPluginType } from "../types";
-import {
-  createUserNotificationError,
-  notifyUser,
-  resolveUser,
-  stripObjectToScalars,
-  ucfirst,
-  UserNotificationResult,
-} from "../../../utils";
-
-import { renderTemplate } from "../../../templateFormatter";
-import { getDefaultContactMethods } from "./getDefaultContactMethods";
-import { LogType } from "../../../data/LogType";
-import { ignoreEvent } from "./ignoreEvent";
-import { CasesPlugin } from "../../Cases/CasesPlugin";
-import { CaseTypes } from "../../../data/CaseTypes";
-import { logger } from "../../../logger";
-import humanizeDuration from "humanize-duration";
 import { DiscordAPIError, User } from "discord.js";
+import humanizeDuration from "humanize-duration";
+import { GuildPluginData } from "knub";
+import { CaseTypes } from "../../../data/CaseTypes";
+import { LogType } from "../../../data/LogType";
+import { logger } from "../../../logger";
+import { renderTemplate } from "../../../templateFormatter";
+import {
+    createUserNotificationError,
+    notifyUser,
+    resolveUser,
+    stripObjectToScalars,
+    ucfirst,
+    UserNotificationResult
+} from "../../../utils";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { BanOptions, BanResult, IgnoredEventType, ModActionsPluginType } from "../types";
+import { getDefaultContactMethods } from "./getDefaultContactMethods";
+import { ignoreEvent } from "./ignoreEvent";
+
 
 /**
  * Ban the specified user id, whether or not they're actually on the server at the time. Generates a case.
diff --git a/backend/src/plugins/ModActions/functions/getDefaultContactMethods.ts b/backend/src/plugins/ModActions/functions/getDefaultContactMethods.ts
index 68078a88..a4d9d75c 100644
--- a/backend/src/plugins/ModActions/functions/getDefaultContactMethods.ts
+++ b/backend/src/plugins/ModActions/functions/getDefaultContactMethods.ts
@@ -1,7 +1,7 @@
-import { GuildPluginData } from "knub";
-import { ModActionsPluginType } from "../types";
-import { UserNotificationMethod } from "../../../utils";
 import { TextChannel } from "discord.js";
+import { GuildPluginData } from "knub";
+import { UserNotificationMethod } from "../../../utils";
+import { ModActionsPluginType } from "../types";
 
 export function getDefaultContactMethods(
   pluginData: GuildPluginData<ModActionsPluginType>,
diff --git a/backend/src/plugins/ModActions/functions/ignoreEvent.ts b/backend/src/plugins/ModActions/functions/ignoreEvent.ts
index 6f97e84f..71c25362 100644
--- a/backend/src/plugins/ModActions/functions/ignoreEvent.ts
+++ b/backend/src/plugins/ModActions/functions/ignoreEvent.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { IgnoredEventType, ModActionsPluginType } from "../types";
 import { SECONDS } from "../../../utils";
+import { IgnoredEventType, ModActionsPluginType } from "../types";
 import { clearIgnoredEvents } from "./clearIgnoredEvents";
 
 const DEFAULT_TIMEOUT = 15 * SECONDS;
diff --git a/backend/src/plugins/ModActions/functions/isBanned.ts b/backend/src/plugins/ModActions/functions/isBanned.ts
index 1be820fa..de419db4 100644
--- a/backend/src/plugins/ModActions/functions/isBanned.ts
+++ b/backend/src/plugins/ModActions/functions/isBanned.ts
@@ -1,10 +1,10 @@
-import { GuildPluginData } from "knub";
-import { ModActionsPluginType } from "../types";
-import { isDiscordHTTPError, isDiscordRESTError, SECONDS, sleep } from "../../../utils";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
-import { LogType } from "../../../data/LogType";
-import { hasDiscordPermissions } from "../../../utils/hasDiscordPermissions";
 import { Permissions } from "discord.js";
+import { GuildPluginData } from "knub";
+import { LogType } from "../../../data/LogType";
+import { isDiscordHTTPError, isDiscordRESTError, SECONDS, sleep } from "../../../utils";
+import { hasDiscordPermissions } from "../../../utils/hasDiscordPermissions";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { ModActionsPluginType } from "../types";
 
 export async function isBanned(
   pluginData: GuildPluginData<ModActionsPluginType>,
diff --git a/backend/src/plugins/ModActions/functions/kickMember.ts b/backend/src/plugins/ModActions/functions/kickMember.ts
index 175a480e..09fbb9f5 100644
--- a/backend/src/plugins/ModActions/functions/kickMember.ts
+++ b/backend/src/plugins/ModActions/functions/kickMember.ts
@@ -1,21 +1,21 @@
-import { GuildPluginData } from "knub";
-import { IgnoredEventType, KickOptions, KickResult, ModActionsPluginType } from "../types";
-
-import {
-  createUserNotificationError,
-  notifyUser,
-  resolveUser,
-  stripObjectToScalars,
-  ucfirst,
-  UserNotificationResult,
-} from "../../../utils";
-import { renderTemplate } from "../../../templateFormatter";
-import { getDefaultContactMethods } from "./getDefaultContactMethods";
-import { LogType } from "../../../data/LogType";
-import { ignoreEvent } from "./ignoreEvent";
-import { CaseTypes } from "../../../data/CaseTypes";
-import { CasesPlugin } from "../../Cases/CasesPlugin";
 import { GuildMember } from "discord.js";
+import { GuildPluginData } from "knub";
+import { CaseTypes } from "../../../data/CaseTypes";
+import { LogType } from "../../../data/LogType";
+import { renderTemplate } from "../../../templateFormatter";
+import {
+    createUserNotificationError,
+    notifyUser,
+    resolveUser,
+    stripObjectToScalars,
+    ucfirst,
+    UserNotificationResult
+} from "../../../utils";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { IgnoredEventType, KickOptions, KickResult, ModActionsPluginType } from "../types";
+import { getDefaultContactMethods } from "./getDefaultContactMethods";
+import { ignoreEvent } from "./ignoreEvent";
+
 
 /**
  * Kick the specified server member. Generates a case.
diff --git a/backend/src/plugins/ModActions/functions/outdatedTempbansLoop.ts b/backend/src/plugins/ModActions/functions/outdatedTempbansLoop.ts
index bb7fe336..510c9625 100644
--- a/backend/src/plugins/ModActions/functions/outdatedTempbansLoop.ts
+++ b/backend/src/plugins/ModActions/functions/outdatedTempbansLoop.ts
@@ -1,15 +1,15 @@
-import { resolveUser, SECONDS, stripObjectToScalars } from "../../../utils";
+import humanizeDuration from "humanize-duration";
 import { GuildPluginData } from "knub";
-import { IgnoredEventType, ModActionsPluginType } from "../types";
+import moment from "moment-timezone";
 import { LogType } from "src/data/LogType";
+import { logger } from "src/logger";
+import { CaseTypes } from "../../../data/CaseTypes";
+import { resolveUser, SECONDS, stripObjectToScalars } from "../../../utils";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { IgnoredEventType, ModActionsPluginType } from "../types";
 import { formatReasonWithAttachments } from "./formatReasonWithAttachments";
 import { ignoreEvent } from "./ignoreEvent";
 import { isBanned } from "./isBanned";
-import { logger } from "src/logger";
-import { CasesPlugin } from "../../Cases/CasesPlugin";
-import { CaseTypes } from "../../../data/CaseTypes";
-import moment from "moment-timezone";
-import humanizeDuration from "humanize-duration";
 
 const TEMPBAN_LOOP_TIME = 60 * SECONDS;
 
diff --git a/backend/src/plugins/ModActions/functions/warnMember.ts b/backend/src/plugins/ModActions/functions/warnMember.ts
index af6e267e..1be237c4 100644
--- a/backend/src/plugins/ModActions/functions/warnMember.ts
+++ b/backend/src/plugins/ModActions/functions/warnMember.ts
@@ -1,21 +1,21 @@
+import { GuildMember } from "discord.js";
 import { GuildPluginData } from "knub";
-import { ModActionsPluginType, WarnOptions, WarnResult } from "../types";
-
-import { getDefaultContactMethods } from "./getDefaultContactMethods";
-import {
-  createUserNotificationError,
-  notifyUser,
-  resolveUser,
-  stripObjectToScalars,
-  ucfirst,
-  UserNotificationResult,
-} from "../../../utils";
-import { CasesPlugin } from "../../Cases/CasesPlugin";
 import { CaseTypes } from "../../../data/CaseTypes";
 import { LogType } from "../../../data/LogType";
 import { renderTemplate } from "../../../templateFormatter";
-import { GuildMember, MessageOptions } from "discord.js";
+import {
+    createUserNotificationError,
+    notifyUser,
+    resolveUser,
+    stripObjectToScalars,
+    ucfirst,
+    UserNotificationResult
+} from "../../../utils";
 import { waitForButtonConfirm } from "../../../utils/waitForInteraction";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { ModActionsPluginType, WarnOptions, WarnResult } from "../types";
+import { getDefaultContactMethods } from "./getDefaultContactMethods";
+
 
 export async function warnMember(
   pluginData: GuildPluginData<ModActionsPluginType>,
diff --git a/backend/src/plugins/ModActions/types.ts b/backend/src/plugins/ModActions/types.ts
index 08c1314a..b8c07270 100644
--- a/backend/src/plugins/ModActions/types.ts
+++ b/backend/src/plugins/ModActions/types.ts
@@ -1,17 +1,17 @@
+import { TextChannel } from "discord.js";
+import { EventEmitter } from "events";
 import * as t from "io-ts";
-import { tNullable, UserNotificationMethod, UserNotificationResult } from "../../utils";
 import { BasePluginType, typedGuildCommand, typedGuildEventListener } from "knub";
-import { GuildMutes } from "../../data/GuildMutes";
+import { Case } from "../../data/entities/Case";
 import { GuildCases } from "../../data/GuildCases";
 import { GuildLogs } from "../../data/GuildLogs";
-import { Case } from "../../data/entities/Case";
+import { GuildMutes } from "../../data/GuildMutes";
+import { GuildTempbans } from "../../data/GuildTempbans";
+import { Queue } from "../../Queue";
+import { tNullable, UserNotificationMethod, UserNotificationResult } from "../../utils";
 import { CaseArgs } from "../Cases/types";
 
-import { GuildTempbans } from "../../data/GuildTempbans";
 import Timeout = NodeJS.Timeout;
-import { EventEmitter } from "events";
-import { Queue } from "../../Queue";
-import { TextChannel } from "discord.js";
 
 export const ConfigSchema = t.type({
   dm_on_warn: t.boolean,
diff --git a/backend/src/plugins/Mutes/MutesPlugin.ts b/backend/src/plugins/Mutes/MutesPlugin.ts
index acb16e44..23205f10 100644
--- a/backend/src/plugins/Mutes/MutesPlugin.ts
+++ b/backend/src/plugins/Mutes/MutesPlugin.ts
@@ -1,26 +1,27 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { ConfigSchema, MuteOptions, MutesPluginType } from "./types";
-import { CasesPlugin } from "../Cases/CasesPlugin";
-import { GuildMutes } from "../../data/GuildMutes";
+import { GuildMember } from "discord.js";
+import { EventEmitter } from "events";
+import { GuildArchives } from "../../data/GuildArchives";
 import { GuildCases } from "../../data/GuildCases";
 import { GuildLogs } from "../../data/GuildLogs";
-import { GuildArchives } from "../../data/GuildArchives";
-import { clearExpiredMutes } from "./functions/clearExpiredMutes";
-import { MutesCmd } from "./commands/MutesCmd";
-import { ClearBannedMutesCmd } from "./commands/ClearBannedMutesCmd";
-import { ClearActiveMuteOnRoleRemovalEvt } from "./events/ClearActiveMuteOnRoleRemovalEvt";
-import { ClearMutesWithoutRoleCmd } from "./commands/ClearMutesWithoutRoleCmd";
-import { ClearMutesCmd } from "./commands/ClearMutesCmd";
-import { muteUser } from "./functions/muteUser";
-import { unmuteUser } from "./functions/unmuteUser";
-
-import { ClearActiveMuteOnMemberBanEvt } from "./events/ClearActiveMuteOnMemberBanEvt";
-import { ReapplyActiveMuteOnJoinEvt } from "./events/ReapplyActiveMuteOnJoinEvt";
+import { GuildMutes } from "../../data/GuildMutes";
 import { mapToPublicFn } from "../../pluginUtils";
-import { EventEmitter } from "events";
-import { onMutesEvent } from "./functions/onMutesEvent";
+import { CasesPlugin } from "../Cases/CasesPlugin";
+import { LogsPlugin } from "../Logs/LogsPlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { ClearBannedMutesCmd } from "./commands/ClearBannedMutesCmd";
+import { ClearMutesCmd } from "./commands/ClearMutesCmd";
+import { ClearMutesWithoutRoleCmd } from "./commands/ClearMutesWithoutRoleCmd";
+import { MutesCmd } from "./commands/MutesCmd";
+import { ClearActiveMuteOnMemberBanEvt } from "./events/ClearActiveMuteOnMemberBanEvt";
+import { ClearActiveMuteOnRoleRemovalEvt } from "./events/ClearActiveMuteOnRoleRemovalEvt";
+import { ReapplyActiveMuteOnJoinEvt } from "./events/ReapplyActiveMuteOnJoinEvt";
+import { clearExpiredMutes } from "./functions/clearExpiredMutes";
+import { muteUser } from "./functions/muteUser";
 import { offMutesEvent } from "./functions/offMutesEvent";
-import { GuildMember } from "discord.js";
+import { onMutesEvent } from "./functions/onMutesEvent";
+import { unmuteUser } from "./functions/unmuteUser";
+import { ConfigSchema, MutesPluginType } from "./types";
+
 
 const defaultOptions = {
   config: {
@@ -72,7 +73,7 @@ export const MutesPlugin = zeppelinGuildPlugin<MutesPluginType>()({
   configSchema: ConfigSchema,
   defaultOptions,
 
-  dependencies: [CasesPlugin],
+  dependencies: [CasesPlugin, LogsPlugin],
 
   // prettier-ignore
   commands: [
diff --git a/backend/src/plugins/Mutes/commands/ClearBannedMutesCmd.ts b/backend/src/plugins/Mutes/commands/ClearBannedMutesCmd.ts
index c2fbc844..537450a6 100644
--- a/backend/src/plugins/Mutes/commands/ClearBannedMutesCmd.ts
+++ b/backend/src/plugins/Mutes/commands/ClearBannedMutesCmd.ts
@@ -1,7 +1,7 @@
+import { User } from "discord.js";
+import { sendSuccessMessage } from "../../../pluginUtils";
 import { mutesCmd } from "../types";
 
-import { sendSuccessMessage } from "../../../pluginUtils";
-import { User } from "discord.js";
 
 export const ClearBannedMutesCmd = mutesCmd({
   trigger: "clear_banned_mutes",
diff --git a/backend/src/plugins/Mutes/commands/ClearMutesCmd.ts b/backend/src/plugins/Mutes/commands/ClearMutesCmd.ts
index 7a07efb7..3021a7a7 100644
--- a/backend/src/plugins/Mutes/commands/ClearMutesCmd.ts
+++ b/backend/src/plugins/Mutes/commands/ClearMutesCmd.ts
@@ -1,6 +1,6 @@
-import { mutesCmd } from "../types";
-import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { mutesCmd } from "../types";
 
 export const ClearMutesCmd = mutesCmd({
   trigger: "clear_mutes",
diff --git a/backend/src/plugins/Mutes/commands/ClearMutesWithoutRoleCmd.ts b/backend/src/plugins/Mutes/commands/ClearMutesWithoutRoleCmd.ts
index 08aebe63..eec295c5 100644
--- a/backend/src/plugins/Mutes/commands/ClearMutesWithoutRoleCmd.ts
+++ b/backend/src/plugins/Mutes/commands/ClearMutesWithoutRoleCmd.ts
@@ -1,6 +1,6 @@
-import { mutesCmd } from "../types";
 import { sendSuccessMessage } from "../../../pluginUtils";
 import { resolveMember } from "../../../utils";
+import { mutesCmd } from "../types";
 
 export const ClearMutesWithoutRoleCmd = mutesCmd({
   trigger: "clear_mutes_without_role",
diff --git a/backend/src/plugins/Mutes/commands/MutesCmd.ts b/backend/src/plugins/Mutes/commands/MutesCmd.ts
index 276a6227..10c2d2e3 100644
--- a/backend/src/plugins/Mutes/commands/MutesCmd.ts
+++ b/backend/src/plugins/Mutes/commands/MutesCmd.ts
@@ -1,10 +1,10 @@
-import { IMuteWithDetails, mutesCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { DBDateFormat, isFullMessage, MINUTES, noop, resolveMember } from "../../../utils";
+import { GuildMember } from "discord.js";
 import moment from "moment-timezone";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { humanizeDurationShort } from "../../../humanizeDurationShort";
 import { getBaseUrl } from "../../../pluginUtils";
-import { GuildMember } from "discord.js";
+import { DBDateFormat, isFullMessage, MINUTES, noop, resolveMember } from "../../../utils";
+import { IMuteWithDetails, mutesCmd } from "../types";
 
 export const MutesCmd = mutesCmd({
   trigger: "mutes",
diff --git a/backend/src/plugins/Mutes/events/ClearActiveMuteOnRoleRemovalEvt.ts b/backend/src/plugins/Mutes/events/ClearActiveMuteOnRoleRemovalEvt.ts
index f3b4eeed..4b8aa784 100644
--- a/backend/src/plugins/Mutes/events/ClearActiveMuteOnRoleRemovalEvt.ts
+++ b/backend/src/plugins/Mutes/events/ClearActiveMuteOnRoleRemovalEvt.ts
@@ -1,5 +1,5 @@
-import { mutesEvt } from "../types";
 import { memberHasMutedRole } from "../functions/memberHasMutedRole";
+import { mutesEvt } from "../types";
 
 /**
  * Clear active mute if the mute role is removed manually
diff --git a/backend/src/plugins/Mutes/events/ReapplyActiveMuteOnJoinEvt.ts b/backend/src/plugins/Mutes/events/ReapplyActiveMuteOnJoinEvt.ts
index 729392b8..a1a942fa 100644
--- a/backend/src/plugins/Mutes/events/ReapplyActiveMuteOnJoinEvt.ts
+++ b/backend/src/plugins/Mutes/events/ReapplyActiveMuteOnJoinEvt.ts
@@ -1,7 +1,7 @@
-import { mutesEvt } from "../types";
 import { LogType } from "../../../data/LogType";
 import { stripObjectToScalars } from "../../../utils";
 import { memberRolesLock } from "../../../utils/lockNameHelpers";
+import { mutesEvt } from "../types";
 
 /**
  * Reapply active mutes on join
diff --git a/backend/src/plugins/Mutes/functions/clearExpiredMutes.ts b/backend/src/plugins/Mutes/functions/clearExpiredMutes.ts
index 7db4e807..233906a2 100644
--- a/backend/src/plugins/Mutes/functions/clearExpiredMutes.ts
+++ b/backend/src/plugins/Mutes/functions/clearExpiredMutes.ts
@@ -1,9 +1,9 @@
 import { GuildPluginData } from "knub";
-import { MutesPluginType } from "../types";
 import { LogType } from "../../../data/LogType";
 import { resolveMember, stripObjectToScalars, UnknownUser } from "../../../utils";
-
 import { memberRolesLock } from "../../../utils/lockNameHelpers";
+import { MutesPluginType } from "../types";
+
 
 export async function clearExpiredMutes(pluginData: GuildPluginData<MutesPluginType>) {
   const expiredMutes = await pluginData.state.mutes.getExpiredMutes();
diff --git a/backend/src/plugins/Mutes/functions/muteUser.ts b/backend/src/plugins/Mutes/functions/muteUser.ts
index 15bef04f..6d26d661 100644
--- a/backend/src/plugins/Mutes/functions/muteUser.ts
+++ b/backend/src/plugins/Mutes/functions/muteUser.ts
@@ -1,25 +1,29 @@
-import { GuildPluginData } from "knub";
-import { MuteOptions, MutesPluginType } from "../types";
-import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
-import humanizeDuration from "humanize-duration";
-import {
-  notifyUser,
-  resolveUser,
-  stripObjectToScalars,
-  ucfirst,
-  UserNotificationResult,
-  resolveMember,
-  UserNotificationMethod,
-} from "../../../utils";
-import { renderTemplate } from "../../../templateFormatter";
-
-import { CasesPlugin } from "../../Cases/CasesPlugin";
-import { CaseTypes } from "../../../data/CaseTypes";
-import { LogType } from "../../../data/LogType";
-import { Case } from "../../../data/entities/Case";
-import { LogsPlugin } from "../../../plugins/Logs/LogsPlugin";
-import { muteLock } from "../../../utils/lockNameHelpers";
 import { TextChannel, User } from "discord.js";
+import humanizeDuration from "humanize-duration";
+import { GuildPluginData } from "knub";
+import { CaseTypes } from "../../../data/CaseTypes";
+import { Case } from "../../../data/entities/Case";
+import { LogType } from "../../../data/LogType";
+import { LogsPlugin } from "../../../plugins/Logs/LogsPlugin";
+import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
+import { renderTemplate } from "../../../templateFormatter";
+import {
+    notifyUser,
+
+
+
+
+    resolveMember, resolveUser,
+    stripObjectToScalars,
+    ucfirst,
+
+
+    UserNotificationMethod, UserNotificationResult
+} from "../../../utils";
+import { muteLock } from "../../../utils/lockNameHelpers";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { MuteOptions, MutesPluginType } from "../types";
+
 
 export async function muteUser(
   pluginData: GuildPluginData<MutesPluginType>,
diff --git a/backend/src/plugins/Mutes/functions/unmuteUser.ts b/backend/src/plugins/Mutes/functions/unmuteUser.ts
index 0fa81dcb..72201eae 100644
--- a/backend/src/plugins/Mutes/functions/unmuteUser.ts
+++ b/backend/src/plugins/Mutes/functions/unmuteUser.ts
@@ -1,14 +1,14 @@
-import { GuildPluginData } from "knub";
-import { MutesPluginType, UnmuteResult } from "../types";
-import { CaseArgs } from "../../Cases/types";
-import { resolveUser, stripObjectToScalars, resolveMember } from "../../../utils";
-import { memberHasMutedRole } from "./memberHasMutedRole";
 import humanizeDuration from "humanize-duration";
-import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { GuildPluginData } from "knub";
 import { CaseTypes } from "../../../data/CaseTypes";
 import { LogType } from "../../../data/LogType";
-
+import { resolveMember, resolveUser, stripObjectToScalars } from "../../../utils";
 import { memberRolesLock } from "../../../utils/lockNameHelpers";
+import { CasesPlugin } from "../../Cases/CasesPlugin";
+import { CaseArgs } from "../../Cases/types";
+import { MutesPluginType, UnmuteResult } from "../types";
+import { memberHasMutedRole } from "./memberHasMutedRole";
+
 
 export async function unmuteUser(
   pluginData: GuildPluginData<MutesPluginType>,
diff --git a/backend/src/plugins/Mutes/types.ts b/backend/src/plugins/Mutes/types.ts
index 9fc62f46..c0afcc18 100644
--- a/backend/src/plugins/Mutes/types.ts
+++ b/backend/src/plugins/Mutes/types.ts
@@ -1,17 +1,17 @@
-import * as t from "io-ts";
-import { tNullable, UserNotificationMethod, UserNotificationResult } from "../../utils";
-import { Mute } from "../../data/entities/Mute";
-
-import { Case } from "../../data/entities/Case";
-import { BasePluginType, typedGuildCommand, typedGuildEventListener } from "knub";
-import { GuildLogs } from "../../data/GuildLogs";
-import { GuildCases } from "../../data/GuildCases";
-import { GuildArchives } from "../../data/GuildArchives";
-import { GuildMutes } from "../../data/GuildMutes";
-import { CaseArgs } from "../Cases/types";
-import Timeout = NodeJS.Timeout;
-import { EventEmitter } from "events";
 import { GuildMember } from "discord.js";
+import { EventEmitter } from "events";
+import * as t from "io-ts";
+import { BasePluginType, typedGuildCommand, typedGuildEventListener } from "knub";
+import { Case } from "../../data/entities/Case";
+import { Mute } from "../../data/entities/Mute";
+import { GuildArchives } from "../../data/GuildArchives";
+import { GuildCases } from "../../data/GuildCases";
+import { GuildLogs } from "../../data/GuildLogs";
+import { GuildMutes } from "../../data/GuildMutes";
+import { tNullable, UserNotificationMethod, UserNotificationResult } from "../../utils";
+import { CaseArgs } from "../Cases/types";
+
+import Timeout = NodeJS.Timeout;
 
 export const ConfigSchema = t.type({
   mute_role: tNullable(t.string),
diff --git a/backend/src/plugins/NameHistory/NameHistoryPlugin.ts b/backend/src/plugins/NameHistory/NameHistoryPlugin.ts
index af95ea7a..250cace5 100644
--- a/backend/src/plugins/NameHistory/NameHistoryPlugin.ts
+++ b/backend/src/plugins/NameHistory/NameHistoryPlugin.ts
@@ -1,11 +1,11 @@
 import { PluginOptions } from "knub";
-import { ConfigSchema, NameHistoryPluginType } from "./types";
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { GuildNicknameHistory } from "../../data/GuildNicknameHistory";
 import { UsernameHistory } from "../../data/UsernameHistory";
 import { Queue } from "../../Queue";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { NamesCmd } from "./commands/NamesCmd";
 import { ChannelJoinEvt, MessageCreateEvt } from "./events/UpdateNameEvts";
+import { ConfigSchema, NameHistoryPluginType } from "./types";
 
 const defaultOptions: PluginOptions<NameHistoryPluginType> = {
   config: {
diff --git a/backend/src/plugins/NameHistory/commands/NamesCmd.ts b/backend/src/plugins/NameHistory/commands/NamesCmd.ts
index 90cf80ee..a6f722c7 100644
--- a/backend/src/plugins/NameHistory/commands/NamesCmd.ts
+++ b/backend/src/plugins/NameHistory/commands/NamesCmd.ts
@@ -1,11 +1,11 @@
-import { nameHistoryCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { createChunkedMessage, disableCodeBlocks } from "knub/dist/helpers";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { NICKNAME_RETENTION_PERIOD } from "../../../data/cleanup/nicknames";
-import { DAYS } from "../../../utils";
 import { MAX_NICKNAME_ENTRIES_PER_USER } from "../../../data/GuildNicknameHistory";
 import { MAX_USERNAME_ENTRIES_PER_USER } from "../../../data/UsernameHistory";
 import { sendErrorMessage } from "../../../pluginUtils";
+import { DAYS } from "../../../utils";
+import { nameHistoryCmd } from "../types";
 
 export const NamesCmd = nameHistoryCmd({
   trigger: "names",
diff --git a/backend/src/plugins/Persist/PersistPlugin.ts b/backend/src/plugins/Persist/PersistPlugin.ts
index 25b74d11..ede40235 100644
--- a/backend/src/plugins/Persist/PersistPlugin.ts
+++ b/backend/src/plugins/Persist/PersistPlugin.ts
@@ -1,12 +1,12 @@
 import { PluginOptions } from "knub";
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { ConfigSchema, PersistPluginType } from "./types";
-import { GuildPersistedData } from "../../data/GuildPersistedData";
 import { GuildLogs } from "../../data/GuildLogs";
-import { StoreDataEvt } from "./events/StoreDataEvt";
-import { LoadDataEvt } from "./events/LoadDataEvt";
+import { GuildPersistedData } from "../../data/GuildPersistedData";
 import { trimPluginDescription } from "../../utils";
 import { LogsPlugin } from "../Logs/LogsPlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { LoadDataEvt } from "./events/LoadDataEvt";
+import { StoreDataEvt } from "./events/StoreDataEvt";
+import { ConfigSchema, PersistPluginType } from "./types";
 
 const defaultOptions: PluginOptions<PersistPluginType> = {
   config: {
diff --git a/backend/src/plugins/Persist/events/LoadDataEvt.ts b/backend/src/plugins/Persist/events/LoadDataEvt.ts
index 091c8fac..251c8164 100644
--- a/backend/src/plugins/Persist/events/LoadDataEvt.ts
+++ b/backend/src/plugins/Persist/events/LoadDataEvt.ts
@@ -1,14 +1,14 @@
-import { persistEvt } from "../types";
-
+import { GuildMemberEditData, Permissions } from "discord.js";
 import intersection from "lodash.intersection";
 import { LogType } from "../../../data/LogType";
 import { stripObjectToScalars } from "../../../utils";
-import { getMissingPermissions } from "../../../utils/getMissingPermissions";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
-import { missingPermissionError } from "../../../utils/missingPermissionError";
 import { canAssignRole } from "../../../utils/canAssignRole";
+import { getMissingPermissions } from "../../../utils/getMissingPermissions";
 import { memberRolesLock } from "../../../utils/lockNameHelpers";
-import { GuildMemberEditData, Permissions } from "discord.js";
+import { missingPermissionError } from "../../../utils/missingPermissionError";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { persistEvt } from "../types";
+
 
 const p = Permissions.FLAGS;
 
diff --git a/backend/src/plugins/Persist/events/StoreDataEvt.ts b/backend/src/plugins/Persist/events/StoreDataEvt.ts
index 0bc95404..2f43fac5 100644
--- a/backend/src/plugins/Persist/events/StoreDataEvt.ts
+++ b/backend/src/plugins/Persist/events/StoreDataEvt.ts
@@ -1,8 +1,8 @@
-import { persistEvt } from "../types";
-import { IPartialPersistData } from "../../../data/GuildPersistedData";
-
-import intersection from "lodash.intersection";
 import { GuildMember } from "discord.js";
+import intersection from "lodash.intersection";
+import { IPartialPersistData } from "../../../data/GuildPersistedData";
+import { persistEvt } from "../types";
+
 
 export const StoreDataEvt = persistEvt({
   event: "guildMemberRemove",
diff --git a/backend/src/plugins/Persist/types.ts b/backend/src/plugins/Persist/types.ts
index 2c360daf..8475f4be 100644
--- a/backend/src/plugins/Persist/types.ts
+++ b/backend/src/plugins/Persist/types.ts
@@ -1,7 +1,7 @@
 import * as t from "io-ts";
 import { BasePluginType, typedGuildEventListener } from "knub";
-import { GuildPersistedData } from "../../data/GuildPersistedData";
 import { GuildLogs } from "../../data/GuildLogs";
+import { GuildPersistedData } from "../../data/GuildPersistedData";
 
 export const ConfigSchema = t.type({
   persisted_roles: t.array(t.string),
diff --git a/backend/src/plugins/PingableRoles/PingableRolesPlugin.ts b/backend/src/plugins/PingableRoles/PingableRolesPlugin.ts
index de1fa15c..8b4f8e61 100644
--- a/backend/src/plugins/PingableRoles/PingableRolesPlugin.ts
+++ b/backend/src/plugins/PingableRoles/PingableRolesPlugin.ts
@@ -1,10 +1,10 @@
 import { PluginOptions } from "knub";
-import { ConfigSchema, PingableRolesPluginType } from "./types";
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { GuildPingableRoles } from "../../data/GuildPingableRoles";
-import { PingableRoleEnableCmd } from "./commands/PingableRoleEnableCmd";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { PingableRoleDisableCmd } from "./commands/PingableRoleDisableCmd";
+import { PingableRoleEnableCmd } from "./commands/PingableRoleEnableCmd";
 import { MessageCreateDisablePingableEvt, TypingEnablePingableEvt } from "./events/ChangePingableEvts";
+import { ConfigSchema, PingableRolesPluginType } from "./types";
 
 const defaultOptions: PluginOptions<PingableRolesPluginType> = {
   config: {
diff --git a/backend/src/plugins/PingableRoles/commands/PingableRoleDisableCmd.ts b/backend/src/plugins/PingableRoles/commands/PingableRoleDisableCmd.ts
index 02dc86cf..41709ffc 100644
--- a/backend/src/plugins/PingableRoles/commands/PingableRoleDisableCmd.ts
+++ b/backend/src/plugins/PingableRoles/commands/PingableRoleDisableCmd.ts
@@ -1,6 +1,6 @@
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { pingableRolesCmd } from "../types";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { pingableRolesCmd } from "../types";
 
 export const PingableRoleDisableCmd = pingableRolesCmd({
   trigger: ["pingable_role disable", "pingable_role d"],
diff --git a/backend/src/plugins/PingableRoles/commands/PingableRoleEnableCmd.ts b/backend/src/plugins/PingableRoles/commands/PingableRoleEnableCmd.ts
index 6cf6ef8d..30077e09 100644
--- a/backend/src/plugins/PingableRoles/commands/PingableRoleEnableCmd.ts
+++ b/backend/src/plugins/PingableRoles/commands/PingableRoleEnableCmd.ts
@@ -1,6 +1,6 @@
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { pingableRolesCmd } from "../types";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { pingableRolesCmd } from "../types";
 
 export const PingableRoleEnableCmd = pingableRolesCmd({
   trigger: "pingable_role",
diff --git a/backend/src/plugins/PingableRoles/events/ChangePingableEvts.ts b/backend/src/plugins/PingableRoles/events/ChangePingableEvts.ts
index 5efbba02..23c4627c 100644
--- a/backend/src/plugins/PingableRoles/events/ChangePingableEvts.ts
+++ b/backend/src/plugins/PingableRoles/events/ChangePingableEvts.ts
@@ -1,7 +1,7 @@
 import { pingableRolesEvt } from "../types";
-import { getPingableRolesForChannel } from "../utils/getPingableRolesForChannel";
-import { enablePingableRoles } from "../utils/enablePingableRoles";
 import { disablePingableRoles } from "../utils/disablePingableRoles";
+import { enablePingableRoles } from "../utils/enablePingableRoles";
+import { getPingableRolesForChannel } from "../utils/getPingableRolesForChannel";
 
 const TIMEOUT = 10 * 1000;
 
diff --git a/backend/src/plugins/PingableRoles/types.ts b/backend/src/plugins/PingableRoles/types.ts
index 84030afd..cc479a99 100644
--- a/backend/src/plugins/PingableRoles/types.ts
+++ b/backend/src/plugins/PingableRoles/types.ts
@@ -1,7 +1,7 @@
 import * as t from "io-ts";
 import { BasePluginType, typedGuildCommand, typedGuildEventListener } from "knub";
-import { GuildPingableRoles } from "../../data/GuildPingableRoles";
 import { PingableRole } from "../../data/entities/PingableRole";
+import { GuildPingableRoles } from "../../data/GuildPingableRoles";
 
 export const ConfigSchema = t.type({
   can_manage: t.boolean,
diff --git a/backend/src/plugins/PingableRoles/utils/disablePingableRoles.ts b/backend/src/plugins/PingableRoles/utils/disablePingableRoles.ts
index 21e96189..9d137828 100644
--- a/backend/src/plugins/PingableRoles/utils/disablePingableRoles.ts
+++ b/backend/src/plugins/PingableRoles/utils/disablePingableRoles.ts
@@ -1,5 +1,5 @@
-import { PingableRole } from "../../../data/entities/PingableRole";
 import { GuildPluginData } from "knub";
+import { PingableRole } from "../../../data/entities/PingableRole";
 import { PingableRolesPluginType } from "../types";
 
 export function disablePingableRoles(
diff --git a/backend/src/plugins/PingableRoles/utils/enablePingableRoles.ts b/backend/src/plugins/PingableRoles/utils/enablePingableRoles.ts
index 972495e3..65cc5eb6 100644
--- a/backend/src/plugins/PingableRoles/utils/enablePingableRoles.ts
+++ b/backend/src/plugins/PingableRoles/utils/enablePingableRoles.ts
@@ -1,5 +1,5 @@
-import { PingableRole } from "../../../data/entities/PingableRole";
 import { GuildPluginData } from "knub";
+import { PingableRole } from "../../../data/entities/PingableRole";
 import { PingableRolesPluginType } from "../types";
 
 export function enablePingableRoles(
diff --git a/backend/src/plugins/PingableRoles/utils/getPingableRolesForChannel.ts b/backend/src/plugins/PingableRoles/utils/getPingableRolesForChannel.ts
index 9b3f5819..96b6b228 100644
--- a/backend/src/plugins/PingableRoles/utils/getPingableRolesForChannel.ts
+++ b/backend/src/plugins/PingableRoles/utils/getPingableRolesForChannel.ts
@@ -1,5 +1,5 @@
-import { PingableRole } from "../../../data/entities/PingableRole";
 import { GuildPluginData } from "knub";
+import { PingableRole } from "../../../data/entities/PingableRole";
 import { PingableRolesPluginType } from "../types";
 
 export async function getPingableRolesForChannel(
diff --git a/backend/src/plugins/Post/PostPlugin.ts b/backend/src/plugins/Post/PostPlugin.ts
index 85ec4e12..493f8adb 100644
--- a/backend/src/plugins/Post/PostPlugin.ts
+++ b/backend/src/plugins/Post/PostPlugin.ts
@@ -1,18 +1,18 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { PluginOptions } from "knub";
-import { ConfigSchema, PostPluginType } from "./types";
+import { GuildLogs } from "../../data/GuildLogs";
 import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildScheduledPosts } from "../../data/GuildScheduledPosts";
-import { GuildLogs } from "../../data/GuildLogs";
-import { PostCmd } from "./commands/PostCmd";
-import { PostEmbedCmd } from "./commands/PostEmbedCmd";
+import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { EditCmd } from "./commands/EditCmd";
 import { EditEmbedCmd } from "./commands/EditEmbedCmd";
-import { ScheduledPostsShowCmd } from "./commands/ScheduledPostsShowCmd";
-import { ScheduledPostsListCmd } from "./commands/ScheduledPostsListCmd";
+import { PostCmd } from "./commands/PostCmd";
+import { PostEmbedCmd } from "./commands/PostEmbedCmd";
 import { ScheduledPostsDeleteCmd } from "./commands/SchedluedPostsDeleteCmd";
+import { ScheduledPostsListCmd } from "./commands/ScheduledPostsListCmd";
+import { ScheduledPostsShowCmd } from "./commands/ScheduledPostsShowCmd";
+import { ConfigSchema, PostPluginType } from "./types";
 import { scheduledPostLoop } from "./util/scheduledPostLoop";
-import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
 
 const defaultOptions: PluginOptions<PostPluginType> = {
   config: {
diff --git a/backend/src/plugins/Post/commands/EditCmd.ts b/backend/src/plugins/Post/commands/EditCmd.ts
index b0df9b4d..add44ec7 100644
--- a/backend/src/plugins/Post/commands/EditCmd.ts
+++ b/backend/src/plugins/Post/commands/EditCmd.ts
@@ -1,8 +1,8 @@
-import { postCmd } from "../types";
+import { TextChannel } from "discord.js";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { postCmd } from "../types";
 import { formatContent } from "../util/formatContent";
-import { TextChannel } from "discord.js";
 
 export const EditCmd = postCmd({
   trigger: "edit",
diff --git a/backend/src/plugins/Post/commands/EditEmbedCmd.ts b/backend/src/plugins/Post/commands/EditEmbedCmd.ts
index d832e8aa..83713814 100644
--- a/backend/src/plugins/Post/commands/EditEmbedCmd.ts
+++ b/backend/src/plugins/Post/commands/EditEmbedCmd.ts
@@ -1,12 +1,12 @@
-import { postCmd } from "../types";
+import { MessageEmbed, TextChannel } from "discord.js";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-
 import { trimLines } from "../../../utils";
-import { formatContent } from "../util/formatContent";
 import { parseColor } from "../../../utils/parseColor";
 import { rgbToInt } from "../../../utils/rgbToInt";
-import { MessageEmbed, TextChannel } from "discord.js";
+import { postCmd } from "../types";
+import { formatContent } from "../util/formatContent";
+
 
 const COLOR_MATCH_REGEX = /^#?([0-9a-f]{6})$/;
 
diff --git a/backend/src/plugins/Post/commands/PostCmd.ts b/backend/src/plugins/Post/commands/PostCmd.ts
index 25ae5a6b..4a1f3a4a 100644
--- a/backend/src/plugins/Post/commands/PostCmd.ts
+++ b/backend/src/plugins/Post/commands/PostCmd.ts
@@ -1,5 +1,5 @@
-import { postCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { postCmd } from "../types";
 import { actualPostCmd } from "../util/actualPostCmd";
 
 export const PostCmd = postCmd({
diff --git a/backend/src/plugins/Post/commands/PostEmbedCmd.ts b/backend/src/plugins/Post/commands/PostEmbedCmd.ts
index 344b9e17..d9d5ef6a 100644
--- a/backend/src/plugins/Post/commands/PostEmbedCmd.ts
+++ b/backend/src/plugins/Post/commands/PostEmbedCmd.ts
@@ -1,13 +1,13 @@
-import { postCmd } from "../types";
+import { MessageEmbedOptions } from "discord.js";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { actualPostCmd } from "../util/actualPostCmd";
 import { sendErrorMessage } from "../../../pluginUtils";
-
 import { isValidEmbed, trimLines } from "../../../utils";
-import { formatContent } from "../util/formatContent";
 import { parseColor } from "../../../utils/parseColor";
 import { rgbToInt } from "../../../utils/rgbToInt";
-import { MessageEmbed, MessageEmbedOptions } from "discord.js";
+import { postCmd } from "../types";
+import { actualPostCmd } from "../util/actualPostCmd";
+import { formatContent } from "../util/formatContent";
+
 
 export const PostEmbedCmd = postCmd({
   trigger: "post_embed",
diff --git a/backend/src/plugins/Post/commands/SchedluedPostsDeleteCmd.ts b/backend/src/plugins/Post/commands/SchedluedPostsDeleteCmd.ts
index 98810fc1..0cda8a72 100644
--- a/backend/src/plugins/Post/commands/SchedluedPostsDeleteCmd.ts
+++ b/backend/src/plugins/Post/commands/SchedluedPostsDeleteCmd.ts
@@ -1,7 +1,7 @@
-import { postCmd } from "../types";
-import { sorter } from "../../../utils";
-import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { sorter } from "../../../utils";
+import { postCmd } from "../types";
 
 export const ScheduledPostsDeleteCmd = postCmd({
   trigger: ["scheduled_posts delete", "scheduled_posts d"],
diff --git a/backend/src/plugins/Post/commands/ScheduledPostsListCmd.ts b/backend/src/plugins/Post/commands/ScheduledPostsListCmd.ts
index 3a3a3c8f..ea7a2b0f 100644
--- a/backend/src/plugins/Post/commands/ScheduledPostsListCmd.ts
+++ b/backend/src/plugins/Post/commands/ScheduledPostsListCmd.ts
@@ -1,15 +1,11 @@
-import { postCmd } from "../types";
-import {
-  trimLines,
-  sorter,
-  disableCodeBlocks,
-  deactivateMentions,
-  createChunkedMessage,
-  DBDateFormat,
-} from "../../../utils";
 import humanizeDuration from "humanize-duration";
 import moment from "moment-timezone";
+import {
+    createChunkedMessage,
+    DBDateFormat, deactivateMentions, disableCodeBlocks, sorter, trimLines
+} from "../../../utils";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
+import { postCmd } from "../types";
 
 const SCHEDULED_POST_PREVIEW_TEXT_LENGTH = 50;
 
diff --git a/backend/src/plugins/Post/commands/ScheduledPostsShowCmd.ts b/backend/src/plugins/Post/commands/ScheduledPostsShowCmd.ts
index a94b8033..c1a92510 100644
--- a/backend/src/plugins/Post/commands/ScheduledPostsShowCmd.ts
+++ b/backend/src/plugins/Post/commands/ScheduledPostsShowCmd.ts
@@ -1,9 +1,9 @@
-import { postCmd } from "../types";
-import { sorter } from "../../../utils";
-import { sendErrorMessage } from "../../../pluginUtils";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { postMessage } from "../util/postMessage";
 import { TextChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { sendErrorMessage } from "../../../pluginUtils";
+import { sorter } from "../../../utils";
+import { postCmd } from "../types";
+import { postMessage } from "../util/postMessage";
 
 export const ScheduledPostsShowCmd = postCmd({
   trigger: ["scheduled_posts", "scheduled_posts show"],
diff --git a/backend/src/plugins/Post/types.ts b/backend/src/plugins/Post/types.ts
index 12800a55..b54a23d2 100644
--- a/backend/src/plugins/Post/types.ts
+++ b/backend/src/plugins/Post/types.ts
@@ -1,8 +1,8 @@
 import * as t from "io-ts";
 import { BasePluginType, typedGuildCommand } from "knub";
+import { GuildLogs } from "../../data/GuildLogs";
 import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildScheduledPosts } from "../../data/GuildScheduledPosts";
-import { GuildLogs } from "../../data/GuildLogs";
 
 export const ConfigSchema = t.type({
   can_post: t.boolean,
diff --git a/backend/src/plugins/Post/util/actualPostCmd.ts b/backend/src/plugins/Post/util/actualPostCmd.ts
index c814ae0b..5c7d8f68 100644
--- a/backend/src/plugins/Post/util/actualPostCmd.ts
+++ b/backend/src/plugins/Post/util/actualPostCmd.ts
@@ -1,14 +1,14 @@
-import { StrictMessageContent, errorMessage, stripObjectToScalars, MINUTES, DBDateFormat } from "../../../utils";
+import { Channel, Message, TextChannel } from "discord.js";
+import humanizeDuration from "humanize-duration";
+import { GuildPluginData } from "knub";
 import moment from "moment-timezone";
 import { LogType } from "../../../data/LogType";
-import humanizeDuration from "humanize-duration";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { GuildPluginData } from "knub";
+import { DBDateFormat, errorMessage, MINUTES, StrictMessageContent, stripObjectToScalars } from "../../../utils";
+import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
 import { PostPluginType } from "../types";
 import { parseScheduleTime } from "./parseScheduleTime";
 import { postMessage } from "./postMessage";
-import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
-import { Message, Channel, TextChannel } from "discord.js";
 
 const MIN_REPEAT_TIME = 5 * MINUTES;
 const MAX_REPEAT_TIME = Math.pow(2, 32);
diff --git a/backend/src/plugins/Post/util/parseScheduleTime.ts b/backend/src/plugins/Post/util/parseScheduleTime.ts
index 26d115f2..5f5325e5 100644
--- a/backend/src/plugins/Post/util/parseScheduleTime.ts
+++ b/backend/src/plugins/Post/util/parseScheduleTime.ts
@@ -1,6 +1,6 @@
+import { GuildPluginData } from "knub";
 import moment, { Moment } from "moment-timezone";
 import { convertDelayStringToMS } from "../../../utils";
-import { GuildPluginData } from "knub";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
 
 // TODO: Extract out of the Post plugin, use everywhere with a date input
diff --git a/backend/src/plugins/Post/util/postMessage.ts b/backend/src/plugins/Post/util/postMessage.ts
index 292fc6b3..de7db105 100644
--- a/backend/src/plugins/Post/util/postMessage.ts
+++ b/backend/src/plugins/Post/util/postMessage.ts
@@ -1,10 +1,10 @@
-import { GuildPluginData } from "knub";
-import { PostPluginType } from "../types";
-
-import { downloadFile } from "../../../utils";
+import { Message, MessageAttachment, MessageOptions, TextChannel } from "discord.js";
 import fs from "fs";
+import { GuildPluginData } from "knub";
+import { downloadFile } from "../../../utils";
+import { PostPluginType } from "../types";
 import { formatContent } from "./formatContent";
-import { TextChannel, Message, MessageOptions, MessageAttachment } from "discord.js";
+
 
 const fsp = fs.promises;
 
diff --git a/backend/src/plugins/Post/util/scheduledPostLoop.ts b/backend/src/plugins/Post/util/scheduledPostLoop.ts
index d24f3ec6..fdaff973 100644
--- a/backend/src/plugins/Post/util/scheduledPostLoop.ts
+++ b/backend/src/plugins/Post/util/scheduledPostLoop.ts
@@ -1,12 +1,12 @@
-import { GuildPluginData } from "knub";
-import { PostPluginType } from "../types";
-import { logger } from "../../../logger";
-import { stripObjectToScalars, SECONDS, DBDateFormat } from "../../../utils";
-import { LogType } from "../../../data/LogType";
-import moment from "moment-timezone";
-
-import { postMessage } from "./postMessage";
 import { TextChannel, User } from "discord.js";
+import { GuildPluginData } from "knub";
+import moment from "moment-timezone";
+import { LogType } from "../../../data/LogType";
+import { logger } from "../../../logger";
+import { DBDateFormat, SECONDS, stripObjectToScalars } from "../../../utils";
+import { PostPluginType } from "../types";
+import { postMessage } from "./postMessage";
+
 
 const SCHEDULED_POST_CHECK_INTERVAL = 5 * SECONDS;
 
diff --git a/backend/src/plugins/ReactionRoles/ReactionRolesPlugin.ts b/backend/src/plugins/ReactionRoles/ReactionRolesPlugin.ts
index 7b7b55de..51817f58 100644
--- a/backend/src/plugins/ReactionRoles/ReactionRolesPlugin.ts
+++ b/backend/src/plugins/ReactionRoles/ReactionRolesPlugin.ts
@@ -1,17 +1,17 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { PluginOptions } from "knub";
-import { ConfigSchema, ReactionRolesPluginType } from "./types";
 import { GuildReactionRoles } from "../../data/GuildReactionRoles";
 import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { Queue } from "../../Queue";
-import { autoRefreshLoop } from "./util/autoRefreshLoop";
-import { InitReactionRolesCmd } from "./commands/InitReactionRolesCmd";
-import { RefreshReactionRolesCmd } from "./commands/RefreshReactionRolesCmd";
-import { ClearReactionRolesCmd } from "./commands/ClearReactionRolesCmd";
-import { AddReactionRoleEvt } from "./events/AddReactionRoleEvt";
 import { LogsPlugin } from "../Logs/LogsPlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { ClearReactionRolesCmd } from "./commands/ClearReactionRolesCmd";
+import { InitReactionRolesCmd } from "./commands/InitReactionRolesCmd";
 import { PostButtonRolesCmd } from "./commands/PostButtonRolesCmd";
+import { RefreshReactionRolesCmd } from "./commands/RefreshReactionRolesCmd";
+import { AddReactionRoleEvt } from "./events/AddReactionRoleEvt";
 import { ButtonInteractionEvt } from "./events/ButtonInteractionEvt";
+import { ConfigSchema, ReactionRolesPluginType } from "./types";
+import { autoRefreshLoop } from "./util/autoRefreshLoop";
 
 const MIN_AUTO_REFRESH = 1000 * 60 * 15; // 15min minimum, let's not abuse the API
 
diff --git a/backend/src/plugins/ReactionRoles/commands/ClearReactionRolesCmd.ts b/backend/src/plugins/ReactionRoles/commands/ClearReactionRolesCmd.ts
index 1b6bb197..a9ce7421 100644
--- a/backend/src/plugins/ReactionRoles/commands/ClearReactionRolesCmd.ts
+++ b/backend/src/plugins/ReactionRoles/commands/ClearReactionRolesCmd.ts
@@ -1,9 +1,9 @@
-import { reactionRolesCmd } from "../types";
+import { Message } from "discord.js";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-
 import { isDiscordRESTError } from "../../../utils";
-import { Message } from "discord.js";
+import { reactionRolesCmd } from "../types";
+
 
 export const ClearReactionRolesCmd = reactionRolesCmd({
   trigger: "reaction_roles clear",
diff --git a/backend/src/plugins/ReactionRoles/commands/InitReactionRolesCmd.ts b/backend/src/plugins/ReactionRoles/commands/InitReactionRolesCmd.ts
index 44ede36e..e233e7a9 100644
--- a/backend/src/plugins/ReactionRoles/commands/InitReactionRolesCmd.ts
+++ b/backend/src/plugins/ReactionRoles/commands/InitReactionRolesCmd.ts
@@ -1,9 +1,9 @@
-import { reactionRolesCmd, TReactionRolePair } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
 import { canUseEmoji, isDiscordRESTError, isValidEmoji, noop, trimPluginDescription } from "../../../utils";
-import { applyReactionRoleReactionsToMessage } from "../util/applyReactionRoleReactionsToMessage";
 import { canReadChannel } from "../../../utils/canReadChannel";
+import { reactionRolesCmd, TReactionRolePair } from "../types";
+import { applyReactionRoleReactionsToMessage } from "../util/applyReactionRoleReactionsToMessage";
 
 const CLEAR_ROLES_EMOJI = "❌";
 
diff --git a/backend/src/plugins/ReactionRoles/commands/PostButtonRolesCmd.ts b/backend/src/plugins/ReactionRoles/commands/PostButtonRolesCmd.ts
index 6bd19017..e5ccf683 100644
--- a/backend/src/plugins/ReactionRoles/commands/PostButtonRolesCmd.ts
+++ b/backend/src/plugins/ReactionRoles/commands/PostButtonRolesCmd.ts
@@ -1,7 +1,7 @@
-import { reactionRolesCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { MessageActionRow, MessageButton, TextChannel } from "discord.js";
 import { sendErrorMessage, sendSuccessMessage } from "src/pluginUtils";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { reactionRolesCmd } from "../types";
 import { ButtonMenuActions } from "../util/buttonMenuActions";
 
 export const PostButtonRolesCmd = reactionRolesCmd({
diff --git a/backend/src/plugins/ReactionRoles/commands/RefreshReactionRolesCmd.ts b/backend/src/plugins/ReactionRoles/commands/RefreshReactionRolesCmd.ts
index 7a93165b..3a55f6ba 100644
--- a/backend/src/plugins/ReactionRoles/commands/RefreshReactionRolesCmd.ts
+++ b/backend/src/plugins/ReactionRoles/commands/RefreshReactionRolesCmd.ts
@@ -1,6 +1,6 @@
-import { reactionRolesCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { reactionRolesCmd } from "../types";
 import { refreshReactionRoles } from "../util/refreshReactionRoles";
 
 export const RefreshReactionRolesCmd = reactionRolesCmd({
diff --git a/backend/src/plugins/ReactionRoles/events/AddReactionRoleEvt.ts b/backend/src/plugins/ReactionRoles/events/AddReactionRoleEvt.ts
index b996f68d..c4f125f0 100644
--- a/backend/src/plugins/ReactionRoles/events/AddReactionRoleEvt.ts
+++ b/backend/src/plugins/ReactionRoles/events/AddReactionRoleEvt.ts
@@ -1,10 +1,8 @@
-import { reactionRolesEvt } from "../types";
+import { Message } from "discord.js";
 import { noop, resolveMember, sleep } from "../../../utils";
+import { reactionRolesEvt } from "../types";
 import { addMemberPendingRoleChange } from "../util/addMemberPendingRoleChange";
 
-import { LogsPlugin } from "../../Logs/LogsPlugin";
-import { LogType } from "../../../data/LogType";
-import { Message } from "discord.js";
 
 const CLEAR_ROLES_EMOJI = "❌";
 
diff --git a/backend/src/plugins/ReactionRoles/events/ButtonInteractionEvt.ts b/backend/src/plugins/ReactionRoles/events/ButtonInteractionEvt.ts
index 51694c1f..7a79cc99 100644
--- a/backend/src/plugins/ReactionRoles/events/ButtonInteractionEvt.ts
+++ b/backend/src/plugins/ReactionRoles/events/ButtonInteractionEvt.ts
@@ -1,14 +1,10 @@
 import {
-  Interaction,
   MessageActionRow,
   MessageButton,
-  MessageComponentInteraction,
-  MessageComponentInteractionCollector,
-  TextChannel,
+  MessageComponentInteraction
 } from "discord.js";
 import { LogType } from "src/data/LogType";
 import { logger } from "src/logger";
-import { pluginInfo } from "src/plugins/Automod/info";
 import { LogsPlugin } from "src/plugins/Logs/LogsPlugin";
 import { reactionRolesEvt } from "../types";
 import { ButtonMenuActions } from "../util/buttonMenuActions";
diff --git a/backend/src/plugins/ReactionRoles/types.ts b/backend/src/plugins/ReactionRoles/types.ts
index d0b2e5d9..9d80c81e 100644
--- a/backend/src/plugins/ReactionRoles/types.ts
+++ b/backend/src/plugins/ReactionRoles/types.ts
@@ -1,7 +1,7 @@
 import * as t from "io-ts";
-import { BasePluginType, typedGuildEventListener, typedGuildCommand } from "knub";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { BasePluginType, typedGuildCommand, typedGuildEventListener } from "knub";
 import { GuildReactionRoles } from "../../data/GuildReactionRoles";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { Queue } from "../../Queue";
 
 const ButtonOpts = t.type({
diff --git a/backend/src/plugins/ReactionRoles/util/addMemberPendingRoleChange.ts b/backend/src/plugins/ReactionRoles/util/addMemberPendingRoleChange.ts
index 1bc5bf73..1e2f88ff 100644
--- a/backend/src/plugins/ReactionRoles/util/addMemberPendingRoleChange.ts
+++ b/backend/src/plugins/ReactionRoles/util/addMemberPendingRoleChange.ts
@@ -1,8 +1,8 @@
 import { GuildPluginData } from "knub";
-import { ReactionRolesPluginType, RoleChangeMode, PendingMemberRoleChanges } from "../types";
-import { resolveMember } from "../../../utils";
 import { logger } from "../../../logger";
+import { resolveMember } from "../../../utils";
 import { memberRolesLock } from "../../../utils/lockNameHelpers";
+import { PendingMemberRoleChanges, ReactionRolesPluginType, RoleChangeMode } from "../types";
 
 const ROLE_CHANGE_BATCH_DEBOUNCE_TIME = 1500;
 
diff --git a/backend/src/plugins/ReactionRoles/util/applyReactionRoleReactionsToMessage.ts b/backend/src/plugins/ReactionRoles/util/applyReactionRoleReactionsToMessage.ts
index b2d39707..3059ba5c 100644
--- a/backend/src/plugins/ReactionRoles/util/applyReactionRoleReactionsToMessage.ts
+++ b/backend/src/plugins/ReactionRoles/util/applyReactionRoleReactionsToMessage.ts
@@ -1,12 +1,11 @@
-import { GuildPluginData } from "knub";
-import { ReactionRolesPluginType } from "../types";
-import { ReactionRole } from "../../../data/entities/ReactionRole";
-
-import { isDiscordRESTError, sleep, isSnowflake } from "../../../utils";
-import { logger } from "../../../logger";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
-import { LogType } from "../../../data/LogType";
 import { TextChannel } from "discord.js";
+import { GuildPluginData } from "knub";
+import { ReactionRole } from "../../../data/entities/ReactionRole";
+import { LogType } from "../../../data/LogType";
+import { isDiscordRESTError, sleep } from "../../../utils";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { ReactionRolesPluginType } from "../types";
+
 
 const CLEAR_ROLES_EMOJI = "❌";
 
diff --git a/backend/src/plugins/ReactionRoles/util/refreshReactionRoles.ts b/backend/src/plugins/ReactionRoles/util/refreshReactionRoles.ts
index 3d85ac52..1cb3ff80 100644
--- a/backend/src/plugins/ReactionRoles/util/refreshReactionRoles.ts
+++ b/backend/src/plugins/ReactionRoles/util/refreshReactionRoles.ts
@@ -1,5 +1,5 @@
-import { ReactionRolesPluginType } from "../types";
 import { GuildPluginData } from "knub";
+import { ReactionRolesPluginType } from "../types";
 import { applyReactionRoleReactionsToMessage } from "./applyReactionRoleReactionsToMessage";
 
 export async function refreshReactionRoles(
diff --git a/backend/src/plugins/Reminders/RemindersPlugin.ts b/backend/src/plugins/Reminders/RemindersPlugin.ts
index 928a013f..e1a39417 100644
--- a/backend/src/plugins/Reminders/RemindersPlugin.ts
+++ b/backend/src/plugins/Reminders/RemindersPlugin.ts
@@ -1,12 +1,12 @@
 import { PluginOptions } from "knub";
-import { ConfigSchema, RemindersPluginType } from "./types";
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { GuildReminders } from "../../data/GuildReminders";
-import { postDueRemindersLoop } from "./utils/postDueRemindersLoop";
+import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { RemindCmd } from "./commands/RemindCmd";
 import { RemindersCmd } from "./commands/RemindersCmd";
 import { RemindersDeleteCmd } from "./commands/RemindersDeleteCmd";
-import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
+import { ConfigSchema, RemindersPluginType } from "./types";
+import { postDueRemindersLoop } from "./utils/postDueRemindersLoop";
 
 const defaultOptions: PluginOptions<RemindersPluginType> = {
   config: {
diff --git a/backend/src/plugins/Reminders/commands/RemindCmd.ts b/backend/src/plugins/Reminders/commands/RemindCmd.ts
index ad9cd355..7cce547f 100644
--- a/backend/src/plugins/Reminders/commands/RemindCmd.ts
+++ b/backend/src/plugins/Reminders/commands/RemindCmd.ts
@@ -1,10 +1,10 @@
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import moment from "moment-timezone";
-import { convertDelayStringToMS, messageLink } from "../../../utils";
 import humanizeDuration from "humanize-duration";
+import moment from "moment-timezone";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { remindersCmd } from "../types";
+import { convertDelayStringToMS, messageLink } from "../../../utils";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
+import { remindersCmd } from "../types";
 
 export const RemindCmd = remindersCmd({
   trigger: ["remind", "remindme", "reminder"],
diff --git a/backend/src/plugins/Reminders/commands/RemindersCmd.ts b/backend/src/plugins/Reminders/commands/RemindersCmd.ts
index 1a32533e..ca61ceb8 100644
--- a/backend/src/plugins/Reminders/commands/RemindersCmd.ts
+++ b/backend/src/plugins/Reminders/commands/RemindersCmd.ts
@@ -1,9 +1,9 @@
-import { remindersCmd } from "../types";
+import humanizeDuration from "humanize-duration";
+import moment from "moment-timezone";
 import { sendErrorMessage } from "../../../pluginUtils";
 import { createChunkedMessage, DBDateFormat, sorter } from "../../../utils";
-import moment from "moment-timezone";
-import humanizeDuration from "humanize-duration";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
+import { remindersCmd } from "../types";
 
 export const RemindersCmd = remindersCmd({
   trigger: "reminders",
diff --git a/backend/src/plugins/Reminders/commands/RemindersDeleteCmd.ts b/backend/src/plugins/Reminders/commands/RemindersDeleteCmd.ts
index 7b9f33c6..e9f97a66 100644
--- a/backend/src/plugins/Reminders/commands/RemindersDeleteCmd.ts
+++ b/backend/src/plugins/Reminders/commands/RemindersDeleteCmd.ts
@@ -1,7 +1,7 @@
-import { remindersCmd } from "../types";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
 import { sorter } from "../../../utils";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { remindersCmd } from "../types";
 
 export const RemindersDeleteCmd = remindersCmd({
   trigger: ["reminders delete", "reminders d"],
diff --git a/backend/src/plugins/Reminders/utils/postDueRemindersLoop.ts b/backend/src/plugins/Reminders/utils/postDueRemindersLoop.ts
index 7a5d447a..9678ce3b 100644
--- a/backend/src/plugins/Reminders/utils/postDueRemindersLoop.ts
+++ b/backend/src/plugins/Reminders/utils/postDueRemindersLoop.ts
@@ -1,10 +1,10 @@
-import { GuildPluginData } from "knub";
-import { RemindersPluginType } from "../types";
-import moment from "moment-timezone";
-import humanizeDuration from "humanize-duration";
-import { disableLinkPreviews } from "knub/dist/helpers";
-import { SECONDS } from "../../../utils";
 import { TextChannel } from "discord.js";
+import humanizeDuration from "humanize-duration";
+import { GuildPluginData } from "knub";
+import { disableLinkPreviews } from "knub/dist/helpers";
+import moment from "moment-timezone";
+import { SECONDS } from "../../../utils";
+import { RemindersPluginType } from "../types";
 
 const REMINDER_LOOP_TIME = 10 * SECONDS;
 const MAX_TRIES = 3;
diff --git a/backend/src/plugins/Roles/RolesPlugin.ts b/backend/src/plugins/Roles/RolesPlugin.ts
index bcb8fb60..1b7dcfff 100644
--- a/backend/src/plugins/Roles/RolesPlugin.ts
+++ b/backend/src/plugins/Roles/RolesPlugin.ts
@@ -1,12 +1,12 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { PluginOptions } from "knub";
-import { ConfigSchema, RolesPluginType } from "./types";
 import { GuildLogs } from "../../data/GuildLogs";
+import { trimPluginDescription } from "../../utils";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { AddRoleCmd } from "./commands/AddRoleCmd";
-import { RemoveRoleCmd } from "./commands/RemoveRoleCmd";
 import { MassAddRoleCmd } from "./commands/MassAddRoleCmd";
 import { MassRemoveRoleCmd } from "./commands/MassRemoveRoleCmd";
-import { trimPluginDescription } from "../../utils";
+import { RemoveRoleCmd } from "./commands/RemoveRoleCmd";
+import { ConfigSchema, RolesPluginType } from "./types";
 
 const defaultOptions: PluginOptions<RolesPluginType> = {
   config: {
diff --git a/backend/src/plugins/Roles/commands/AddRoleCmd.ts b/backend/src/plugins/Roles/commands/AddRoleCmd.ts
index cc093d3e..b5f6619d 100644
--- a/backend/src/plugins/Roles/commands/AddRoleCmd.ts
+++ b/backend/src/plugins/Roles/commands/AddRoleCmd.ts
@@ -1,9 +1,9 @@
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { sendErrorMessage, sendSuccessMessage, canActOn } from "../../../pluginUtils";
-import { rolesCmd } from "../types";
-import { resolveRoleId, stripObjectToScalars, verboseUserMention } from "../../../utils";
-import { LogType } from "../../../data/LogType";
 import { GuildChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { LogType } from "../../../data/LogType";
+import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { resolveRoleId, stripObjectToScalars, verboseUserMention } from "../../../utils";
+import { rolesCmd } from "../types";
 
 export const AddRoleCmd = rolesCmd({
   trigger: "addrole",
diff --git a/backend/src/plugins/Roles/commands/MassAddRoleCmd.ts b/backend/src/plugins/Roles/commands/MassAddRoleCmd.ts
index f2f0532d..0457d344 100644
--- a/backend/src/plugins/Roles/commands/MassAddRoleCmd.ts
+++ b/backend/src/plugins/Roles/commands/MassAddRoleCmd.ts
@@ -1,10 +1,10 @@
+import { GuildMember } from "discord.js";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { sendErrorMessage, canActOn } from "../../../pluginUtils";
-import { rolesCmd } from "../types";
-import { resolveMember, resolveRoleId, stripObjectToScalars, successMessage } from "../../../utils";
 import { LogType } from "../../../data/LogType";
 import { logger } from "../../../logger";
-import { GuildMember } from "discord.js";
+import { canActOn, sendErrorMessage } from "../../../pluginUtils";
+import { resolveMember, resolveRoleId, stripObjectToScalars, successMessage } from "../../../utils";
+import { rolesCmd } from "../types";
 
 export const MassAddRoleCmd = rolesCmd({
   trigger: "massaddrole",
diff --git a/backend/src/plugins/Roles/commands/MassRemoveRoleCmd.ts b/backend/src/plugins/Roles/commands/MassRemoveRoleCmd.ts
index 42240164..ece59402 100644
--- a/backend/src/plugins/Roles/commands/MassRemoveRoleCmd.ts
+++ b/backend/src/plugins/Roles/commands/MassRemoveRoleCmd.ts
@@ -1,10 +1,10 @@
+import { GuildMember } from "discord.js";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { sendErrorMessage, canActOn } from "../../../pluginUtils";
-import { rolesCmd } from "../types";
-import { resolveMember, stripObjectToScalars, successMessage, resolveRoleId } from "../../../utils";
 import { LogType } from "../../../data/LogType";
 import { logger } from "../../../logger";
-import { GuildMember } from "discord.js";
+import { canActOn, sendErrorMessage } from "../../../pluginUtils";
+import { resolveMember, resolveRoleId, stripObjectToScalars, successMessage } from "../../../utils";
+import { rolesCmd } from "../types";
 
 export const MassRemoveRoleCmd = rolesCmd({
   trigger: "massremoverole",
diff --git a/backend/src/plugins/Roles/commands/RemoveRoleCmd.ts b/backend/src/plugins/Roles/commands/RemoveRoleCmd.ts
index b160bff3..eb6bd714 100644
--- a/backend/src/plugins/Roles/commands/RemoveRoleCmd.ts
+++ b/backend/src/plugins/Roles/commands/RemoveRoleCmd.ts
@@ -1,10 +1,10 @@
+import { GuildChannel } from "discord.js";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { sendErrorMessage, sendSuccessMessage, canActOn } from "../../../pluginUtils";
+import { LogType } from "../../../data/LogType";
+import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { resolveRoleId, stripObjectToScalars, verboseUserMention } from "../../../utils";
 import { rolesCmd } from "../types";
 
-import { LogType } from "../../../data/LogType";
-import { stripObjectToScalars, verboseUserMention, resolveRoleId } from "../../../utils";
-import { GuildChannel } from "discord.js";
 
 export const RemoveRoleCmd = rolesCmd({
   trigger: "removerole",
diff --git a/backend/src/plugins/SelfGrantableRoles/SelfGrantableRolesPlugin.ts b/backend/src/plugins/SelfGrantableRoles/SelfGrantableRolesPlugin.ts
index b73488fd..981776fc 100644
--- a/backend/src/plugins/SelfGrantableRoles/SelfGrantableRolesPlugin.ts
+++ b/backend/src/plugins/SelfGrantableRoles/SelfGrantableRolesPlugin.ts
@@ -1,10 +1,10 @@
 import { CooldownManager, PluginOptions } from "knub";
-import { SelfGrantableRolesPluginType, ConfigSchema, defaultSelfGrantableRoleEntry } from "./types";
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { trimPluginDescription } from "../../utils";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { RoleAddCmd } from "./commands/RoleAddCmd";
-import { RoleRemoveCmd } from "./commands/RoleRemoveCmd";
 import { RoleHelpCmd } from "./commands/RoleHelpCmd";
+import { RoleRemoveCmd } from "./commands/RoleRemoveCmd";
+import { ConfigSchema, defaultSelfGrantableRoleEntry, SelfGrantableRolesPluginType } from "./types";
 
 const defaultOptions: PluginOptions<SelfGrantableRolesPluginType> = {
   config: {
diff --git a/backend/src/plugins/SelfGrantableRoles/commands/RoleAddCmd.ts b/backend/src/plugins/SelfGrantableRoles/commands/RoleAddCmd.ts
index cf3d9c84..d5f14b8a 100644
--- a/backend/src/plugins/SelfGrantableRoles/commands/RoleAddCmd.ts
+++ b/backend/src/plugins/SelfGrantableRoles/commands/RoleAddCmd.ts
@@ -1,13 +1,13 @@
-import { selfGrantableRolesCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { getApplyingEntries } from "../util/getApplyingEntries";
-import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { splitRoleNames } from "../util/splitRoleNames";
-import { normalizeRoleNames } from "../util/normalizeRoleNames";
-import { findMatchingRoles } from "../util/findMatchingRoles";
-
-import { memberRolesLock } from "../../../utils/lockNameHelpers";
 import { Role } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { memberRolesLock } from "../../../utils/lockNameHelpers";
+import { selfGrantableRolesCmd } from "../types";
+import { findMatchingRoles } from "../util/findMatchingRoles";
+import { getApplyingEntries } from "../util/getApplyingEntries";
+import { normalizeRoleNames } from "../util/normalizeRoleNames";
+import { splitRoleNames } from "../util/splitRoleNames";
+
 
 export const RoleAddCmd = selfGrantableRolesCmd({
   trigger: ["role", "role add"],
diff --git a/backend/src/plugins/SelfGrantableRoles/commands/RoleHelpCmd.ts b/backend/src/plugins/SelfGrantableRoles/commands/RoleHelpCmd.ts
index 2969ac0b..438abbd1 100644
--- a/backend/src/plugins/SelfGrantableRoles/commands/RoleHelpCmd.ts
+++ b/backend/src/plugins/SelfGrantableRoles/commands/RoleHelpCmd.ts
@@ -1,5 +1,5 @@
-import { selfGrantableRolesCmd } from "../types";
 import { asSingleLine, trimLines } from "../../../utils";
+import { selfGrantableRolesCmd } from "../types";
 import { getApplyingEntries } from "../util/getApplyingEntries";
 
 export const RoleHelpCmd = selfGrantableRolesCmd({
diff --git a/backend/src/plugins/SelfGrantableRoles/commands/RoleRemoveCmd.ts b/backend/src/plugins/SelfGrantableRoles/commands/RoleRemoveCmd.ts
index 5d41e639..b1413050 100644
--- a/backend/src/plugins/SelfGrantableRoles/commands/RoleRemoveCmd.ts
+++ b/backend/src/plugins/SelfGrantableRoles/commands/RoleRemoveCmd.ts
@@ -1,11 +1,11 @@
-import { selfGrantableRolesCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { getApplyingEntries } from "../util/getApplyingEntries";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { splitRoleNames } from "../util/splitRoleNames";
-import { normalizeRoleNames } from "../util/normalizeRoleNames";
-import { findMatchingRoles } from "../util/findMatchingRoles";
 import { memberRolesLock } from "../../../utils/lockNameHelpers";
+import { selfGrantableRolesCmd } from "../types";
+import { findMatchingRoles } from "../util/findMatchingRoles";
+import { getApplyingEntries } from "../util/getApplyingEntries";
+import { normalizeRoleNames } from "../util/normalizeRoleNames";
+import { splitRoleNames } from "../util/splitRoleNames";
 
 export const RoleRemoveCmd = selfGrantableRolesCmd({
   trigger: "role remove",
diff --git a/backend/src/plugins/SelfGrantableRoles/types.ts b/backend/src/plugins/SelfGrantableRoles/types.ts
index 8423acd4..dbebcf9f 100644
--- a/backend/src/plugins/SelfGrantableRoles/types.ts
+++ b/backend/src/plugins/SelfGrantableRoles/types.ts
@@ -1,5 +1,5 @@
 import * as t from "io-ts";
-import { BasePluginType, typedGuildCommand, CooldownManager } from "knub";
+import { BasePluginType, CooldownManager, typedGuildCommand } from "knub";
 
 const RoleMap = t.record(t.string, t.array(t.string));
 
diff --git a/backend/src/plugins/SelfGrantableRoles/util/getApplyingEntries.ts b/backend/src/plugins/SelfGrantableRoles/util/getApplyingEntries.ts
index 41e8b87e..65495be4 100644
--- a/backend/src/plugins/SelfGrantableRoles/util/getApplyingEntries.ts
+++ b/backend/src/plugins/SelfGrantableRoles/util/getApplyingEntries.ts
@@ -1,5 +1,5 @@
-import { TSelfGrantableRoleEntry, SelfGrantableRolesPluginType } from "../types";
 import { GuildPluginData } from "knub";
+import { SelfGrantableRolesPluginType, TSelfGrantableRoleEntry } from "../types";
 
 export async function getApplyingEntries(
   pluginData: GuildPluginData<SelfGrantableRolesPluginType>,
diff --git a/backend/src/plugins/Slowmode/SlowmodePlugin.ts b/backend/src/plugins/Slowmode/SlowmodePlugin.ts
index 79190820..5dda25c9 100644
--- a/backend/src/plugins/Slowmode/SlowmodePlugin.ts
+++ b/backend/src/plugins/Slowmode/SlowmodePlugin.ts
@@ -1,18 +1,18 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { PluginOptions } from "knub";
-import { ConfigSchema, SlowmodePluginType } from "./types";
-import { GuildSlowmodes } from "../../data/GuildSlowmodes";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildLogs } from "../../data/GuildLogs";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { GuildSlowmodes } from "../../data/GuildSlowmodes";
 import { SECONDS } from "../../utils";
-import { onMessageCreate } from "./util/onMessageCreate";
-import { clearExpiredSlowmodes } from "./util/clearExpiredSlowmodes";
-import { SlowmodeDisableCmd } from "./commands/SlowmodeDisableCmd";
-import { SlowmodeClearCmd } from "./commands/SlowmodeClearCmd";
-import { SlowmodeListCmd } from "./commands/SlowmodeListCmd";
-import { SlowmodeGetCmd } from "./commands/SlowmodeGetCmd";
-import { SlowmodeSetCmd } from "./commands/SlowmodeSetCmd";
 import { LogsPlugin } from "../Logs/LogsPlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { SlowmodeClearCmd } from "./commands/SlowmodeClearCmd";
+import { SlowmodeDisableCmd } from "./commands/SlowmodeDisableCmd";
+import { SlowmodeGetCmd } from "./commands/SlowmodeGetCmd";
+import { SlowmodeListCmd } from "./commands/SlowmodeListCmd";
+import { SlowmodeSetCmd } from "./commands/SlowmodeSetCmd";
+import { ConfigSchema, SlowmodePluginType } from "./types";
+import { clearExpiredSlowmodes } from "./util/clearExpiredSlowmodes";
+import { onMessageCreate } from "./util/onMessageCreate";
 
 const BOT_SLOWMODE_CLEAR_INTERVAL = 60 * SECONDS;
 
diff --git a/backend/src/plugins/Slowmode/commands/SlowmodeClearCmd.ts b/backend/src/plugins/Slowmode/commands/SlowmodeClearCmd.ts
index f8da441e..0047861b 100644
--- a/backend/src/plugins/Slowmode/commands/SlowmodeClearCmd.ts
+++ b/backend/src/plugins/Slowmode/commands/SlowmodeClearCmd.ts
@@ -1,11 +1,11 @@
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { slowmodeCmd } from "../types";
-import { clearBotSlowmodeFromUserId } from "../util/clearBotSlowmodeFromUserId";
 import { asSingleLine, disableInlineCode } from "../../../utils";
 import { getMissingChannelPermissions } from "../../../utils/getMissingChannelPermissions";
-import { BOT_SLOWMODE_CLEAR_PERMISSIONS } from "../requiredPermissions";
 import { missingPermissionError } from "../../../utils/missingPermissionError";
+import { BOT_SLOWMODE_CLEAR_PERMISSIONS } from "../requiredPermissions";
+import { slowmodeCmd } from "../types";
+import { clearBotSlowmodeFromUserId } from "../util/clearBotSlowmodeFromUserId";
 
 export const SlowmodeClearCmd = slowmodeCmd({
   trigger: ["slowmode clear", "slowmode c"],
diff --git a/backend/src/plugins/Slowmode/commands/SlowmodeGetCmd.ts b/backend/src/plugins/Slowmode/commands/SlowmodeGetCmd.ts
index 276e28e9..e4d5b579 100644
--- a/backend/src/plugins/Slowmode/commands/SlowmodeGetCmd.ts
+++ b/backend/src/plugins/Slowmode/commands/SlowmodeGetCmd.ts
@@ -1,8 +1,8 @@
+import { TextChannel } from "discord.js";
+import humanizeDuration from "humanize-duration";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { slowmodeCmd } from "../types";
 
-import humanizeDuration from "humanize-duration";
-import { TextChannel } from "discord.js";
 
 export const SlowmodeGetCmd = slowmodeCmd({
   trigger: "slowmode",
diff --git a/backend/src/plugins/Slowmode/commands/SlowmodeListCmd.ts b/backend/src/plugins/Slowmode/commands/SlowmodeListCmd.ts
index 0ea52e9f..9cad2a32 100644
--- a/backend/src/plugins/Slowmode/commands/SlowmodeListCmd.ts
+++ b/backend/src/plugins/Slowmode/commands/SlowmodeListCmd.ts
@@ -1,9 +1,9 @@
-import { slowmodeCmd } from "../types";
-
+import { GuildChannel, TextChannel } from "discord.js";
+import humanizeDuration from "humanize-duration";
 import { createChunkedMessage } from "knub/dist/helpers";
 import { errorMessage } from "../../../utils";
-import humanizeDuration from "humanize-duration";
-import { GuildChannel, TextChannel } from "discord.js";
+import { slowmodeCmd } from "../types";
+
 
 export const SlowmodeListCmd = slowmodeCmd({
   trigger: ["slowmode list", "slowmode l", "slowmodes"],
diff --git a/backend/src/plugins/Slowmode/commands/SlowmodeSetCmd.ts b/backend/src/plugins/Slowmode/commands/SlowmodeSetCmd.ts
index 633e77c6..48005ab6 100644
--- a/backend/src/plugins/Slowmode/commands/SlowmodeSetCmd.ts
+++ b/backend/src/plugins/Slowmode/commands/SlowmodeSetCmd.ts
@@ -1,15 +1,15 @@
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { slowmodeCmd } from "../types";
-
+import { Permissions, TextChannel } from "discord.js";
 import humanizeDuration from "humanize-duration";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
 import { asSingleLine, DAYS, disableInlineCode, HOURS, MINUTES } from "../../../utils";
-import { disableBotSlowmodeForChannel } from "../util/disableBotSlowmodeForChannel";
-import { actualDisableSlowmodeCmd } from "../util/actualDisableSlowmodeCmd";
 import { getMissingPermissions } from "../../../utils/getMissingPermissions";
 import { missingPermissionError } from "../../../utils/missingPermissionError";
 import { BOT_SLOWMODE_PERMISSIONS, NATIVE_SLOWMODE_PERMISSIONS } from "../requiredPermissions";
-import { Permissions, TextChannel } from "discord.js";
+import { slowmodeCmd } from "../types";
+import { actualDisableSlowmodeCmd } from "../util/actualDisableSlowmodeCmd";
+import { disableBotSlowmodeForChannel } from "../util/disableBotSlowmodeForChannel";
+
 
 const MAX_NATIVE_SLOWMODE = 6 * HOURS; // 6 hours
 const MAX_BOT_SLOWMODE = DAYS * 365 * 100; // 100 years
diff --git a/backend/src/plugins/Slowmode/types.ts b/backend/src/plugins/Slowmode/types.ts
index bfd71e4c..3c3824da 100644
--- a/backend/src/plugins/Slowmode/types.ts
+++ b/backend/src/plugins/Slowmode/types.ts
@@ -1,8 +1,8 @@
 import * as t from "io-ts";
 import { BasePluginType, typedGuildCommand, typedGuildEventListener } from "knub";
-import { GuildSlowmodes } from "../../data/GuildSlowmodes";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildLogs } from "../../data/GuildLogs";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { GuildSlowmodes } from "../../data/GuildSlowmodes";
 
 export const ConfigSchema = t.type({
   use_native_slowmode: t.boolean,
diff --git a/backend/src/plugins/Slowmode/util/actualDisableSlowmodeCmd.ts b/backend/src/plugins/Slowmode/util/actualDisableSlowmodeCmd.ts
index 4d02cf09..09565bae 100644
--- a/backend/src/plugins/Slowmode/util/actualDisableSlowmodeCmd.ts
+++ b/backend/src/plugins/Slowmode/util/actualDisableSlowmodeCmd.ts
@@ -1,10 +1,10 @@
+import { Message, TextChannel } from "discord.js";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { disableBotSlowmodeForChannel } from "./disableBotSlowmodeForChannel";
 import { noop } from "../../../utils";
 import { getMissingChannelPermissions } from "../../../utils/getMissingChannelPermissions";
-import { BOT_SLOWMODE_DISABLE_PERMISSIONS } from "../requiredPermissions";
 import { missingPermissionError } from "../../../utils/missingPermissionError";
-import { Message, TextChannel } from "discord.js";
+import { BOT_SLOWMODE_DISABLE_PERMISSIONS } from "../requiredPermissions";
+import { disableBotSlowmodeForChannel } from "./disableBotSlowmodeForChannel";
 
 export async function actualDisableSlowmodeCmd(msg: Message, args, pluginData) {
   const botSlowmode = await pluginData.state.slowmodes.getChannelSlowmode(args.channel.id);
diff --git a/backend/src/plugins/Slowmode/util/applyBotSlowmodeToUserId.ts b/backend/src/plugins/Slowmode/util/applyBotSlowmodeToUserId.ts
index 02f465ec..0490be02 100644
--- a/backend/src/plugins/Slowmode/util/applyBotSlowmodeToUserId.ts
+++ b/backend/src/plugins/Slowmode/util/applyBotSlowmodeToUserId.ts
@@ -1,10 +1,10 @@
-import { SlowmodePluginType } from "../types";
+import { GuildChannel, Permissions, TextChannel } from "discord.js";
 import { GuildPluginData } from "knub";
-
-import { isDiscordRESTError, stripObjectToScalars, UnknownUser } from "../../../utils";
 import { LogType } from "../../../data/LogType";
 import { logger } from "../../../logger";
-import { GuildChannel, TextChannel, Permissions } from "discord.js";
+import { isDiscordRESTError, stripObjectToScalars, UnknownUser } from "../../../utils";
+import { SlowmodePluginType } from "../types";
+
 
 export async function applyBotSlowmodeToUserId(
   pluginData: GuildPluginData<SlowmodePluginType>,
diff --git a/backend/src/plugins/Slowmode/util/clearExpiredSlowmodes.ts b/backend/src/plugins/Slowmode/util/clearExpiredSlowmodes.ts
index 66357446..a405b9b2 100644
--- a/backend/src/plugins/Slowmode/util/clearExpiredSlowmodes.ts
+++ b/backend/src/plugins/Slowmode/util/clearExpiredSlowmodes.ts
@@ -1,11 +1,11 @@
+import { GuildChannel, TextChannel } from "discord.js";
 import { GuildPluginData } from "knub";
-import { SlowmodePluginType } from "../types";
 import { LogType } from "../../../data/LogType";
 import { logger } from "../../../logger";
-
 import { stripObjectToScalars, UnknownUser } from "../../../utils";
+import { SlowmodePluginType } from "../types";
 import { clearBotSlowmodeFromUserId } from "./clearBotSlowmodeFromUserId";
-import { GuildChannel, TextChannel } from "discord.js";
+
 
 export async function clearExpiredSlowmodes(pluginData: GuildPluginData<SlowmodePluginType>) {
   const expiredSlowmodeUsers = await pluginData.state.slowmodes.getExpiredSlowmodeUsers();
diff --git a/backend/src/plugins/Slowmode/util/onMessageCreate.ts b/backend/src/plugins/Slowmode/util/onMessageCreate.ts
index 035337f5..aa2a1db3 100644
--- a/backend/src/plugins/Slowmode/util/onMessageCreate.ts
+++ b/backend/src/plugins/Slowmode/util/onMessageCreate.ts
@@ -1,17 +1,17 @@
-import { SavedMessage } from "../../../data/entities/SavedMessage";
-
-import { GuildPluginData } from "knub";
-import { SlowmodePluginType } from "../types";
-import { resolveMember } from "../../../utils";
-import { applyBotSlowmodeToUserId } from "./applyBotSlowmodeToUserId";
-import { hasPermission } from "../../../pluginUtils";
-import { getMissingChannelPermissions } from "../../../utils/getMissingChannelPermissions";
-import { BOT_SLOWMODE_PERMISSIONS } from "../requiredPermissions";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
-import { LogType } from "../../../data/LogType";
-import { missingPermissionError } from "../../../utils/missingPermissionError";
-import { messageLock } from "../../../utils/lockNameHelpers";
 import { TextChannel } from "discord.js";
+import { GuildPluginData } from "knub";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { LogType } from "../../../data/LogType";
+import { hasPermission } from "../../../pluginUtils";
+import { resolveMember } from "../../../utils";
+import { getMissingChannelPermissions } from "../../../utils/getMissingChannelPermissions";
+import { messageLock } from "../../../utils/lockNameHelpers";
+import { missingPermissionError } from "../../../utils/missingPermissionError";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { BOT_SLOWMODE_PERMISSIONS } from "../requiredPermissions";
+import { SlowmodePluginType } from "../types";
+import { applyBotSlowmodeToUserId } from "./applyBotSlowmodeToUserId";
+
 
 export async function onMessageCreate(pluginData: GuildPluginData<SlowmodePluginType>, msg: SavedMessage) {
   if (msg.is_bot) return;
diff --git a/backend/src/plugins/Spam/SpamPlugin.ts b/backend/src/plugins/Spam/SpamPlugin.ts
index 5bad893d..ddf45a0b 100644
--- a/backend/src/plugins/Spam/SpamPlugin.ts
+++ b/backend/src/plugins/Spam/SpamPlugin.ts
@@ -1,15 +1,15 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { PluginOptions } from "knub";
-import { ConfigSchema, SpamPluginType } from "./types";
-import { GuildLogs } from "../../data/GuildLogs";
 import { GuildArchives } from "../../data/GuildArchives";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { GuildLogs } from "../../data/GuildLogs";
 import { GuildMutes } from "../../data/GuildMutes";
-import { onMessageCreate } from "./util/onMessageCreate";
-import { clearOldRecentActions } from "./util/clearOldRecentActions";
-import { SpamVoiceStateUpdateEvt } from "./events/SpamVoiceEvt";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { trimPluginDescription } from "../../utils";
 import { LogsPlugin } from "../Logs/LogsPlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { SpamVoiceStateUpdateEvt } from "./events/SpamVoiceEvt";
+import { ConfigSchema, SpamPluginType } from "./types";
+import { clearOldRecentActions } from "./util/clearOldRecentActions";
+import { onMessageCreate } from "./util/onMessageCreate";
 
 const defaultOptions: PluginOptions<SpamPluginType> = {
   config: {
diff --git a/backend/src/plugins/Spam/events/SpamVoiceEvt.ts b/backend/src/plugins/Spam/events/SpamVoiceEvt.ts
index 2b553e06..7e862325 100644
--- a/backend/src/plugins/Spam/events/SpamVoiceEvt.ts
+++ b/backend/src/plugins/Spam/events/SpamVoiceEvt.ts
@@ -1,4 +1,4 @@
-import { spamEvt, RecentActionType } from "../types";
+import { RecentActionType, spamEvt } from "../types";
 import { logAndDetectOtherSpam } from "../util/logAndDetectOtherSpam";
 
 export const SpamVoiceStateUpdateEvt = spamEvt({
diff --git a/backend/src/plugins/Spam/types.ts b/backend/src/plugins/Spam/types.ts
index 9d4e0567..68697f02 100644
--- a/backend/src/plugins/Spam/types.ts
+++ b/backend/src/plugins/Spam/types.ts
@@ -1,10 +1,10 @@
 import * as t from "io-ts";
 import { BasePluginType, typedGuildEventListener } from "knub";
-import { tNullable } from "../../utils";
-import { GuildLogs } from "../../data/GuildLogs";
 import { GuildArchives } from "../../data/GuildArchives";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { GuildLogs } from "../../data/GuildLogs";
 import { GuildMutes } from "../../data/GuildMutes";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { tNullable } from "../../utils";
 
 const BaseSingleSpamConfig = t.type({
   interval: t.number,
diff --git a/backend/src/plugins/Spam/util/addRecentAction.ts b/backend/src/plugins/Spam/util/addRecentAction.ts
index ec9e1261..418702a8 100644
--- a/backend/src/plugins/Spam/util/addRecentAction.ts
+++ b/backend/src/plugins/Spam/util/addRecentAction.ts
@@ -1,5 +1,5 @@
 import { GuildPluginData } from "knub";
-import { SpamPluginType, RecentActionType } from "../types";
+import { RecentActionType, SpamPluginType } from "../types";
 
 export function addRecentAction(
   pluginData: GuildPluginData<SpamPluginType>,
diff --git a/backend/src/plugins/Spam/util/clearRecentUserActions.ts b/backend/src/plugins/Spam/util/clearRecentUserActions.ts
index 839ac107..cfaf7b53 100644
--- a/backend/src/plugins/Spam/util/clearRecentUserActions.ts
+++ b/backend/src/plugins/Spam/util/clearRecentUserActions.ts
@@ -1,5 +1,5 @@
-import { RecentActionType, SpamPluginType } from "../types";
 import { GuildPluginData } from "knub";
+import { RecentActionType, SpamPluginType } from "../types";
 
 export function clearRecentUserActions(
   pluginData: GuildPluginData<SpamPluginType>,
diff --git a/backend/src/plugins/Spam/util/getRecentActionCount.ts b/backend/src/plugins/Spam/util/getRecentActionCount.ts
index c7ae5c55..5b0b0aef 100644
--- a/backend/src/plugins/Spam/util/getRecentActionCount.ts
+++ b/backend/src/plugins/Spam/util/getRecentActionCount.ts
@@ -1,5 +1,5 @@
-import { RecentActionType, SpamPluginType } from "../types";
 import { GuildPluginData } from "knub";
+import { RecentActionType, SpamPluginType } from "../types";
 
 export function getRecentActionCount(
   pluginData: GuildPluginData<SpamPluginType>,
diff --git a/backend/src/plugins/Spam/util/getRecentActions.ts b/backend/src/plugins/Spam/util/getRecentActions.ts
index 765a1300..ff3f31ac 100644
--- a/backend/src/plugins/Spam/util/getRecentActions.ts
+++ b/backend/src/plugins/Spam/util/getRecentActions.ts
@@ -1,5 +1,5 @@
-import { RecentActionType, SpamPluginType } from "../types";
 import { GuildPluginData } from "knub";
+import { RecentActionType, SpamPluginType } from "../types";
 
 export function getRecentActions(
   pluginData: GuildPluginData<SpamPluginType>,
diff --git a/backend/src/plugins/Spam/util/logAndDetectMessageSpam.ts b/backend/src/plugins/Spam/util/logAndDetectMessageSpam.ts
index 0ce54e7f..a7846eb4 100644
--- a/backend/src/plugins/Spam/util/logAndDetectMessageSpam.ts
+++ b/backend/src/plugins/Spam/util/logAndDetectMessageSpam.ts
@@ -1,29 +1,29 @@
-import { SavedMessage } from "../../../data/entities/SavedMessage";
-import { RecentActionType, SpamPluginType, TBaseSingleSpamConfig } from "../types";
-import moment from "moment-timezone";
-import { MuteResult } from "../../../plugins/Mutes/types";
-import {
-  convertDelayStringToMS,
-  DBDateFormat,
-  noop,
-  resolveMember,
-  stripObjectToScalars,
-  trimLines,
-} from "../../../utils";
-import { LogType } from "../../../data/LogType";
-import { CaseTypes } from "../../../data/CaseTypes";
-import { logger } from "../../../logger";
+import { TextChannel } from "discord.js";
 import { GuildPluginData } from "knub";
-import { MutesPlugin } from "../../../plugins/Mutes/MutesPlugin";
+import moment from "moment-timezone";
+import { CaseTypes } from "../../../data/CaseTypes";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { LogType } from "../../../data/LogType";
+import { logger } from "../../../logger";
 import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
+import { MutesPlugin } from "../../../plugins/Mutes/MutesPlugin";
+import { MuteResult } from "../../../plugins/Mutes/types";
+import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
+import {
+    convertDelayStringToMS,
+    DBDateFormat,
+    noop,
+    resolveMember,
+    stripObjectToScalars,
+    trimLines
+} from "../../../utils";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { RecentActionType, SpamPluginType, TBaseSingleSpamConfig } from "../types";
 import { addRecentAction } from "./addRecentAction";
+import { clearRecentUserActions } from "./clearRecentUserActions";
 import { getRecentActionCount } from "./getRecentActionCount";
 import { getRecentActions } from "./getRecentActions";
-import { clearRecentUserActions } from "./clearRecentUserActions";
 import { saveSpamArchives } from "./saveSpamArchives";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
-import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
-import { TextChannel } from "discord.js";
 
 export async function logAndDetectMessageSpam(
   pluginData: GuildPluginData<SpamPluginType>,
diff --git a/backend/src/plugins/Spam/util/logAndDetectOtherSpam.ts b/backend/src/plugins/Spam/util/logAndDetectOtherSpam.ts
index b7cc82ec..7e1b3c60 100644
--- a/backend/src/plugins/Spam/util/logAndDetectOtherSpam.ts
+++ b/backend/src/plugins/Spam/util/logAndDetectOtherSpam.ts
@@ -1,15 +1,15 @@
 import { GuildPluginData } from "knub";
-import { SpamPluginType, RecentActionType } from "../types";
-import { addRecentAction } from "./addRecentAction";
-import { getRecentActionCount } from "./getRecentActionCount";
-import { resolveMember, convertDelayStringToMS, stripObjectToScalars } from "../../../utils";
-import { MutesPlugin } from "../../../plugins/Mutes/MutesPlugin";
-import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
 import { CaseTypes } from "../../../data/CaseTypes";
-import { clearRecentUserActions } from "./clearRecentUserActions";
 import { LogType } from "../../../data/LogType";
+import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
+import { MutesPlugin } from "../../../plugins/Mutes/MutesPlugin";
 import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
+import { convertDelayStringToMS, resolveMember, stripObjectToScalars } from "../../../utils";
 import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { RecentActionType, SpamPluginType } from "../types";
+import { addRecentAction } from "./addRecentAction";
+import { clearRecentUserActions } from "./clearRecentUserActions";
+import { getRecentActionCount } from "./getRecentActionCount";
 
 export async function logAndDetectOtherSpam(
   pluginData: GuildPluginData<SpamPluginType>,
diff --git a/backend/src/plugins/Spam/util/logCensor.ts b/backend/src/plugins/Spam/util/logCensor.ts
index 318a0bae..cb503da4 100644
--- a/backend/src/plugins/Spam/util/logCensor.ts
+++ b/backend/src/plugins/Spam/util/logCensor.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { SpamPluginType, RecentActionType } from "../types";
 import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { RecentActionType, SpamPluginType } from "../types";
 import { logAndDetectMessageSpam } from "./logAndDetectMessageSpam";
 
 export async function logCensor(pluginData: GuildPluginData<SpamPluginType>, savedMessage: SavedMessage) {
diff --git a/backend/src/plugins/Spam/util/onMessageCreate.ts b/backend/src/plugins/Spam/util/onMessageCreate.ts
index cedb0616..17410a19 100644
--- a/backend/src/plugins/Spam/util/onMessageCreate.ts
+++ b/backend/src/plugins/Spam/util/onMessageCreate.ts
@@ -1,7 +1,7 @@
 import { GuildPluginData } from "knub";
-import { SpamPluginType, RecentActionType } from "../types";
 import { SavedMessage } from "../../../data/entities/SavedMessage";
-import { getUserMentions, getRoleMentions, getUrlsInString, getEmojiInString } from "../../../utils";
+import { getEmojiInString, getRoleMentions, getUrlsInString, getUserMentions } from "../../../utils";
+import { RecentActionType, SpamPluginType } from "../types";
 import { logAndDetectMessageSpam } from "./logAndDetectMessageSpam";
 
 export async function onMessageCreate(pluginData: GuildPluginData<SpamPluginType>, savedMessage: SavedMessage) {
diff --git a/backend/src/plugins/Spam/util/saveSpamArchives.ts b/backend/src/plugins/Spam/util/saveSpamArchives.ts
index 9a3b3cac..d6d062a1 100644
--- a/backend/src/plugins/Spam/util/saveSpamArchives.ts
+++ b/backend/src/plugins/Spam/util/saveSpamArchives.ts
@@ -1,7 +1,7 @@
-import { SavedMessage } from "../../../data/entities/SavedMessage";
-import moment from "moment-timezone";
-import { getBaseUrl } from "../../../pluginUtils";
 import { GuildPluginData } from "knub";
+import moment from "moment-timezone";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { getBaseUrl } from "../../../pluginUtils";
 import { SpamPluginType } from "../types";
 
 const SPAM_ARCHIVE_EXPIRY_DAYS = 90;
diff --git a/backend/src/plugins/Starboard/StarboardPlugin.ts b/backend/src/plugins/Starboard/StarboardPlugin.ts
index 817828a1..a7ab3ff2 100644
--- a/backend/src/plugins/Starboard/StarboardPlugin.ts
+++ b/backend/src/plugins/Starboard/StarboardPlugin.ts
@@ -1,14 +1,14 @@
 import { PluginOptions } from "knub";
-import { ConfigSchema, defaultStarboardOpts, StarboardPluginType } from "./types";
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { trimPluginDescription } from "../../utils";
 import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildStarboardMessages } from "../../data/GuildStarboardMessages";
 import { GuildStarboardReactions } from "../../data/GuildStarboardReactions";
-import { onMessageDelete } from "./util/onMessageDelete";
+import { trimPluginDescription } from "../../utils";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { MigratePinsCmd } from "./commands/MigratePinsCmd";
 import { StarboardReactionAddEvt } from "./events/StarboardReactionAddEvt";
-import { StarboardReactionRemoveEvt, StarboardReactionRemoveAllEvt } from "./events/StarboardReactionRemoveEvts";
+import { StarboardReactionRemoveAllEvt, StarboardReactionRemoveEvt } from "./events/StarboardReactionRemoveEvts";
+import { ConfigSchema, defaultStarboardOpts, StarboardPluginType } from "./types";
+import { onMessageDelete } from "./util/onMessageDelete";
 
 const defaultOptions: PluginOptions<StarboardPluginType> = {
   config: {
diff --git a/backend/src/plugins/Starboard/commands/MigratePinsCmd.ts b/backend/src/plugins/Starboard/commands/MigratePinsCmd.ts
index 27b08d4d..d88fa744 100644
--- a/backend/src/plugins/Starboard/commands/MigratePinsCmd.ts
+++ b/backend/src/plugins/Starboard/commands/MigratePinsCmd.ts
@@ -1,9 +1,9 @@
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { starboardCmd } from "../types";
-import { sendSuccessMessage, sendErrorMessage } from "../../../pluginUtils";
-
-import { saveMessageToStarboard } from "../util/saveMessageToStarboard";
 import { TextChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { starboardCmd } from "../types";
+import { saveMessageToStarboard } from "../util/saveMessageToStarboard";
+
 
 export const MigratePinsCmd = starboardCmd({
   trigger: "starboard migrate_pins",
diff --git a/backend/src/plugins/Starboard/events/StarboardReactionAddEvt.ts b/backend/src/plugins/Starboard/events/StarboardReactionAddEvt.ts
index ddcdb925..bedbddc5 100644
--- a/backend/src/plugins/Starboard/events/StarboardReactionAddEvt.ts
+++ b/backend/src/plugins/Starboard/events/StarboardReactionAddEvt.ts
@@ -1,10 +1,10 @@
+import { Message, TextChannel } from "discord.js";
+import { noop, resolveMember } from "../../../utils";
+import { allStarboardsLock } from "../../../utils/lockNameHelpers";
 import { starboardEvt } from "../types";
-
-import { UnknownUser, resolveMember, noop, resolveUser } from "../../../utils";
 import { saveMessageToStarboard } from "../util/saveMessageToStarboard";
 import { updateStarboardMessageStarCount } from "../util/updateStarboardMessageStarCount";
-import { allStarboardsLock } from "../../../utils/lockNameHelpers";
-import { Message, TextChannel } from "discord.js";
+
 
 export const StarboardReactionAddEvt = starboardEvt({
   event: "messageReactionAdd",
diff --git a/backend/src/plugins/Starboard/types.ts b/backend/src/plugins/Starboard/types.ts
index a8d160b4..de460e5b 100644
--- a/backend/src/plugins/Starboard/types.ts
+++ b/backend/src/plugins/Starboard/types.ts
@@ -1,9 +1,9 @@
 import * as t from "io-ts";
 import { BasePluginType, typedGuildCommand, typedGuildEventListener } from "knub";
-import { tNullable, tDeepPartial } from "../../utils";
 import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildStarboardMessages } from "../../data/GuildStarboardMessages";
 import { GuildStarboardReactions } from "../../data/GuildStarboardReactions";
+import { tDeepPartial, tNullable } from "../../utils";
 
 const StarboardOpts = t.type({
   channel_id: t.string,
diff --git a/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts b/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts
index 7c47e846..ffff5915 100644
--- a/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts
+++ b/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts
@@ -1,7 +1,7 @@
-import { EmbedWith, EMPTY_CHAR, messageLink } from "../../../utils";
-
+import { GuildChannel, Message } from "discord.js";
 import path from "path";
-import { Message, GuildChannel } from "discord.js";
+import { EmbedWith, EMPTY_CHAR } from "../../../utils";
+
 
 const imageAttachmentExtensions = ["jpeg", "jpg", "png", "gif", "webp"];
 const audioAttachmentExtensions = ["wav", "mp3", "m4a"];
diff --git a/backend/src/plugins/Starboard/util/createStarboardPseudoFooterForMessage.ts b/backend/src/plugins/Starboard/util/createStarboardPseudoFooterForMessage.ts
index 04f32806..49d2cdde 100644
--- a/backend/src/plugins/Starboard/util/createStarboardPseudoFooterForMessage.ts
+++ b/backend/src/plugins/Starboard/util/createStarboardPseudoFooterForMessage.ts
@@ -1,4 +1,4 @@
-import { Message, EmbedField } from "discord.js";
+import { EmbedField, Message } from "discord.js";
 import { EMPTY_CHAR, messageLink } from "../../../utils";
 import { TStarboardOpts } from "../types";
 
diff --git a/backend/src/plugins/Starboard/util/onMessageDelete.ts b/backend/src/plugins/Starboard/util/onMessageDelete.ts
index 74477afe..fb6c7f2e 100644
--- a/backend/src/plugins/Starboard/util/onMessageDelete.ts
+++ b/backend/src/plugins/Starboard/util/onMessageDelete.ts
@@ -1,5 +1,5 @@
-import { SavedMessage } from "../../../data/entities/SavedMessage";
 import { GuildPluginData } from "knub";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
 import { StarboardPluginType } from "../types";
 import { removeMessageFromStarboard } from "./removeMessageFromStarboard";
 import { removeMessageFromStarboardMessages } from "./removeMessageFromStarboardMessages";
diff --git a/backend/src/plugins/Starboard/util/preprocessStaticConfig.ts b/backend/src/plugins/Starboard/util/preprocessStaticConfig.ts
index b690fbf8..708b4a89 100644
--- a/backend/src/plugins/Starboard/util/preprocessStaticConfig.ts
+++ b/backend/src/plugins/Starboard/util/preprocessStaticConfig.ts
@@ -1,5 +1,5 @@
-import { PartialConfigSchema, defaultStarboardOpts } from "../types";
 import * as t from "io-ts";
+import { defaultStarboardOpts, PartialConfigSchema } from "../types";
 
 export function preprocessStaticConfig(config: t.TypeOf<typeof PartialConfigSchema>) {
   if (config.boards) {
diff --git a/backend/src/plugins/Starboard/util/saveMessageToStarboard.ts b/backend/src/plugins/Starboard/util/saveMessageToStarboard.ts
index 88f6023b..ad2cd8b7 100644
--- a/backend/src/plugins/Starboard/util/saveMessageToStarboard.ts
+++ b/backend/src/plugins/Starboard/util/saveMessageToStarboard.ts
@@ -1,12 +1,9 @@
+import { Message, TextChannel } from "discord.js";
 import { GuildPluginData } from "knub";
 import { StarboardPluginType, TStarboardOpts } from "../types";
-
-import moment from "moment-timezone";
-import { EmbedWith, EMPTY_CHAR, messageLink } from "../../../utils";
-import path from "path";
 import { createStarboardEmbedFromMessage } from "./createStarboardEmbedFromMessage";
 import { createStarboardPseudoFooterForMessage } from "./createStarboardPseudoFooterForMessage";
-import { Message, TextChannel } from "discord.js";
+
 
 export async function saveMessageToStarboard(
   pluginData: GuildPluginData<StarboardPluginType>,
diff --git a/backend/src/plugins/Starboard/util/updateStarboardMessageStarCount.ts b/backend/src/plugins/Starboard/util/updateStarboardMessageStarCount.ts
index 3cccbd37..b6375a28 100644
--- a/backend/src/plugins/Starboard/util/updateStarboardMessageStarCount.ts
+++ b/backend/src/plugins/Starboard/util/updateStarboardMessageStarCount.ts
@@ -1,8 +1,7 @@
-import { noop } from "../../../utils";
-import { createStarboardPseudoFooterForMessage } from "./createStarboardPseudoFooterForMessage";
-import { TStarboardOpts } from "../types";
-import Timeout = NodeJS.Timeout;
 import { Message } from "discord.js";
+import { TStarboardOpts } from "../types";
+import { createStarboardPseudoFooterForMessage } from "./createStarboardPseudoFooterForMessage";
+import Timeout = NodeJS.Timeout;
 
 const DEBOUNCE_DELAY = 1000;
 const debouncedUpdates: Record<string, Timeout> = {};
diff --git a/backend/src/plugins/Tags/TagsPlugin.ts b/backend/src/plugins/Tags/TagsPlugin.ts
index 889c92b2..2d6b83f9 100644
--- a/backend/src/plugins/Tags/TagsPlugin.ts
+++ b/backend/src/plugins/Tags/TagsPlugin.ts
@@ -1,25 +1,25 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { ConfigSchema, TagsPluginType } from "./types";
+import humanizeDuration from "humanize-duration";
 import { PluginOptions } from "knub";
+import moment from "moment-timezone";
+import { StrictValidationError } from "src/validatorUtils";
 import { GuildArchives } from "../../data/GuildArchives";
-import { GuildTags } from "../../data/GuildTags";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildLogs } from "../../data/GuildLogs";
-import { onMessageCreate } from "./util/onMessageCreate";
-import { onMessageDelete } from "./util/onMessageDelete";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { GuildTags } from "../../data/GuildTags";
+import { mapToPublicFn } from "../../pluginUtils";
+import { convertDelayStringToMS } from "../../utils";
+import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { TagCreateCmd } from "./commands/TagCreateCmd";
 import { TagDeleteCmd } from "./commands/TagDeleteCmd";
 import { TagEvalCmd } from "./commands/TagEvalCmd";
 import { TagListCmd } from "./commands/TagListCmd";
 import { TagSourceCmd } from "./commands/TagSourceCmd";
-import moment from "moment-timezone";
-import humanizeDuration from "humanize-duration";
-import { convertDelayStringToMS } from "../../utils";
-import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
-import { mapToPublicFn } from "../../pluginUtils";
-import { renderTagBody } from "./util/renderTagBody";
+import { ConfigSchema, TagsPluginType } from "./types";
 import { findTagByName } from "./util/findTagByName";
-import { StrictValidationError } from "src/validatorUtils";
+import { onMessageCreate } from "./util/onMessageCreate";
+import { onMessageDelete } from "./util/onMessageDelete";
+import { renderTagBody } from "./util/renderTagBody";
 
 const defaultOptions: PluginOptions<TagsPluginType> = {
   config: {
diff --git a/backend/src/plugins/Tags/commands/TagCreateCmd.ts b/backend/src/plugins/Tags/commands/TagCreateCmd.ts
index c55a5cab..0595e4bb 100644
--- a/backend/src/plugins/Tags/commands/TagCreateCmd.ts
+++ b/backend/src/plugins/Tags/commands/TagCreateCmd.ts
@@ -1,7 +1,7 @@
-import { tagsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { parseTemplate, TemplateParseError } from "../../../templateFormatter";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { parseTemplate, TemplateParseError } from "../../../templateFormatter";
+import { tagsCmd } from "../types";
 
 export const TagCreateCmd = tagsCmd({
   trigger: "tag",
diff --git a/backend/src/plugins/Tags/commands/TagDeleteCmd.ts b/backend/src/plugins/Tags/commands/TagDeleteCmd.ts
index 40875d21..47cb623d 100644
--- a/backend/src/plugins/Tags/commands/TagDeleteCmd.ts
+++ b/backend/src/plugins/Tags/commands/TagDeleteCmd.ts
@@ -1,6 +1,6 @@
-import { tagsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { tagsCmd } from "../types";
 
 export const TagDeleteCmd = tagsCmd({
   trigger: "tag delete",
diff --git a/backend/src/plugins/Tags/commands/TagEvalCmd.ts b/backend/src/plugins/Tags/commands/TagEvalCmd.ts
index 7d47b8be..61d8569c 100644
--- a/backend/src/plugins/Tags/commands/TagEvalCmd.ts
+++ b/backend/src/plugins/Tags/commands/TagEvalCmd.ts
@@ -1,10 +1,10 @@
-import { tagsCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-
-import { TemplateParseError } from "../../../templateFormatter";
 import { sendErrorMessage } from "../../../pluginUtils";
-import { renderTagBody } from "../util/renderTagBody";
+import { TemplateParseError } from "../../../templateFormatter";
 import { stripObjectToScalars } from "../../../utils";
+import { tagsCmd } from "../types";
+import { renderTagBody } from "../util/renderTagBody";
+
 
 export const TagEvalCmd = tagsCmd({
   trigger: "tag eval",
diff --git a/backend/src/plugins/Tags/commands/TagListCmd.ts b/backend/src/plugins/Tags/commands/TagListCmd.ts
index 8ab8d8de..41febd5d 100644
--- a/backend/src/plugins/Tags/commands/TagListCmd.ts
+++ b/backend/src/plugins/Tags/commands/TagListCmd.ts
@@ -1,5 +1,5 @@
-import { tagsCmd } from "../types";
 import { createChunkedMessage } from "../../../utils";
+import { tagsCmd } from "../types";
 
 export const TagListCmd = tagsCmd({
   trigger: ["tag list", "tags", "taglist"],
diff --git a/backend/src/plugins/Tags/commands/TagSourceCmd.ts b/backend/src/plugins/Tags/commands/TagSourceCmd.ts
index 08847b00..9e0e5cef 100644
--- a/backend/src/plugins/Tags/commands/TagSourceCmd.ts
+++ b/backend/src/plugins/Tags/commands/TagSourceCmd.ts
@@ -1,7 +1,7 @@
-import { tagsCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { sendErrorMessage, getBaseUrl, sendSuccessMessage } from "../../../pluginUtils";
 import moment from "moment-timezone";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { getBaseUrl, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { tagsCmd } from "../types";
 
 export const TagSourceCmd = tagsCmd({
   trigger: "tag",
diff --git a/backend/src/plugins/Tags/types.ts b/backend/src/plugins/Tags/types.ts
index 348e2982..17ad0fc8 100644
--- a/backend/src/plugins/Tags/types.ts
+++ b/backend/src/plugins/Tags/types.ts
@@ -1,10 +1,10 @@
 import * as t from "io-ts";
 import { BasePluginType, typedGuildCommand, typedGuildEventListener } from "knub";
-import { tNullable, tEmbed } from "../../utils";
 import { GuildArchives } from "../../data/GuildArchives";
-import { GuildTags } from "../../data/GuildTags";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildLogs } from "../../data/GuildLogs";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { GuildTags } from "../../data/GuildTags";
+import { tEmbed, tNullable } from "../../utils";
 
 export const Tag = t.union([t.string, tEmbed]);
 
diff --git a/backend/src/plugins/Tags/util/findTagByName.ts b/backend/src/plugins/Tags/util/findTagByName.ts
index c8e3807a..4ec61ec5 100644
--- a/backend/src/plugins/Tags/util/findTagByName.ts
+++ b/backend/src/plugins/Tags/util/findTagByName.ts
@@ -1,7 +1,7 @@
-import { GuildPluginData } from "knub";
-import { Tag, TagsPluginType } from "../types";
-import { ExtendedMatchParams } from "knub/dist/config/PluginConfigManager";
 import * as t from "io-ts";
+import { GuildPluginData } from "knub";
+import { ExtendedMatchParams } from "knub/dist/config/PluginConfigManager";
+import { Tag, TagsPluginType } from "../types";
 
 export async function findTagByName(
   pluginData: GuildPluginData<TagsPluginType>,
diff --git a/backend/src/plugins/Tags/util/matchAndRenderTagFromString.ts b/backend/src/plugins/Tags/util/matchAndRenderTagFromString.ts
index 968fc1e7..db436067 100644
--- a/backend/src/plugins/Tags/util/matchAndRenderTagFromString.ts
+++ b/backend/src/plugins/Tags/util/matchAndRenderTagFromString.ts
@@ -1,10 +1,10 @@
-import { ExtendedMatchParams } from "knub/dist/config/PluginConfigManager";
+import { GuildMember } from "discord.js";
+import escapeStringRegexp from "escape-string-regexp";
 import { GuildPluginData } from "knub";
+import { ExtendedMatchParams } from "knub/dist/config/PluginConfigManager";
+import { StrictMessageContent } from "../../../utils";
 import { TagsPluginType, TTagCategory } from "../types";
 import { renderTagFromString } from "./renderTagFromString";
-import { convertDelayStringToMS, StrictMessageContent } from "../../../utils";
-import escapeStringRegexp from "escape-string-regexp";
-import { GuildMember } from "discord.js";
 
 interface BaseResult {
   renderedContent: StrictMessageContent;
diff --git a/backend/src/plugins/Tags/util/onMessageCreate.ts b/backend/src/plugins/Tags/util/onMessageCreate.ts
index e6169eb5..432b73ab 100644
--- a/backend/src/plugins/Tags/util/onMessageCreate.ts
+++ b/backend/src/plugins/Tags/util/onMessageCreate.ts
@@ -1,14 +1,14 @@
-import { TagsPluginType } from "../types";
-import { SavedMessage } from "../../../data/entities/SavedMessage";
-import { GuildPluginData } from "knub";
-import { convertDelayStringToMS, noop, resolveMember, tStrictMessageContent } from "../../../utils";
-import { validate } from "../../../validatorUtils";
-import { LogType } from "../../../data/LogType";
-
-import { matchAndRenderTagFromString } from "./matchAndRenderTagFromString";
-import { messageIsEmpty } from "../../../utils/messageIsEmpty";
 import { TextChannel } from "discord.js";
+import { GuildPluginData } from "knub";
 import { erisAllowedMentionsToDjsMentionOptions } from "src/utils/erisAllowedMentionsToDjsMentionOptions";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { LogType } from "../../../data/LogType";
+import { convertDelayStringToMS, resolveMember, tStrictMessageContent } from "../../../utils";
+import { messageIsEmpty } from "../../../utils/messageIsEmpty";
+import { validate } from "../../../validatorUtils";
+import { TagsPluginType } from "../types";
+import { matchAndRenderTagFromString } from "./matchAndRenderTagFromString";
+
 
 export async function onMessageCreate(pluginData: GuildPluginData<TagsPluginType>, msg: SavedMessage) {
   if (msg.is_bot) return;
diff --git a/backend/src/plugins/Tags/util/onMessageDelete.ts b/backend/src/plugins/Tags/util/onMessageDelete.ts
index 7a418bb0..e8643e85 100644
--- a/backend/src/plugins/Tags/util/onMessageDelete.ts
+++ b/backend/src/plugins/Tags/util/onMessageDelete.ts
@@ -1,7 +1,7 @@
-import { GuildPluginData } from "knub";
-import { TagsPluginType } from "../types";
-import { SavedMessage } from "../../../data/entities/SavedMessage";
 import { TextChannel } from "discord.js";
+import { GuildPluginData } from "knub";
+import { SavedMessage } from "../../../data/entities/SavedMessage";
+import { TagsPluginType } from "../types";
 
 export async function onMessageDelete(pluginData: GuildPluginData<TagsPluginType>, msg: SavedMessage) {
   // Command message was deleted -> delete the response as well
diff --git a/backend/src/plugins/Tags/util/renderTagBody.ts b/backend/src/plugins/Tags/util/renderTagBody.ts
index 735455dc..725275f1 100644
--- a/backend/src/plugins/Tags/util/renderTagBody.ts
+++ b/backend/src/plugins/Tags/util/renderTagBody.ts
@@ -1,10 +1,10 @@
-import { renderTemplate } from "../../../templateFormatter";
-import { GuildPluginData } from "knub";
-import { Tag, TagsPluginType } from "../types";
-import { renderRecursively, StrictMessageContent } from "../../../utils";
 import * as t from "io-ts";
-import { findTagByName } from "./findTagByName";
+import { GuildPluginData } from "knub";
 import { ExtendedMatchParams } from "knub/dist/config/PluginConfigManager";
+import { renderTemplate } from "../../../templateFormatter";
+import { renderRecursively, StrictMessageContent } from "../../../utils";
+import { Tag, TagsPluginType } from "../types";
+import { findTagByName } from "./findTagByName";
 
 export async function renderTagBody(
   pluginData: GuildPluginData<TagsPluginType>,
diff --git a/backend/src/plugins/Tags/util/renderTagFromString.ts b/backend/src/plugins/Tags/util/renderTagFromString.ts
index 5e5975a1..89b489b0 100644
--- a/backend/src/plugins/Tags/util/renderTagFromString.ts
+++ b/backend/src/plugins/Tags/util/renderTagFromString.ts
@@ -1,15 +1,14 @@
-import { Tag, TagsPluginType } from "../types";
-
-import * as t from "io-ts";
-import { renderRecursively, StrictMessageContent, stripObjectToScalars } from "../../../utils";
-import { parseArguments } from "knub-command-manager";
-import { TemplateParseError } from "../../../templateFormatter";
-import { GuildPluginData } from "knub";
-import { logger } from "../../../logger";
-import { LogsPlugin } from "../../Logs/LogsPlugin";
-import { LogType } from "../../../data/LogType";
-import { renderTagBody } from "./renderTagBody";
 import { GuildMember } from "discord.js";
+import * as t from "io-ts";
+import { GuildPluginData } from "knub";
+import { parseArguments } from "knub-command-manager";
+import { LogType } from "../../../data/LogType";
+import { TemplateParseError } from "../../../templateFormatter";
+import { StrictMessageContent, stripObjectToScalars } from "../../../utils";
+import { LogsPlugin } from "../../Logs/LogsPlugin";
+import { Tag, TagsPluginType } from "../types";
+import { renderTagBody } from "./renderTagBody";
+
 
 export async function renderTagFromString(
   pluginData: GuildPluginData<TagsPluginType>,
diff --git a/backend/src/plugins/TimeAndDate/TimeAndDatePlugin.ts b/backend/src/plugins/TimeAndDate/TimeAndDatePlugin.ts
index 7d079265..2f0d6cdf 100644
--- a/backend/src/plugins/TimeAndDate/TimeAndDatePlugin.ts
+++ b/backend/src/plugins/TimeAndDate/TimeAndDatePlugin.ts
@@ -1,19 +1,18 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { ConfigSchema, TimeAndDatePluginType } from "./types";
-import { GuildMemberTimezones } from "../../data/GuildMemberTimezones";
 import { PluginOptions } from "knub";
+import { GuildMemberTimezones } from "../../data/GuildMemberTimezones";
+import { mapToPublicFn } from "../../pluginUtils";
+import { trimPluginDescription } from "../../utils";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { ResetTimezoneCmd } from "./commands/ResetTimezoneCmd";
 import { SetTimezoneCmd } from "./commands/SetTimezoneCmd";
 import { ViewTimezoneCmd } from "./commands/ViewTimezoneCmd";
 import { defaultDateFormats } from "./defaultDateFormats";
-import { Tail } from "../../utils/typeUtils";
-import { inGuildTz } from "./functions/inGuildTz";
-import { mapToPublicFn } from "../../pluginUtils";
+import { getDateFormat } from "./functions/getDateFormat";
 import { getGuildTz } from "./functions/getGuildTz";
 import { getMemberTz } from "./functions/getMemberTz";
-import { getDateFormat } from "./functions/getDateFormat";
+import { inGuildTz } from "./functions/inGuildTz";
 import { inMemberTz } from "./functions/inMemberTz";
-import { ResetTimezoneCmd } from "./commands/ResetTimezoneCmd";
-import { trimPluginDescription } from "../../utils";
+import { ConfigSchema, TimeAndDatePluginType } from "./types";
 
 const defaultOptions: PluginOptions<TimeAndDatePluginType> = {
   config: {
diff --git a/backend/src/plugins/TimeAndDate/commands/ResetTimezoneCmd.ts b/backend/src/plugins/TimeAndDate/commands/ResetTimezoneCmd.ts
index 56cd21b7..db59965a 100644
--- a/backend/src/plugins/TimeAndDate/commands/ResetTimezoneCmd.ts
+++ b/backend/src/plugins/TimeAndDate/commands/ResetTimezoneCmd.ts
@@ -1,7 +1,6 @@
-import { timeAndDateCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendSuccessMessage } from "../../../pluginUtils";
 import { getGuildTz } from "../functions/getGuildTz";
+import { timeAndDateCmd } from "../types";
 
 export const ResetTimezoneCmd = timeAndDateCmd({
   trigger: "timezone reset",
diff --git a/backend/src/plugins/TimeAndDate/commands/SetTimezoneCmd.ts b/backend/src/plugins/TimeAndDate/commands/SetTimezoneCmd.ts
index 0d69f47c..1786bd34 100644
--- a/backend/src/plugins/TimeAndDate/commands/SetTimezoneCmd.ts
+++ b/backend/src/plugins/TimeAndDate/commands/SetTimezoneCmd.ts
@@ -1,9 +1,8 @@
-import { timeAndDateCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-import { isValidTimezone } from "../../../utils/isValidTimezone";
 import { disableInlineCode, trimLines } from "../../../utils";
 import { parseFuzzyTimezone } from "../../../utils/parseFuzzyTimezone";
+import { timeAndDateCmd } from "../types";
 
 export const SetTimezoneCmd = timeAndDateCmd({
   trigger: "timezone",
diff --git a/backend/src/plugins/TimeAndDate/commands/ViewTimezoneCmd.ts b/backend/src/plugins/TimeAndDate/commands/ViewTimezoneCmd.ts
index d1d41694..0c72bc4e 100644
--- a/backend/src/plugins/TimeAndDate/commands/ViewTimezoneCmd.ts
+++ b/backend/src/plugins/TimeAndDate/commands/ViewTimezoneCmd.ts
@@ -1,8 +1,5 @@
-import { timeAndDateCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { sendSuccessMessage } from "../../../pluginUtils";
-import { getMemberTz } from "../functions/getMemberTz";
 import { getGuildTz } from "../functions/getGuildTz";
+import { timeAndDateCmd } from "../types";
 
 export const ViewTimezoneCmd = timeAndDateCmd({
   trigger: "timezone",
diff --git a/backend/src/plugins/TimeAndDate/functions/getGuildTz.ts b/backend/src/plugins/TimeAndDate/functions/getGuildTz.ts
index ed30d67e..922c7c88 100644
--- a/backend/src/plugins/TimeAndDate/functions/getGuildTz.ts
+++ b/backend/src/plugins/TimeAndDate/functions/getGuildTz.ts
@@ -1,5 +1,4 @@
 import { GuildPluginData } from "knub";
-import { ZeppelinGuildConfig } from "../../../types";
 import { TimeAndDatePluginType } from "../types";
 
 export function getGuildTz(pluginData: GuildPluginData<TimeAndDatePluginType>) {
diff --git a/backend/src/plugins/TimeAndDate/functions/inGuildTz.ts b/backend/src/plugins/TimeAndDate/functions/inGuildTz.ts
index 118e5789..d19a6d68 100644
--- a/backend/src/plugins/TimeAndDate/functions/inGuildTz.ts
+++ b/backend/src/plugins/TimeAndDate/functions/inGuildTz.ts
@@ -1,6 +1,6 @@
 import { GuildPluginData } from "knub";
-import { TimeAndDatePluginType } from "../types";
 import moment from "moment-timezone";
+import { TimeAndDatePluginType } from "../types";
 import { getGuildTz } from "./getGuildTz";
 
 export function inGuildTz(pluginData: GuildPluginData<TimeAndDatePluginType>, input?: moment.Moment | number) {
diff --git a/backend/src/plugins/TimeAndDate/functions/inMemberTz.ts b/backend/src/plugins/TimeAndDate/functions/inMemberTz.ts
index f6adc85a..37ec7ca3 100644
--- a/backend/src/plugins/TimeAndDate/functions/inMemberTz.ts
+++ b/backend/src/plugins/TimeAndDate/functions/inMemberTz.ts
@@ -1,7 +1,6 @@
 import { GuildPluginData } from "knub";
-import { TimeAndDatePluginType } from "../types";
 import moment from "moment-timezone";
-import { getGuildTz } from "./getGuildTz";
+import { TimeAndDatePluginType } from "../types";
 import { getMemberTz } from "./getMemberTz";
 
 export async function inMemberTz(
diff --git a/backend/src/plugins/TimeAndDate/types.ts b/backend/src/plugins/TimeAndDate/types.ts
index 48fa5d3a..c0144bfd 100644
--- a/backend/src/plugins/TimeAndDate/types.ts
+++ b/backend/src/plugins/TimeAndDate/types.ts
@@ -1,7 +1,7 @@
 import * as t from "io-ts";
-import { tNullable, tPartialDictionary } from "../../utils";
 import { BasePluginType, typedGuildCommand } from "knub";
 import { GuildMemberTimezones } from "../../data/GuildMemberTimezones";
+import { tNullable, tPartialDictionary } from "../../utils";
 import { tValidTimezone } from "../../utils/tValidTimezone";
 import { defaultDateFormats } from "./defaultDateFormats";
 
diff --git a/backend/src/plugins/UsernameSaver/UsernameSaverPlugin.ts b/backend/src/plugins/UsernameSaver/UsernameSaverPlugin.ts
index fbbe1e81..3014350c 100644
--- a/backend/src/plugins/UsernameSaver/UsernameSaverPlugin.ts
+++ b/backend/src/plugins/UsernameSaver/UsernameSaverPlugin.ts
@@ -1,9 +1,9 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import * as t from "io-ts";
 import { UsernameHistory } from "../../data/UsernameHistory";
 import { Queue } from "../../Queue";
-import { UsernameSaverPluginType } from "./types";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { MessageCreateUpdateUsernameEvt, VoiceChannelJoinUpdateUsernameEvt } from "./events/UpdateUsernameEvts";
-import * as t from "io-ts";
+import { UsernameSaverPluginType } from "./types";
 
 export const UsernameSaverPlugin = zeppelinGuildPlugin<UsernameSaverPluginType>()({
   name: "username_saver",
diff --git a/backend/src/plugins/Utility/UtilityPlugin.ts b/backend/src/plugins/Utility/UtilityPlugin.ts
index 2a22bc38..d2d32325 100644
--- a/backend/src/plugins/Utility/UtilityPlugin.ts
+++ b/backend/src/plugins/Utility/UtilityPlugin.ts
@@ -1,43 +1,43 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
-import { ConfigSchema, UtilityPluginType } from "./types";
-import { GuildLogs } from "../../data/GuildLogs";
-import { GuildCases } from "../../data/GuildCases";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
-import { GuildArchives } from "../../data/GuildArchives";
-import { Supporters } from "../../data/Supporters";
-import { ServerInfoCmd } from "./commands/ServerInfoCmd";
-import { RolesCmd } from "./commands/RolesCmd";
-import { LevelCmd } from "./commands/LevelCmd";
-import { SearchCmd } from "./commands/SearchCmd";
-import { BanSearchCmd } from "./commands/BanSearchCmd";
-import { UserInfoCmd } from "./commands/UserInfoCmd";
-import { NicknameResetCmd } from "./commands/NicknameResetCmd";
-import { NicknameCmd } from "./commands/NicknameCmd";
-import { PingCmd } from "./commands/PingCmd";
-import { SourceCmd } from "./commands/SourceCmd";
-import { ContextCmd } from "./commands/ContextCmd";
-import { VcmoveAllCmd, VcmoveCmd } from "./commands/VcmoveCmd";
-import { HelpCmd } from "./commands/HelpCmd";
-import { AboutCmd } from "./commands/AboutCmd";
 import { PluginOptions } from "knub";
-import { activeReloads } from "./guildReloads";
+import { GuildArchives } from "../../data/GuildArchives";
+import { GuildCases } from "../../data/GuildCases";
+import { GuildLogs } from "../../data/GuildLogs";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
+import { Supporters } from "../../data/Supporters";
 import { sendSuccessMessage } from "../../pluginUtils";
-import { ReloadGuildCmd } from "./commands/ReloadGuildCmd";
-import { JumboCmd } from "./commands/JumboCmd";
-import { AvatarCmd } from "./commands/AvatarCmd";
-import { CleanCmd } from "./commands/CleanCmd";
-import { InviteInfoCmd } from "./commands/InviteInfoCmd";
-import { ChannelInfoCmd } from "./commands/ChannelInfoCmd";
-import { MessageInfoCmd } from "./commands/MessageInfoCmd";
-import { InfoCmd } from "./commands/InfoCmd";
-import { SnowflakeInfoCmd } from "./commands/SnowflakeInfoCmd";
 import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners";
-import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
-import { VcdisconnectCmd } from "./commands/VcdisconnectCmd";
 import { ModActionsPlugin } from "../ModActions/ModActionsPlugin";
-import { refreshMembersIfNeeded } from "./refreshMembers";
-import { RoleInfoCmd } from "./commands/RoleInfoCmd";
+import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
+import { AboutCmd } from "./commands/AboutCmd";
+import { AvatarCmd } from "./commands/AvatarCmd";
+import { BanSearchCmd } from "./commands/BanSearchCmd";
+import { ChannelInfoCmd } from "./commands/ChannelInfoCmd";
+import { CleanCmd } from "./commands/CleanCmd";
+import { ContextCmd } from "./commands/ContextCmd";
 import { EmojiInfoCmd } from "./commands/EmojiInfoCmd";
+import { HelpCmd } from "./commands/HelpCmd";
+import { InfoCmd } from "./commands/InfoCmd";
+import { InviteInfoCmd } from "./commands/InviteInfoCmd";
+import { JumboCmd } from "./commands/JumboCmd";
+import { LevelCmd } from "./commands/LevelCmd";
+import { MessageInfoCmd } from "./commands/MessageInfoCmd";
+import { NicknameCmd } from "./commands/NicknameCmd";
+import { NicknameResetCmd } from "./commands/NicknameResetCmd";
+import { PingCmd } from "./commands/PingCmd";
+import { ReloadGuildCmd } from "./commands/ReloadGuildCmd";
+import { RoleInfoCmd } from "./commands/RoleInfoCmd";
+import { RolesCmd } from "./commands/RolesCmd";
+import { SearchCmd } from "./commands/SearchCmd";
+import { ServerInfoCmd } from "./commands/ServerInfoCmd";
+import { SnowflakeInfoCmd } from "./commands/SnowflakeInfoCmd";
+import { SourceCmd } from "./commands/SourceCmd";
+import { UserInfoCmd } from "./commands/UserInfoCmd";
+import { VcdisconnectCmd } from "./commands/VcdisconnectCmd";
+import { VcmoveAllCmd, VcmoveCmd } from "./commands/VcmoveCmd";
+import { activeReloads } from "./guildReloads";
+import { refreshMembersIfNeeded } from "./refreshMembers";
+import { ConfigSchema, UtilityPluginType } from "./types";
 
 const defaultOptions: PluginOptions<UtilityPluginType> = {
   config: {
diff --git a/backend/src/plugins/Utility/commands/AboutCmd.ts b/backend/src/plugins/Utility/commands/AboutCmd.ts
index 1b60fa3c..79b0f1cf 100644
--- a/backend/src/plugins/Utility/commands/AboutCmd.ts
+++ b/backend/src/plugins/Utility/commands/AboutCmd.ts
@@ -1,14 +1,13 @@
-import { utilityCmd } from "../types";
-import { EmbedWith, multiSorter, resolveMember, sorter } from "../../../utils";
-
-import { getCurrentUptime } from "../../../uptime";
+import { GuildChannel, MessageOptions } from "discord.js";
 import humanizeDuration from "humanize-duration";
 import LCL from "last-commit-log";
-import path from "path";
 import moment from "moment-timezone";
 import { rootDir } from "../../../paths";
+import { getCurrentUptime } from "../../../uptime";
+import { EmbedWith, multiSorter, resolveMember, sorter } from "../../../utils";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
-import { GuildChannel, MessageOptions } from "discord.js";
+import { utilityCmd } from "../types";
+
 
 export const AboutCmd = utilityCmd({
   trigger: "about",
diff --git a/backend/src/plugins/Utility/commands/AvatarCmd.ts b/backend/src/plugins/Utility/commands/AvatarCmd.ts
index c267afff..c7489c22 100644
--- a/backend/src/plugins/Utility/commands/AvatarCmd.ts
+++ b/backend/src/plugins/Utility/commands/AvatarCmd.ts
@@ -1,8 +1,8 @@
-import { utilityCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { UnknownUser } from "../../../utils";
-import { sendErrorMessage } from "../../../pluginUtils";
 import { MessageEmbedOptions } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { sendErrorMessage } from "../../../pluginUtils";
+import { UnknownUser } from "../../../utils";
+import { utilityCmd } from "../types";
 
 export const AvatarCmd = utilityCmd({
   trigger: ["avatar", "av"],
diff --git a/backend/src/plugins/Utility/commands/BanSearchCmd.ts b/backend/src/plugins/Utility/commands/BanSearchCmd.ts
index df599b67..40ff318b 100644
--- a/backend/src/plugins/Utility/commands/BanSearchCmd.ts
+++ b/backend/src/plugins/Utility/commands/BanSearchCmd.ts
@@ -1,6 +1,6 @@
-import { utilityCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { archiveSearch, displaySearch, SearchType } from "../search";
+import { utilityCmd } from "../types";
 
 // Separate from BanSearchCmd to avoid a circular reference from ./search.ts
 export const banSearchSignature = {
diff --git a/backend/src/plugins/Utility/commands/ChannelInfoCmd.ts b/backend/src/plugins/Utility/commands/ChannelInfoCmd.ts
index dece87b7..3acfb4b1 100644
--- a/backend/src/plugins/Utility/commands/ChannelInfoCmd.ts
+++ b/backend/src/plugins/Utility/commands/ChannelInfoCmd.ts
@@ -1,7 +1,7 @@
-import { utilityCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage } from "../../../pluginUtils";
 import { getChannelInfoEmbed } from "../functions/getChannelInfoEmbed";
+import { utilityCmd } from "../types";
 
 export const ChannelInfoCmd = utilityCmd({
   trigger: ["channel", "channelinfo"],
diff --git a/backend/src/plugins/Utility/commands/CleanCmd.ts b/backend/src/plugins/Utility/commands/CleanCmd.ts
index 44db25b6..ef307021 100644
--- a/backend/src/plugins/Utility/commands/CleanCmd.ts
+++ b/backend/src/plugins/Utility/commands/CleanCmd.ts
@@ -1,15 +1,15 @@
-import { utilityCmd, UtilityPluginType } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { DAYS, getInviteCodesInString, noop, SECONDS, stripObjectToScalars } from "../../../utils";
-import { getBaseUrl, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-
-import moment from "moment-timezone";
+import { Message, TextChannel, User } from "discord.js";
 import { GuildPluginData } from "knub";
+import moment from "moment-timezone";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { SavedMessage } from "../../../data/entities/SavedMessage";
 import { LogType } from "../../../data/LogType";
-import { allowTimeout } from "../../../RegExpRunner";
 import { ModActionsPlugin } from "../../../plugins/ModActions/ModActionsPlugin";
-import { TextChannel, User, Message } from "discord.js";
+import { getBaseUrl, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import { allowTimeout } from "../../../RegExpRunner";
+import { DAYS, getInviteCodesInString, noop, SECONDS, stripObjectToScalars } from "../../../utils";
+import { utilityCmd, UtilityPluginType } from "../types";
+
 
 const MAX_CLEAN_COUNT = 150;
 const MAX_CLEAN_TIME = 1 * DAYS;
diff --git a/backend/src/plugins/Utility/commands/ContextCmd.ts b/backend/src/plugins/Utility/commands/ContextCmd.ts
index 9a11df10..3d5429aa 100644
--- a/backend/src/plugins/Utility/commands/ContextCmd.ts
+++ b/backend/src/plugins/Utility/commands/ContextCmd.ts
@@ -1,10 +1,10 @@
-import { utilityCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { messageLink } from "../../../utils";
-import { sendErrorMessage } from "../../../pluginUtils";
-
-import { canReadChannel } from "../../../utils/canReadChannel";
 import { TextChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { sendErrorMessage } from "../../../pluginUtils";
+import { messageLink } from "../../../utils";
+import { canReadChannel } from "../../../utils/canReadChannel";
+import { utilityCmd } from "../types";
+
 
 export const ContextCmd = utilityCmd({
   trigger: "context",
diff --git a/backend/src/plugins/Utility/commands/EmojiInfoCmd.ts b/backend/src/plugins/Utility/commands/EmojiInfoCmd.ts
index 90d272d6..8cc7e784 100644
--- a/backend/src/plugins/Utility/commands/EmojiInfoCmd.ts
+++ b/backend/src/plugins/Utility/commands/EmojiInfoCmd.ts
@@ -1,8 +1,8 @@
-import { utilityCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage } from "../../../pluginUtils";
 import { customEmojiRegex } from "../../../utils";
 import { getEmojiInfoEmbed } from "../functions/getEmojiInfoEmbed";
+import { utilityCmd } from "../types";
 
 export const EmojiInfoCmd = utilityCmd({
   trigger: ["emoji", "emojiinfo"],
diff --git a/backend/src/plugins/Utility/commands/HelpCmd.ts b/backend/src/plugins/Utility/commands/HelpCmd.ts
index f677f7d2..d53f19b4 100644
--- a/backend/src/plugins/Utility/commands/HelpCmd.ts
+++ b/backend/src/plugins/Utility/commands/HelpCmd.ts
@@ -1,8 +1,8 @@
-import { utilityCmd } from "../types";
+import { LoadedGuildPlugin } from "knub";
+import { PluginCommandDefinition } from "knub/dist/commands/commandUtils";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { createChunkedMessage } from "../../../utils";
-import { PluginCommandDefinition } from "knub/dist/commands/commandUtils";
-import { LoadedGuildPlugin } from "knub";
+import { utilityCmd } from "../types";
 
 export const HelpCmd = utilityCmd({
   trigger: "help",
diff --git a/backend/src/plugins/Utility/commands/InfoCmd.ts b/backend/src/plugins/Utility/commands/InfoCmd.ts
index 5a13fbed..e2e033c2 100644
--- a/backend/src/plugins/Utility/commands/InfoCmd.ts
+++ b/backend/src/plugins/Utility/commands/InfoCmd.ts
@@ -1,19 +1,19 @@
-import { utilityCmd } from "../types";
+import { getChannelId, getRoleId } from "knub/dist/utils";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage } from "../../../pluginUtils";
-import { getInviteInfoEmbed } from "../functions/getInviteInfoEmbed";
 import { customEmojiRegex, isValidSnowflake, parseInviteCodeInput, resolveInvite, resolveUser } from "../../../utils";
-import { getUserInfoEmbed } from "../functions/getUserInfoEmbed";
-import { resolveMessageTarget } from "../../../utils/resolveMessageTarget";
 import { canReadChannel } from "../../../utils/canReadChannel";
-import { getMessageInfoEmbed } from "../functions/getMessageInfoEmbed";
+import { resolveMessageTarget } from "../../../utils/resolveMessageTarget";
 import { getChannelInfoEmbed } from "../functions/getChannelInfoEmbed";
-import { getServerInfoEmbed } from "../functions/getServerInfoEmbed";
-import { getChannelId, getRoleId } from "knub/dist/utils";
-import { getGuildPreview } from "../functions/getGuildPreview";
-import { getSnowflakeInfoEmbed } from "../functions/getSnowflakeInfoEmbed";
-import { getRoleInfoEmbed } from "../functions/getRoleInfoEmbed";
 import { getEmojiInfoEmbed } from "../functions/getEmojiInfoEmbed";
+import { getGuildPreview } from "../functions/getGuildPreview";
+import { getInviteInfoEmbed } from "../functions/getInviteInfoEmbed";
+import { getMessageInfoEmbed } from "../functions/getMessageInfoEmbed";
+import { getRoleInfoEmbed } from "../functions/getRoleInfoEmbed";
+import { getServerInfoEmbed } from "../functions/getServerInfoEmbed";
+import { getSnowflakeInfoEmbed } from "../functions/getSnowflakeInfoEmbed";
+import { getUserInfoEmbed } from "../functions/getUserInfoEmbed";
+import { utilityCmd } from "../types";
 
 export const InfoCmd = utilityCmd({
   trigger: "info",
diff --git a/backend/src/plugins/Utility/commands/InviteInfoCmd.ts b/backend/src/plugins/Utility/commands/InviteInfoCmd.ts
index a5c7fd9f..bceac2f3 100644
--- a/backend/src/plugins/Utility/commands/InviteInfoCmd.ts
+++ b/backend/src/plugins/Utility/commands/InviteInfoCmd.ts
@@ -1,8 +1,8 @@
-import { utilityCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage } from "../../../pluginUtils";
-import { getInviteInfoEmbed } from "../functions/getInviteInfoEmbed";
 import { parseInviteCodeInput } from "../../../utils";
+import { getInviteInfoEmbed } from "../functions/getInviteInfoEmbed";
+import { utilityCmd } from "../types";
 
 export const InviteInfoCmd = utilityCmd({
   trigger: ["invite", "inviteinfo"],
diff --git a/backend/src/plugins/Utility/commands/JumboCmd.ts b/backend/src/plugins/Utility/commands/JumboCmd.ts
index 276fa257..b54be54d 100644
--- a/backend/src/plugins/Utility/commands/JumboCmd.ts
+++ b/backend/src/plugins/Utility/commands/JumboCmd.ts
@@ -1,10 +1,10 @@
-import { utilityCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { downloadFile, isEmoji, SECONDS } from "../../../utils";
 import fs from "fs";
 import sharp from "sharp";
 import twemoji from "twemoji";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage } from "../../../pluginUtils";
+import { downloadFile, isEmoji, SECONDS } from "../../../utils";
+import { utilityCmd } from "../types";
 
 const fsp = fs.promises;
 
diff --git a/backend/src/plugins/Utility/commands/LevelCmd.ts b/backend/src/plugins/Utility/commands/LevelCmd.ts
index 70b6ceae..404412b5 100644
--- a/backend/src/plugins/Utility/commands/LevelCmd.ts
+++ b/backend/src/plugins/Utility/commands/LevelCmd.ts
@@ -1,6 +1,6 @@
-import { utilityCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { helpers } from "knub";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { utilityCmd } from "../types";
 
 const { getMemberLevel } = helpers;
 
diff --git a/backend/src/plugins/Utility/commands/MessageInfoCmd.ts b/backend/src/plugins/Utility/commands/MessageInfoCmd.ts
index e46dbc3a..04115cf6 100644
--- a/backend/src/plugins/Utility/commands/MessageInfoCmd.ts
+++ b/backend/src/plugins/Utility/commands/MessageInfoCmd.ts
@@ -1,8 +1,8 @@
-import { utilityCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage } from "../../../pluginUtils";
-import { getMessageInfoEmbed } from "../functions/getMessageInfoEmbed";
 import { canReadChannel } from "../../../utils/canReadChannel";
+import { getMessageInfoEmbed } from "../functions/getMessageInfoEmbed";
+import { utilityCmd } from "../types";
 
 export const MessageInfoCmd = utilityCmd({
   trigger: ["message", "messageinfo"],
diff --git a/backend/src/plugins/Utility/commands/NicknameCmd.ts b/backend/src/plugins/Utility/commands/NicknameCmd.ts
index b2da21cf..3dc803a2 100644
--- a/backend/src/plugins/Utility/commands/NicknameCmd.ts
+++ b/backend/src/plugins/Utility/commands/NicknameCmd.ts
@@ -1,7 +1,7 @@
-import { utilityCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { errorMessage } from "../../../utils";
 import { canActOn, sendSuccessMessage } from "../../../pluginUtils";
+import { errorMessage } from "../../../utils";
+import { utilityCmd } from "../types";
 
 export const NicknameCmd = utilityCmd({
   trigger: ["nickname", "nick"],
diff --git a/backend/src/plugins/Utility/commands/NicknameResetCmd.ts b/backend/src/plugins/Utility/commands/NicknameResetCmd.ts
index e2e5db00..91894a40 100644
--- a/backend/src/plugins/Utility/commands/NicknameResetCmd.ts
+++ b/backend/src/plugins/Utility/commands/NicknameResetCmd.ts
@@ -1,7 +1,7 @@
-import { utilityCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { errorMessage } from "../../../utils";
 import { canActOn, sendSuccessMessage } from "../../../pluginUtils";
+import { errorMessage } from "../../../utils";
+import { utilityCmd } from "../types";
 
 export const NicknameResetCmd = utilityCmd({
   trigger: ["nickname reset", "nick reset"],
diff --git a/backend/src/plugins/Utility/commands/PingCmd.ts b/backend/src/plugins/Utility/commands/PingCmd.ts
index 08030f77..8739bfde 100644
--- a/backend/src/plugins/Utility/commands/PingCmd.ts
+++ b/backend/src/plugins/Utility/commands/PingCmd.ts
@@ -1,6 +1,6 @@
-import { utilityCmd } from "../types";
-import { noop, trimLines } from "../../../utils";
 import { Message } from "discord.js";
+import { noop, trimLines } from "../../../utils";
+import { utilityCmd } from "../types";
 
 const { performance } = require("perf_hooks");
 
diff --git a/backend/src/plugins/Utility/commands/ReloadGuildCmd.ts b/backend/src/plugins/Utility/commands/ReloadGuildCmd.ts
index 1fc824e6..53dd027c 100644
--- a/backend/src/plugins/Utility/commands/ReloadGuildCmd.ts
+++ b/backend/src/plugins/Utility/commands/ReloadGuildCmd.ts
@@ -1,7 +1,7 @@
+import { TextChannel } from "discord.js";
+import { activeReloads } from "../guildReloads";
 import { utilityCmd } from "../types";
 
-import { activeReloads } from "../guildReloads";
-import { TextChannel } from "discord.js";
 
 export const ReloadGuildCmd = utilityCmd({
   trigger: "reload_guild",
diff --git a/backend/src/plugins/Utility/commands/RoleInfoCmd.ts b/backend/src/plugins/Utility/commands/RoleInfoCmd.ts
index 48406cb3..38357054 100644
--- a/backend/src/plugins/Utility/commands/RoleInfoCmd.ts
+++ b/backend/src/plugins/Utility/commands/RoleInfoCmd.ts
@@ -1,7 +1,6 @@
-import { utilityCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { sendErrorMessage } from "../../../pluginUtils";
 import { getRoleInfoEmbed } from "../functions/getRoleInfoEmbed";
+import { utilityCmd } from "../types";
 
 export const RoleInfoCmd = utilityCmd({
   trigger: ["roleinfo"],
diff --git a/backend/src/plugins/Utility/commands/RolesCmd.ts b/backend/src/plugins/Utility/commands/RolesCmd.ts
index ea6ab800..b89285f3 100644
--- a/backend/src/plugins/Utility/commands/RolesCmd.ts
+++ b/backend/src/plugins/Utility/commands/RolesCmd.ts
@@ -1,10 +1,10 @@
-import { utilityCmd } from "../types";
+import { Role, TextChannel } from "discord.js";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-
+import { sendErrorMessage } from "../../../pluginUtils";
 import { chunkArray, sorter, trimLines } from "../../../utils";
 import { refreshMembersIfNeeded } from "../refreshMembers";
-import { sendErrorMessage } from "../../../pluginUtils";
-import { Role, TextChannel } from "discord.js";
+import { utilityCmd } from "../types";
+
 
 export const RolesCmd = utilityCmd({
   trigger: "roles",
diff --git a/backend/src/plugins/Utility/commands/SearchCmd.ts b/backend/src/plugins/Utility/commands/SearchCmd.ts
index 4b8038db..f187dba8 100644
--- a/backend/src/plugins/Utility/commands/SearchCmd.ts
+++ b/backend/src/plugins/Utility/commands/SearchCmd.ts
@@ -1,6 +1,6 @@
-import { utilityCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { archiveSearch, displaySearch, SearchType } from "../search";
+import { utilityCmd } from "../types";
 
 // Separate from SearchCmd to avoid a circular reference from ./search.ts
 export const searchCmdSignature = {
diff --git a/backend/src/plugins/Utility/commands/ServerInfoCmd.ts b/backend/src/plugins/Utility/commands/ServerInfoCmd.ts
index aaf74c57..d39abc10 100644
--- a/backend/src/plugins/Utility/commands/ServerInfoCmd.ts
+++ b/backend/src/plugins/Utility/commands/ServerInfoCmd.ts
@@ -1,7 +1,7 @@
-import { utilityCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
 import { sendErrorMessage } from "../../../pluginUtils";
 import { getServerInfoEmbed } from "../functions/getServerInfoEmbed";
+import { utilityCmd } from "../types";
 
 export const ServerInfoCmd = utilityCmd({
   trigger: ["server", "serverinfo"],
diff --git a/backend/src/plugins/Utility/commands/SnowflakeInfoCmd.ts b/backend/src/plugins/Utility/commands/SnowflakeInfoCmd.ts
index b2f5bb30..1320323e 100644
--- a/backend/src/plugins/Utility/commands/SnowflakeInfoCmd.ts
+++ b/backend/src/plugins/Utility/commands/SnowflakeInfoCmd.ts
@@ -1,8 +1,6 @@
-import { utilityCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { sendErrorMessage } from "../../../pluginUtils";
-import { getChannelInfoEmbed } from "../functions/getChannelInfoEmbed";
 import { getSnowflakeInfoEmbed } from "../functions/getSnowflakeInfoEmbed";
+import { utilityCmd } from "../types";
 
 export const SnowflakeInfoCmd = utilityCmd({
   trigger: ["snowflake", "snowflakeinfo"],
diff --git a/backend/src/plugins/Utility/commands/SourceCmd.ts b/backend/src/plugins/Utility/commands/SourceCmd.ts
index 5a5d0c28..075c974e 100644
--- a/backend/src/plugins/Utility/commands/SourceCmd.ts
+++ b/backend/src/plugins/Utility/commands/SourceCmd.ts
@@ -1,10 +1,9 @@
-import { utilityCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { errorMessage } from "../../../utils";
-import { getBaseUrl, sendErrorMessage } from "../../../pluginUtils";
 import moment from "moment-timezone";
-
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { getBaseUrl, sendErrorMessage } from "../../../pluginUtils";
 import { canReadChannel } from "../../../utils/canReadChannel";
+import { utilityCmd } from "../types";
+
 
 export const SourceCmd = utilityCmd({
   trigger: "source",
diff --git a/backend/src/plugins/Utility/commands/UserInfoCmd.ts b/backend/src/plugins/Utility/commands/UserInfoCmd.ts
index b7ceba39..092692d3 100644
--- a/backend/src/plugins/Utility/commands/UserInfoCmd.ts
+++ b/backend/src/plugins/Utility/commands/UserInfoCmd.ts
@@ -1,7 +1,7 @@
-import { utilityCmd } from "../types";
 import { commandTypeHelpers as ct } from "../../../commandTypes";
-import { getUserInfoEmbed } from "../functions/getUserInfoEmbed";
 import { sendErrorMessage } from "../../../pluginUtils";
+import { getUserInfoEmbed } from "../functions/getUserInfoEmbed";
+import { utilityCmd } from "../types";
 
 export const UserInfoCmd = utilityCmd({
   trigger: ["user", "userinfo", "whois"],
diff --git a/backend/src/plugins/Utility/commands/VcdisconnectCmd.ts b/backend/src/plugins/Utility/commands/VcdisconnectCmd.ts
index d69c0fad..a750fe02 100644
--- a/backend/src/plugins/Utility/commands/VcdisconnectCmd.ts
+++ b/backend/src/plugins/Utility/commands/VcdisconnectCmd.ts
@@ -1,16 +1,12 @@
-import { utilityCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import {
-  channelMentionRegex,
-  errorMessage,
-  isSnowflake,
-  simpleClosestStringMatch,
-  stripObjectToScalars,
-} from "../../../utils";
-import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-
-import { LogType } from "../../../data/LogType";
 import { VoiceChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { LogType } from "../../../data/LogType";
+import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import {
+    stripObjectToScalars
+} from "../../../utils";
+import { utilityCmd } from "../types";
+
 
 export const VcdisconnectCmd = utilityCmd({
   trigger: ["vcdisconnect", "vcdisc", "vcdc", "vckick", "vck"],
diff --git a/backend/src/plugins/Utility/commands/VcmoveCmd.ts b/backend/src/plugins/Utility/commands/VcmoveCmd.ts
index 87c2ef74..8b5b0aa5 100644
--- a/backend/src/plugins/Utility/commands/VcmoveCmd.ts
+++ b/backend/src/plugins/Utility/commands/VcmoveCmd.ts
@@ -1,17 +1,17 @@
-import { utilityCmd } from "../types";
-import { commandTypeHelpers as ct } from "../../../commandTypes";
-import {
-  channelMentionRegex,
-  errorMessage,
-  isSnowflake,
-  resolveMember,
-  simpleClosestStringMatch,
-  stripObjectToScalars,
-} from "../../../utils";
-import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
-
-import { LogType } from "../../../data/LogType";
 import { VoiceChannel } from "discord.js";
+import { commandTypeHelpers as ct } from "../../../commandTypes";
+import { LogType } from "../../../data/LogType";
+import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
+import {
+    channelMentionRegex,
+
+    isSnowflake,
+
+    simpleClosestStringMatch,
+    stripObjectToScalars
+} from "../../../utils";
+import { utilityCmd } from "../types";
+
 
 export const VcmoveCmd = utilityCmd({
   trigger: "vcmove",
diff --git a/backend/src/plugins/Utility/functions/getChannelInfoEmbed.ts b/backend/src/plugins/Utility/functions/getChannelInfoEmbed.ts
index 69b3d10c..8dcfef3b 100644
--- a/backend/src/plugins/Utility/functions/getChannelInfoEmbed.ts
+++ b/backend/src/plugins/Utility/functions/getChannelInfoEmbed.ts
@@ -1,12 +1,12 @@
-import { GuildPluginData } from "knub";
-import { UtilityPluginType } from "../types";
-
-import moment from "moment-timezone";
+import { MessageEmbedOptions, StageChannel, VoiceChannel } from "discord.js";
 import humanizeDuration from "humanize-duration";
+import { GuildPluginData } from "knub";
+import moment from "moment-timezone";
+import { ChannelTypeStrings } from "src/types";
 import { EmbedWith, formatNumber, preEmbedPadding, trimLines } from "../../../utils";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
-import { MessageEmbedOptions, Constants, VoiceChannel, StageChannel } from "discord.js";
-import { ChannelTypeStrings } from "src/types";
+import { UtilityPluginType } from "../types";
+
 
 const TEXT_CHANNEL_ICON =
   "https://cdn.discordapp.com/attachments/740650744830623756/740656843545772062/text-channel.png";
diff --git a/backend/src/plugins/Utility/functions/getEmojiInfoEmbed.ts b/backend/src/plugins/Utility/functions/getEmojiInfoEmbed.ts
index 46ce8ab7..02228924 100644
--- a/backend/src/plugins/Utility/functions/getEmojiInfoEmbed.ts
+++ b/backend/src/plugins/Utility/functions/getEmojiInfoEmbed.ts
@@ -1,7 +1,7 @@
-import { GuildPluginData } from "knub";
-import { UtilityPluginType } from "../types";
-import { trimLines, preEmbedPadding, EmbedWith } from "../../../utils";
 import { MessageEmbedOptions } from "discord.js";
+import { GuildPluginData } from "knub";
+import { EmbedWith, preEmbedPadding, trimLines } from "../../../utils";
+import { UtilityPluginType } from "../types";
 
 export async function getEmojiInfoEmbed(
   pluginData: GuildPluginData<UtilityPluginType>,
diff --git a/backend/src/plugins/Utility/functions/getInviteInfoEmbed.ts b/backend/src/plugins/Utility/functions/getInviteInfoEmbed.ts
index 78be9002..046c6035 100644
--- a/backend/src/plugins/Utility/functions/getInviteInfoEmbed.ts
+++ b/backend/src/plugins/Utility/functions/getInviteInfoEmbed.ts
@@ -1,24 +1,23 @@
+import { MessageEmbedOptions } from "discord.js";
+import humanizeDuration from "humanize-duration";
 import { GuildPluginData } from "knub";
+import moment from "moment-timezone";
+import { ChannelTypeStrings } from "src/types";
+import {
+    EmbedWith,
+
+    formatNumber,
+    GroupDMInvite,
+    inviteHasCounts,
+    isGroupDMInvite,
+    isGuildInvite,
+    preEmbedPadding,
+    resolveInvite,
+    trimLines
+} from "../../../utils";
+import { snowflakeToTimestamp } from "../../../utils/snowflakeToTimestamp";
 import { UtilityPluginType } from "../types";
 
-import { snowflakeToTimestamp } from "../../../utils/snowflakeToTimestamp";
-import moment from "moment-timezone";
-import humanizeDuration from "humanize-duration";
-import {
-  embedPadding,
-  EmbedWith,
-  emptyEmbedValue,
-  formatNumber,
-  GroupDMInvite,
-  inviteHasCounts,
-  isGroupDMInvite,
-  isGuildInvite,
-  preEmbedPadding,
-  resolveInvite,
-  trimLines,
-} from "../../../utils";
-import { MessageEmbedOptions, Constants, Invite } from "discord.js";
-import { ChannelTypeStrings } from "src/types";
 
 export async function getInviteInfoEmbed(
   pluginData: GuildPluginData<UtilityPluginType>,
diff --git a/backend/src/plugins/Utility/functions/getMessageInfoEmbed.ts b/backend/src/plugins/Utility/functions/getMessageInfoEmbed.ts
index 2b3ad188..d411be4e 100644
--- a/backend/src/plugins/Utility/functions/getMessageInfoEmbed.ts
+++ b/backend/src/plugins/Utility/functions/getMessageInfoEmbed.ts
@@ -1,13 +1,13 @@
+import { MessageEmbedOptions, TextChannel } from "discord.js";
+import humanizeDuration from "humanize-duration";
 import { GuildPluginData } from "knub";
+import { getDefaultPrefix } from "knub/dist/commands/commandUtils";
+import moment from "moment-timezone";
+import { MessageTypeStrings } from "src/types";
+import { chunkMessageLines, EmbedWith, messageLink, preEmbedPadding, trimEmptyLines, trimLines } from "../../../utils";
+import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
 import { UtilityPluginType } from "../types";
 
-import moment from "moment-timezone";
-import humanizeDuration from "humanize-duration";
-import { chunkMessageLines, EmbedWith, messageLink, preEmbedPadding, trimEmptyLines, trimLines } from "../../../utils";
-import { getDefaultPrefix } from "knub/dist/commands/commandUtils";
-import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
-import { MessageEmbedOptions, Constants, TextChannel } from "discord.js";
-import { MessageTypeStrings } from "src/types";
 
 const MESSAGE_ICON = "https://cdn.discordapp.com/attachments/740650744830623756/740685652152025088/message.png";
 
diff --git a/backend/src/plugins/Utility/functions/getRoleInfoEmbed.ts b/backend/src/plugins/Utility/functions/getRoleInfoEmbed.ts
index 6bf58c3e..4f16c31a 100644
--- a/backend/src/plugins/Utility/functions/getRoleInfoEmbed.ts
+++ b/backend/src/plugins/Utility/functions/getRoleInfoEmbed.ts
@@ -1,10 +1,10 @@
-import { GuildPluginData } from "knub";
-import { UtilityPluginType } from "../types";
-import { trimLines, preEmbedPadding, EmbedWith } from "../../../utils";
-import moment from "moment-timezone";
+import { MessageEmbedOptions, Role } from "discord.js";
 import humanizeDuration from "humanize-duration";
+import { GuildPluginData } from "knub";
+import moment from "moment-timezone";
+import { EmbedWith, preEmbedPadding, trimLines } from "../../../utils";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
-import { Role, MessageEmbedOptions } from "discord.js";
+import { UtilityPluginType } from "../types";
 
 const MENTION_ICON = "https://cdn.discordapp.com/attachments/705009450855039042/839284872152481792/mention.png";
 
diff --git a/backend/src/plugins/Utility/functions/getServerInfoEmbed.ts b/backend/src/plugins/Utility/functions/getServerInfoEmbed.ts
index fdbd3d66..9e4f40b2 100644
--- a/backend/src/plugins/Utility/functions/getServerInfoEmbed.ts
+++ b/backend/src/plugins/Utility/functions/getServerInfoEmbed.ts
@@ -1,23 +1,22 @@
-import { GuildPluginData } from "knub";
-import { UtilityPluginType } from "../types";
-import {
-  embedPadding,
-  EmbedWith,
-  formatNumber,
-  inviteHasCounts,
-  memoize,
-  MINUTES,
-  preEmbedPadding,
-  resolveInvite,
-  resolveUser,
-  trimLines,
-} from "../../../utils";
-
-import moment from "moment-timezone";
+import { CategoryChannel, MessageEmbedOptions, TextChannel, VoiceChannel } from "discord.js";
 import humanizeDuration from "humanize-duration";
-import { getGuildPreview } from "./getGuildPreview";
+import { GuildPluginData } from "knub";
+import moment from "moment-timezone";
+import {
+    EmbedWith,
+    formatNumber,
+    inviteHasCounts,
+    memoize,
+    MINUTES,
+    preEmbedPadding,
+    resolveInvite,
+    resolveUser,
+    trimLines
+} from "../../../utils";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
-import { MessageEmbedOptions, CategoryChannel, TextChannel, VoiceChannel } from "discord.js";
+import { UtilityPluginType } from "../types";
+import { getGuildPreview } from "./getGuildPreview";
+
 
 export async function getServerInfoEmbed(
   pluginData: GuildPluginData<UtilityPluginType>,
diff --git a/backend/src/plugins/Utility/functions/getSnowflakeInfoEmbed.ts b/backend/src/plugins/Utility/functions/getSnowflakeInfoEmbed.ts
index 0cec52bd..400f75b8 100644
--- a/backend/src/plugins/Utility/functions/getSnowflakeInfoEmbed.ts
+++ b/backend/src/plugins/Utility/functions/getSnowflakeInfoEmbed.ts
@@ -1,20 +1,13 @@
-import { GuildPluginData } from "knub";
-import { UtilityPluginType } from "../types";
-import {
-  UnknownUser,
-  trimLines,
-  embedPadding,
-  resolveMember,
-  resolveUser,
-  preEmbedPadding,
-  EmbedWith,
-} from "../../../utils";
-import moment from "moment-timezone";
-import { CaseTypes } from "../../../data/CaseTypes";
+import { MessageEmbedOptions } from "discord.js";
 import humanizeDuration from "humanize-duration";
+import { GuildPluginData } from "knub";
+import moment from "moment-timezone";
+import {
+    EmbedWith, preEmbedPadding
+} from "../../../utils";
 import { snowflakeToTimestamp } from "../../../utils/snowflakeToTimestamp";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
-import { MessageEmbedOptions } from "discord.js";
+import { UtilityPluginType } from "../types";
 
 const SNOWFLAKE_ICON = "https://cdn.discordapp.com/attachments/740650744830623756/742020790471491668/snowflake.png";
 
diff --git a/backend/src/plugins/Utility/functions/getUserInfoEmbed.ts b/backend/src/plugins/Utility/functions/getUserInfoEmbed.ts
index 09c2fc59..7dc72d35 100644
--- a/backend/src/plugins/Utility/functions/getUserInfoEmbed.ts
+++ b/backend/src/plugins/Utility/functions/getUserInfoEmbed.ts
@@ -1,21 +1,16 @@
+import { MessageEmbedOptions, Role } from "discord.js";
+import humanizeDuration from "humanize-duration";
 import { GuildPluginData } from "knub";
-import { UtilityPluginType } from "../types";
-import {
-  UnknownUser,
-  trimLines,
-  embedPadding,
-  resolveMember,
-  resolveUser,
-  preEmbedPadding,
-  sorter,
-  messageLink,
-  EmbedWith,
-} from "../../../utils";
 import moment from "moment-timezone";
 import { CaseTypes } from "../../../data/CaseTypes";
-import humanizeDuration from "humanize-duration";
+import {
+    EmbedWith, messageLink, preEmbedPadding, resolveMember,
+    resolveUser,
+
+    sorter, trimLines, UnknownUser
+} from "../../../utils";
 import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
-import { MessageEmbedOptions, Role } from "discord.js";
+import { UtilityPluginType } from "../types";
 
 export async function getUserInfoEmbed(
   pluginData: GuildPluginData<UtilityPluginType>,
diff --git a/backend/src/plugins/Utility/search.ts b/backend/src/plugins/Utility/search.ts
index a42bd150..0a36ebd9 100644
--- a/backend/src/plugins/Utility/search.ts
+++ b/backend/src/plugins/Utility/search.ts
@@ -1,20 +1,20 @@
-import moment from "moment-timezone";
+import { GuildMember, Message, Permissions, TextChannel, User } from "discord.js";
 import escapeStringRegexp from "escape-string-regexp";
-import { isFullMessage, MINUTES, multiSorter, noop, sorter, trimLines } from "../../utils";
-import { getBaseUrl, sendErrorMessage } from "../../pluginUtils";
 import { GuildPluginData } from "knub";
 import { ArgsFromSignatureOrArray } from "knub/dist/commands/commandUtils";
-import { searchCmdSignature } from "./commands/SearchCmd";
-import { banSearchSignature } from "./commands/BanSearchCmd";
-import { UtilityPluginType } from "./types";
-import { refreshMembersIfNeeded } from "./refreshMembers";
-import { getUserInfoEmbed } from "./functions/getUserInfoEmbed";
+import moment from "moment-timezone";
+import { getBaseUrl, sendErrorMessage } from "../../pluginUtils";
 import { allowTimeout, RegExpRunner } from "../../RegExpRunner";
-import { inputPatternToRegExp, InvalidRegexError } from "../../validatorUtils";
+import { isFullMessage, MINUTES, multiSorter, noop, sorter, trimLines } from "../../utils";
 import { asyncFilter } from "../../utils/async";
-import Timeout = NodeJS.Timeout;
 import { hasDiscordPermissions } from "../../utils/hasDiscordPermissions";
-import { Message, User, Constants, TextChannel, GuildMember, Permissions } from "discord.js";
+import { inputPatternToRegExp, InvalidRegexError } from "../../validatorUtils";
+import { banSearchSignature } from "./commands/BanSearchCmd";
+import { searchCmdSignature } from "./commands/SearchCmd";
+import { getUserInfoEmbed } from "./functions/getUserInfoEmbed";
+import { refreshMembersIfNeeded } from "./refreshMembers";
+import { UtilityPluginType } from "./types";
+import Timeout = NodeJS.Timeout;
 
 const SEARCH_RESULTS_PER_PAGE = 15;
 const SEARCH_ID_RESULTS_PER_PAGE = 50;
diff --git a/backend/src/plugins/Utility/types.ts b/backend/src/plugins/Utility/types.ts
index bea8f6c3..6d02be57 100644
--- a/backend/src/plugins/Utility/types.ts
+++ b/backend/src/plugins/Utility/types.ts
@@ -1,9 +1,9 @@
 import * as t from "io-ts";
 import { BasePluginType, typedGuildCommand, typedGuildEventListener } from "knub";
-import { GuildLogs } from "../../data/GuildLogs";
-import { GuildCases } from "../../data/GuildCases";
-import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { GuildArchives } from "../../data/GuildArchives";
+import { GuildCases } from "../../data/GuildCases";
+import { GuildLogs } from "../../data/GuildLogs";
+import { GuildSavedMessages } from "../../data/GuildSavedMessages";
 import { Supporters } from "../../data/Supporters";
 import { RegExpRunner } from "../../RegExpRunner";
 
diff --git a/backend/src/plugins/WelcomeMessage/WelcomeMessagePlugin.ts b/backend/src/plugins/WelcomeMessage/WelcomeMessagePlugin.ts
index a5899a03..c311c794 100644
--- a/backend/src/plugins/WelcomeMessage/WelcomeMessagePlugin.ts
+++ b/backend/src/plugins/WelcomeMessage/WelcomeMessagePlugin.ts
@@ -1,8 +1,8 @@
-import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { PluginOptions } from "knub";
-import { ConfigSchema, WelcomeMessagePluginType } from "./types";
 import { GuildLogs } from "../../data/GuildLogs";
+import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
 import { SendWelcomeMessageEvt } from "./events/SendWelcomeMessageEvt";
+import { ConfigSchema, WelcomeMessagePluginType } from "./types";
 
 const defaultOptions: PluginOptions<WelcomeMessagePluginType> = {
   config: {
diff --git a/backend/src/plugins/WelcomeMessage/events/SendWelcomeMessageEvt.ts b/backend/src/plugins/WelcomeMessage/events/SendWelcomeMessageEvt.ts
index 50d54b94..53f2a630 100644
--- a/backend/src/plugins/WelcomeMessage/events/SendWelcomeMessageEvt.ts
+++ b/backend/src/plugins/WelcomeMessage/events/SendWelcomeMessageEvt.ts
@@ -1,10 +1,10 @@
-import { welcomeMessageEvt } from "../types";
+import { TextChannel } from "discord.js";
+import { LogType } from "../../../data/LogType";
 import { renderTemplate, TemplateParseError } from "../../../templateFormatter";
 import { createChunkedMessage, stripObjectToScalars } from "../../../utils";
-import { LogType } from "../../../data/LogType";
-
 import { sendDM } from "../../../utils/sendDM";
-import { TextChannel } from "discord.js";
+import { welcomeMessageEvt } from "../types";
+
 
 export const SendWelcomeMessageEvt = welcomeMessageEvt({
   event: "guildMemberAdd",
diff --git a/backend/src/plugins/WelcomeMessage/types.ts b/backend/src/plugins/WelcomeMessage/types.ts
index 7f99b402..c4a995da 100644
--- a/backend/src/plugins/WelcomeMessage/types.ts
+++ b/backend/src/plugins/WelcomeMessage/types.ts
@@ -1,7 +1,7 @@
 import * as t from "io-ts";
 import { BasePluginType, typedGuildEventListener } from "knub";
-import { tNullable } from "../../utils";
 import { GuildLogs } from "../../data/GuildLogs";
+import { tNullable } from "../../utils";
 
 export const ConfigSchema = t.type({
   send_dm: t.boolean,
diff --git a/backend/src/plugins/ZeppelinPluginBlueprint.ts b/backend/src/plugins/ZeppelinPluginBlueprint.ts
index f55bd0c6..76177e9c 100644
--- a/backend/src/plugins/ZeppelinPluginBlueprint.ts
+++ b/backend/src/plugins/ZeppelinPluginBlueprint.ts
@@ -1,17 +1,20 @@
-import {
-  BasePluginType,
-  typedGlobalPlugin,
-  GlobalPluginBlueprint,
-  GlobalPluginData,
-  typedGuildPlugin,
-  GuildPluginBlueprint,
-  GuildPluginData,
-} from "knub";
 import * as t from "io-ts";
+import {
+    BasePluginType,
+
+    GlobalPluginBlueprint,
+    GlobalPluginData,
+
+    GuildPluginBlueprint,
+    GuildPluginData, typedGlobalPlugin,
+
+
+    typedGuildPlugin
+} from "knub";
+import { PluginOptions } from "knub/dist/config/configTypes";
+import { Awaitable } from "knub/dist/utils";
 import { getPluginConfigPreprocessor } from "../pluginUtils";
 import { TMarkdown } from "../types";
-import { Awaitable } from "knub/dist/utils";
-import { PluginOptions } from "knub/dist/config/configTypes";
 
 /**
  * GUILD PLUGINS
diff --git a/backend/src/plugins/availablePlugins.ts b/backend/src/plugins/availablePlugins.ts
index e1e4e936..3f0568f6 100644
--- a/backend/src/plugins/availablePlugins.ts
+++ b/backend/src/plugins/availablePlugins.ts
@@ -1,38 +1,38 @@
-import { UtilityPlugin } from "./Utility/UtilityPlugin";
-import { LocateUserPlugin } from "./LocateUser/LocateUserPlugin";
-import { ZeppelinGlobalPluginBlueprint, ZeppelinGuildPluginBlueprint } from "./ZeppelinPluginBlueprint";
-import { PersistPlugin } from "./Persist/PersistPlugin";
-import { NameHistoryPlugin } from "./NameHistory/NameHistoryPlugin";
-import { MessageSaverPlugin } from "./MessageSaver/MessageSaverPlugin";
-import { AutoReactionsPlugin } from "./AutoReactions/AutoReactionsPlugin";
-import { RemindersPlugin } from "./Reminders/RemindersPlugin";
-import { UsernameSaverPlugin } from "./UsernameSaver/UsernameSaverPlugin";
-import { WelcomeMessagePlugin } from "./WelcomeMessage/WelcomeMessagePlugin";
-import { PingableRolesPlugin } from "./PingableRoles/PingableRolesPlugin";
-import { GuildConfigReloaderPlugin } from "./GuildConfigReloader/GuildConfigReloaderPlugin";
-import { CasesPlugin } from "./Cases/CasesPlugin";
-import { MutesPlugin } from "./Mutes/MutesPlugin";
-import { TagsPlugin } from "./Tags/TagsPlugin";
-import { ModActionsPlugin } from "./ModActions/ModActionsPlugin";
-import { PostPlugin } from "./Post/PostPlugin";
 import { AutoDeletePlugin } from "./AutoDelete/AutoDeletePlugin";
-import { GuildInfoSaverPlugin } from "./GuildInfoSaver/GuildInfoSaverPlugin";
-import { CensorPlugin } from "./Censor/CensorPlugin";
-import { RolesPlugin } from "./Roles/RolesPlugin";
-import { SlowmodePlugin } from "./Slowmode/SlowmodePlugin";
-import { StarboardPlugin } from "./Starboard/StarboardPlugin";
-import { ChannelArchiverPlugin } from "./ChannelArchiver/ChannelArchiverPlugin";
-import { LogsPlugin } from "./Logs/LogsPlugin";
-import { SelfGrantableRolesPlugin } from "./SelfGrantableRoles/SelfGrantableRolesPlugin";
-import { SpamPlugin } from "./Spam/SpamPlugin";
-import { ReactionRolesPlugin } from "./ReactionRoles/ReactionRolesPlugin";
 import { AutomodPlugin } from "./Automod/AutomodPlugin";
-import { CompanionChannelsPlugin } from "./CompanionChannels/CompanionChannelsPlugin";
-import { CustomEventsPlugin } from "./CustomEvents/CustomEventsPlugin";
+import { AutoReactionsPlugin } from "./AutoReactions/AutoReactionsPlugin";
 import { BotControlPlugin } from "./BotControl/BotControlPlugin";
-import { GuildAccessMonitorPlugin } from "./GuildAccessMonitor/GuildAccessMonitorPlugin";
-import { TimeAndDatePlugin } from "./TimeAndDate/TimeAndDatePlugin";
+import { CasesPlugin } from "./Cases/CasesPlugin";
+import { CensorPlugin } from "./Censor/CensorPlugin";
+import { ChannelArchiverPlugin } from "./ChannelArchiver/ChannelArchiverPlugin";
+import { CompanionChannelsPlugin } from "./CompanionChannels/CompanionChannelsPlugin";
 import { CountersPlugin } from "./Counters/CountersPlugin";
+import { CustomEventsPlugin } from "./CustomEvents/CustomEventsPlugin";
+import { GuildAccessMonitorPlugin } from "./GuildAccessMonitor/GuildAccessMonitorPlugin";
+import { GuildConfigReloaderPlugin } from "./GuildConfigReloader/GuildConfigReloaderPlugin";
+import { GuildInfoSaverPlugin } from "./GuildInfoSaver/GuildInfoSaverPlugin";
+import { LocateUserPlugin } from "./LocateUser/LocateUserPlugin";
+import { LogsPlugin } from "./Logs/LogsPlugin";
+import { MessageSaverPlugin } from "./MessageSaver/MessageSaverPlugin";
+import { ModActionsPlugin } from "./ModActions/ModActionsPlugin";
+import { MutesPlugin } from "./Mutes/MutesPlugin";
+import { NameHistoryPlugin } from "./NameHistory/NameHistoryPlugin";
+import { PersistPlugin } from "./Persist/PersistPlugin";
+import { PingableRolesPlugin } from "./PingableRoles/PingableRolesPlugin";
+import { PostPlugin } from "./Post/PostPlugin";
+import { ReactionRolesPlugin } from "./ReactionRoles/ReactionRolesPlugin";
+import { RemindersPlugin } from "./Reminders/RemindersPlugin";
+import { RolesPlugin } from "./Roles/RolesPlugin";
+import { SelfGrantableRolesPlugin } from "./SelfGrantableRoles/SelfGrantableRolesPlugin";
+import { SlowmodePlugin } from "./Slowmode/SlowmodePlugin";
+import { SpamPlugin } from "./Spam/SpamPlugin";
+import { StarboardPlugin } from "./Starboard/StarboardPlugin";
+import { TagsPlugin } from "./Tags/TagsPlugin";
+import { TimeAndDatePlugin } from "./TimeAndDate/TimeAndDatePlugin";
+import { UsernameSaverPlugin } from "./UsernameSaver/UsernameSaverPlugin";
+import { UtilityPlugin } from "./Utility/UtilityPlugin";
+import { WelcomeMessagePlugin } from "./WelcomeMessage/WelcomeMessagePlugin";
+import { ZeppelinGlobalPluginBlueprint, ZeppelinGuildPluginBlueprint } from "./ZeppelinPluginBlueprint";
 
 // prettier-ignore
 export const guildPlugins: Array<ZeppelinGuildPluginBlueprint<any>> = [
diff --git a/backend/src/templateFormatter.test.ts b/backend/src/templateFormatter.test.ts
index 93a804b9..0d692e8b 100644
--- a/backend/src/templateFormatter.test.ts
+++ b/backend/src/templateFormatter.test.ts
@@ -1,5 +1,5 @@
-import { parseTemplate, renderParsedTemplate, renderTemplate } from "./templateFormatter";
 import test from "ava";
+import { parseTemplate, renderParsedTemplate, renderTemplate } from "./templateFormatter";
 
 test("Parses plain string templates correctly", t => {
   const result = parseTemplate("foo bar baz");
diff --git a/backend/src/templateFormatter.ts b/backend/src/templateFormatter.ts
index 865da3d2..145d7f1d 100644
--- a/backend/src/templateFormatter.ts
+++ b/backend/src/templateFormatter.ts
@@ -1,5 +1,5 @@
-import { get, has } from "./utils";
 import seedrandom from "seedrandom";
+import { get, has } from "./utils";
 
 const TEMPLATE_CACHE_SIZE = 200;
 const templateCache: Map<string, ParsedTemplate> = new Map();
diff --git a/backend/src/types.ts b/backend/src/types.ts
index add1d061..27286147 100644
--- a/backend/src/types.ts
+++ b/backend/src/types.ts
@@ -1,5 +1,5 @@
-import { BaseConfig, Knub } from "knub";
 import * as t from "io-ts";
+import { BaseConfig, Knub } from "knub";
 
 export interface ZeppelinGuildConfig extends BaseConfig<any> {
   success_emoji?: string;
diff --git a/backend/src/utils.test.ts b/backend/src/utils.test.ts
index 08baba41..042f477d 100644
--- a/backend/src/utils.test.ts
+++ b/backend/src/utils.test.ts
@@ -1,9 +1,9 @@
+import test from "ava";
 import * as ioTs from "io-ts";
 import { convertDelayStringToMS, convertMSToDelayString, getUrlsInString, tAllowedMentions } from "./utils";
-
-import test from "ava";
 import { ErisAllowedMentionFormat } from "./utils/erisAllowedMentionsToDjsMentionOptions";
 
+
 type AssertEquals<TActual, TExpected> = TActual extends TExpected ? true : false;
 
 test("getUrlsInString(): detects full links", t => {
diff --git a/backend/src/utils.ts b/backend/src/utils.ts
index 30a411ab..da467473 100644
--- a/backend/src/utils.ts
+++ b/backend/src/utils.ts
@@ -1,50 +1,44 @@
-import { URL } from "url";
-import tlds from "tlds";
-import emojiRegex from "emoji-regex";
-import * as t from "io-ts";
+import {
+    Client,
+    Constants,
+    Emoji,
+    Guild,
+    GuildAuditLogs,
+    GuildAuditLogsEntry,
+    GuildChannel,
+    GuildMember,
 
+    Invite,
+    Message,
+
+    MessageAttachment,
+
+    MessageEmbed,
+    MessageEmbedOptions,
+    MessageMentionOptions,
+    MessageOptions,
+    PartialChannelData,
+    PartialMessage,
+    StringResolvable,
+    TextChannel,
+    User
+} from "discord.js";
+import emojiRegex from "emoji-regex";
+import { either } from "fp-ts/lib/Either";
+import { unsafeCoerce } from "fp-ts/lib/function";
 import fs from "fs";
 import https from "https";
-import tmp from "tmp";
-import { helpers } from "knub";
-import { SavedMessage } from "./data/entities/SavedMessage";
-import { decodeAndValidateStrict, StrictValidationError } from "./validatorUtils";
-import { either } from "fp-ts/lib/Either";
+import * as t from "io-ts";
 import moment from "moment-timezone";
+import tlds from "tlds";
+import tmp from "tmp";
+import { URL } from "url";
+import { SavedMessage } from "./data/entities/SavedMessage";
 import { SimpleCache } from "./SimpleCache";
-import { logger } from "./logger";
-import { unsafeCoerce } from "fp-ts/lib/function";
 import { sendDM } from "./utils/sendDM";
-import { LogType } from "./data/LogType";
-import {
-  APIMessage,
-  Channel,
-  Client,
-  Constants,
-  Emoji,
-  Guild,
-  GuildAuditLogs,
-  GuildAuditLogsEntry,
-  GuildChannel,
-  GuildMember,
-  Interaction,
-  Invite,
-  Message,
-  MessageActionRow,
-  MessageAttachment,
-  MessageComponent,
-  MessageEmbed,
-  MessageEmbedOptions,
-  MessageMentionOptions,
-  MessageOptions,
-  PartialChannelData,
-  PartialMessage,
-  StringResolvable,
-  TextChannel,
-  User,
-} from "discord.js";
-import { ChannelTypeStrings } from "./types";
 import { waitForButtonConfirm } from "./utils/waitForInteraction";
+import { decodeAndValidateStrict, StrictValidationError } from "./validatorUtils";
+
 
 const fsp = fs.promises;
 
diff --git a/backend/src/utils/canReadChannel.ts b/backend/src/utils/canReadChannel.ts
index 6f1b3fe2..94268c4b 100644
--- a/backend/src/utils/canReadChannel.ts
+++ b/backend/src/utils/canReadChannel.ts
@@ -1,6 +1,6 @@
-import { readChannelPermissions } from "./readChannelPermissions";
-import { getMissingChannelPermissions } from "./getMissingChannelPermissions";
 import { GuildChannel, GuildMember } from "discord.js";
+import { getMissingChannelPermissions } from "./getMissingChannelPermissions";
+import { readChannelPermissions } from "./readChannelPermissions";
 
 export function canReadChannel(channel: GuildChannel, member: GuildMember) {
   // Not missing permissions required to read the channel = can read channel
diff --git a/backend/src/utils/createPaginatedMessage.ts b/backend/src/utils/createPaginatedMessage.ts
index a398c8da..8d6249c5 100644
--- a/backend/src/utils/createPaginatedMessage.ts
+++ b/backend/src/utils/createPaginatedMessage.ts
@@ -1,12 +1,11 @@
 import {
-  APIMessage,
-  Client,
-  Message,
-  MessageOptions,
-  MessageReaction,
-  PartialUser,
-  TextChannel,
-  User,
+    Client,
+    Message,
+    MessageOptions,
+    MessageReaction,
+    PartialUser,
+    TextChannel,
+    User
 } from "discord.js";
 import { Awaitable } from "knub/dist/utils";
 import { MINUTES, noop } from "../utils";
diff --git a/backend/src/utils/crypt.test.ts b/backend/src/utils/crypt.test.ts
index 00619645..7034205f 100644
--- a/backend/src/utils/crypt.test.ts
+++ b/backend/src/utils/crypt.test.ts
@@ -1,6 +1,6 @@
 import test from "ava";
+import { decrypt, encrypt } from "./crypt";
 
-import { encrypt, decrypt } from "./crypt";
 
 test("encrypt() followed by decrypt()", t => {
   const original = "banana 123 👀 💕"; // Includes emojis to verify utf8 stuff works
diff --git a/backend/src/utils/crypt.ts b/backend/src/utils/crypt.ts
index 3184f328..9af9c3ce 100644
--- a/backend/src/utils/crypt.ts
+++ b/backend/src/utils/crypt.ts
@@ -1,6 +1,6 @@
+import crypto from "crypto";
 import "../loadEnv";
 
-import crypto, { DecipherGCM } from "crypto";
 
 if (!process.env.KEY) {
   // tslint:disable-next-line:no-console
diff --git a/backend/src/utils/getMissingChannelPermissions.ts b/backend/src/utils/getMissingChannelPermissions.ts
index f7e99cb6..0d224887 100644
--- a/backend/src/utils/getMissingChannelPermissions.ts
+++ b/backend/src/utils/getMissingChannelPermissions.ts
@@ -1,4 +1,4 @@
-import { GuildMember, GuildChannel } from "discord.js";
+import { GuildChannel, GuildMember } from "discord.js";
 import { getMissingPermissions } from "./getMissingPermissions";
 
 /**
diff --git a/backend/src/utils/getMissingPermissions.ts b/backend/src/utils/getMissingPermissions.ts
index d9863c24..8e14ac63 100644
--- a/backend/src/utils/getMissingPermissions.ts
+++ b/backend/src/utils/getMissingPermissions.ts
@@ -1,4 +1,4 @@
-import { PermissionOverwrites, Permissions } from "discord.js";
+import { Permissions } from "discord.js";
 
 /**
  * @param resolvedPermissions A Permission object from e.g. GuildChannel#permissionsFor() or Member#permission
diff --git a/backend/src/utils/parseFuzzyTimezone.ts b/backend/src/utils/parseFuzzyTimezone.ts
index 05d3b1c7..ef570e26 100644
--- a/backend/src/utils/parseFuzzyTimezone.ts
+++ b/backend/src/utils/parseFuzzyTimezone.ts
@@ -1,5 +1,5 @@
-import moment from "moment-timezone";
 import escapeStringRegexp from "escape-string-regexp";
+import moment from "moment-timezone";
 
 const normalizeTzName = str => str.replace(/[^a-zA-Z0-9+\-]/g, "").toLowerCase();
 
diff --git a/backend/src/utils/resolveMessageTarget.ts b/backend/src/utils/resolveMessageTarget.ts
index 4d2a6a62..00df7010 100644
--- a/backend/src/utils/resolveMessageTarget.ts
+++ b/backend/src/utils/resolveMessageTarget.ts
@@ -1,7 +1,7 @@
-import { disableInlineCode, isSnowflake } from "../utils";
-import { getChannelIdFromMessageId } from "../data/getChannelIdFromMessageId";
-import { GuildPluginData, TypeConversionError } from "knub";
 import { TextChannel } from "discord.js";
+import { GuildPluginData } from "knub";
+import { getChannelIdFromMessageId } from "../data/getChannelIdFromMessageId";
+import { isSnowflake } from "../utils";
 
 const channelAndMessageIdRegex = /^(\d+)[\-\/](\d+)$/;
 const messageLinkRegex = /^https:\/\/(?:\w+\.)?discord(?:app)?\.com\/channels\/\d+\/(\d+)\/(\d+)$/i;
diff --git a/backend/src/utils/safeFindRelevantAuditLogEntry.ts b/backend/src/utils/safeFindRelevantAuditLogEntry.ts
index ab196cf0..4b83510b 100644
--- a/backend/src/utils/safeFindRelevantAuditLogEntry.ts
+++ b/backend/src/utils/safeFindRelevantAuditLogEntry.ts
@@ -1,7 +1,7 @@
 import { GuildPluginData } from "knub";
+import { LogType } from "../data/LogType";
 import { LogsPlugin } from "../plugins/Logs/LogsPlugin";
 import { findRelevantAuditLogEntry, isDiscordRESTError } from "../utils";
-import { LogType } from "../data/LogType";
 
 /**
  * Wrapper for findRelevantAuditLogEntry() that handles permission errors gracefully.
diff --git a/backend/src/utils/sendDM.ts b/backend/src/utils/sendDM.ts
index 3679dbc5..c2dbdb93 100644
--- a/backend/src/utils/sendDM.ts
+++ b/backend/src/utils/sendDM.ts
@@ -1,7 +1,7 @@
-import { createChunkedMessage, HOURS, isDiscordRESTError } from "../utils";
-import { logger } from "../logger";
-import Timeout = NodeJS.Timeout;
 import { APIMessage, User } from "discord.js";
+import { logger } from "../logger";
+import { createChunkedMessage, HOURS, isDiscordRESTError } from "../utils";
+import Timeout = NodeJS.Timeout;
 
 let dmsDisabled = false;
 let dmsDisabledTimeout: Timeout;
diff --git a/backend/src/utils/tColor.ts b/backend/src/utils/tColor.ts
index df61f579..ccc4f6a3 100644
--- a/backend/src/utils/tColor.ts
+++ b/backend/src/utils/tColor.ts
@@ -1,9 +1,8 @@
-import * as t from "io-ts";
 import { either } from "fp-ts/lib/Either";
-import { convertDelayStringToMS } from "../utils";
+import * as t from "io-ts";
+import { intToRgb } from "./intToRgb";
 import { parseColor } from "./parseColor";
 import { rgbToInt } from "./rgbToInt";
-import { intToRgb } from "./intToRgb";
 
 export const tColor = new t.Type<number, string>(
   "tColor",
diff --git a/backend/src/utils/tValidTimezone.ts b/backend/src/utils/tValidTimezone.ts
index 9922bd96..43c61c3e 100644
--- a/backend/src/utils/tValidTimezone.ts
+++ b/backend/src/utils/tValidTimezone.ts
@@ -1,5 +1,5 @@
-import * as t from "io-ts";
 import { either } from "fp-ts/lib/Either";
+import * as t from "io-ts";
 import { isValidTimezone } from "./isValidTimezone";
 
 export const tValidTimezone = new t.Type<string, string>(
diff --git a/backend/src/utils/waitForInteraction.ts b/backend/src/utils/waitForInteraction.ts
index 2ee91e84..76310557 100644
--- a/backend/src/utils/waitForInteraction.ts
+++ b/backend/src/utils/waitForInteraction.ts
@@ -1,11 +1,10 @@
 import {
-  TextChannel,
-  MessageActionRow,
-  MessageOptions,
-  MessageButton,
-  Client,
-  Interaction,
-  MessageComponentInteraction,
+    MessageActionRow,
+
+    MessageButton,
+
+
+    MessageComponentInteraction, MessageOptions, TextChannel
 } from "discord.js";
 import { PluginError } from "knub";
 import { noop } from "knub/dist/utils";
diff --git a/backend/src/validation.test.ts b/backend/src/validation.test.ts
index e1019a85..795e67ff 100644
--- a/backend/src/validation.test.ts
+++ b/backend/src/validation.test.ts
@@ -1,7 +1,7 @@
-import { tDeepPartial } from "./utils";
-import * as t from "io-ts";
-import * as validatorUtils from "./validatorUtils";
 import test from "ava";
+import * as t from "io-ts";
+import { tDeepPartial } from "./utils";
+import * as validatorUtils from "./validatorUtils";
 
 test("tDeepPartial works", ava => {
   const originalSchema = t.type({
diff --git a/backend/src/validatorUtils.ts b/backend/src/validatorUtils.ts
index fad5ba94..8a6863f9 100644
--- a/backend/src/validatorUtils.ts
+++ b/backend/src/validatorUtils.ts
@@ -1,9 +1,8 @@
-import * as t from "io-ts";
-import { pipe } from "fp-ts/lib/pipeable";
-import { either, fold } from "fp-ts/lib/Either";
-import { noop } from "./utils";
 import deepDiff from "deep-diff";
-import safeRegex from "safe-regex";
+import { either, fold } from "fp-ts/lib/Either";
+import { pipe } from "fp-ts/lib/pipeable";
+import * as t from "io-ts";
+import { noop } from "./utils";
 
 const regexWithFlags = /^\/(.*?)\/([i]*)$/;
 
diff --git a/backend/src/yamlParseTest.ts b/backend/src/yamlParseTest.ts
index dabb3727..2838591c 100644
--- a/backend/src/yamlParseTest.ts
+++ b/backend/src/yamlParseTest.ts
@@ -1,5 +1,5 @@
-import YAML from "yawn-yaml/cjs";
 import { load } from "js-yaml";
+import YAML from "yawn-yaml/cjs";
 
 const src = `
 prefix: '!'