diff --git a/package-lock.json b/package-lock.json index 19c8772c..04ec7c69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2155,9 +2155,9 @@ "dev": true }, "knub": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/knub/-/knub-13.1.0.tgz", - "integrity": "sha512-u5wdOxnDRRnol4/vixbKPoV6fAxMVV60kmz/WM1NH6f3z1rfIQJuSlj1eHtmIZTYp0PAI92/YuqgJ+aQuOYGyg==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/knub/-/knub-14.0.0.tgz", + "integrity": "sha512-okVS+72XBoSvrV+5xwqezPQQCAfrNe0uPIbHIe/PqyuiKURC7V6VflWAEg5mSofC9Lc5uAnU7sMyLqhFIGPBNQ==", "requires": { "escape-string-regexp": "^1.0.5", "lodash.at": "^4.6.0", diff --git a/package.json b/package.json index 1563270b..b9fe741b 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "escape-string-regexp": "^1.0.5", "humanize-duration": "^3.15.0", "js-yaml": "^3.12.0", - "knub": "^13.1.0", + "knub": "^14.0.0", "lodash.at": "^4.6.0", "lodash.chunk": "^4.2.0", "lodash.difference": "^4.5.0", diff --git a/src/index.ts b/src/index.ts index 4ddac01f..bc736326 100644 --- a/src/index.ts +++ b/src/index.ts @@ -75,29 +75,30 @@ connect().then(async conn => { const basePlugins = ["message_saver", "cases", "mutes"]; const bot = new Knub(client, { - plugins: { + plugins: [ // Base plugins (always enabled) - message_saver: MessageSaverPlugin, - cases: CasesPlugin, - mutes: MutesPlugin, + MessageSaverPlugin, + CasesPlugin, + MutesPlugin, // Regular plugins - utility: UtilityPlugin, - mod_actions: ModActionsPlugin, - logs: LogsPlugin, - post: PostPlugin, - reaction_roles: ReactionRolesPlugin, - censor: CensorPlugin, - persist: PersistPlugin, - spam: SpamPlugin, - tags: TagsPlugin, - slowmode: SlowmodePlugin, - starboard: StarboardPlugin - }, - globalPlugins: { - bot_control: BotControlPlugin, - log_server: LogServerPlugin - }, + UtilityPlugin, + ModActionsPlugin, + LogsPlugin, + PostPlugin, + ReactionRolesPlugin, + CensorPlugin, + PersistPlugin, + SpamPlugin, + TagsPlugin, + SlowmodePlugin, + StarboardPlugin + ], + + globalPlugins: [ + BotControlPlugin, + LogServerPlugin + ], options: { getEnabledPlugins(guildId, guildConfig): string[] { diff --git a/src/plugins/BotControl.ts b/src/plugins/BotControl.ts index d9a994dd..4e384544 100644 --- a/src/plugins/BotControl.ts +++ b/src/plugins/BotControl.ts @@ -9,6 +9,8 @@ let activeReload: [string, string] = null; * A global plugin that allows bot owners to control the bot */ export class BotControlPlugin extends GlobalPlugin { + public static pluginName = 'bot_control'; + getDefaultOptions() { return { config: { diff --git a/src/plugins/Cases.ts b/src/plugins/Cases.ts index cf18684c..08c5552d 100644 --- a/src/plugins/Cases.ts +++ b/src/plugins/Cases.ts @@ -8,6 +8,8 @@ import { ZeppelinPlugin } from "./ZeppelinPlugin"; import { GuildActions } from "../data/GuildActions"; export class CasesPlugin extends ZeppelinPlugin { + public static pluginName = 'cases'; + protected actions: GuildActions; protected cases: GuildCases; diff --git a/src/plugins/Censor.ts b/src/plugins/Censor.ts index 04b0c137..3d34e34c 100644 --- a/src/plugins/Censor.ts +++ b/src/plugins/Censor.ts @@ -15,6 +15,8 @@ import { GuildSavedMessages } from "../data/GuildSavedMessages"; import { SavedMessage } from "../data/entities/SavedMessage"; export class CensorPlugin extends Plugin { + public static pluginName = 'censor'; + protected serverLogs: GuildLogs; protected savedMessages: GuildSavedMessages; diff --git a/src/plugins/LogServer.ts b/src/plugins/LogServer.ts index 6751cd73..9ad4f214 100644 --- a/src/plugins/LogServer.ts +++ b/src/plugins/LogServer.ts @@ -12,6 +12,8 @@ function notFound(res: ServerResponse) { } export class LogServerPlugin extends GlobalPlugin { + public static pluginName = 'log_server'; + protected archives: GuildArchives; protected server: http.Server; diff --git a/src/plugins/Logs.ts b/src/plugins/Logs.ts index e6f8531e..9cd5f6fe 100644 --- a/src/plugins/Logs.ts +++ b/src/plugins/Logs.ts @@ -36,6 +36,8 @@ const unknownUser = { }; export class LogsPlugin extends Plugin { + public static pluginName = 'logs'; + protected guildLogs: GuildLogs; protected savedMessages: GuildSavedMessages; protected archives: GuildArchives; diff --git a/src/plugins/MessageSaver.ts b/src/plugins/MessageSaver.ts index 57000021..2baa04ab 100644 --- a/src/plugins/MessageSaver.ts +++ b/src/plugins/MessageSaver.ts @@ -4,6 +4,8 @@ import { GuildSavedMessages } from "../data/GuildSavedMessages"; import { successMessage } from "../utils"; export class MessageSaverPlugin extends Plugin { + public static pluginName = 'message_saver'; + protected savedMessages: GuildSavedMessages; getDefaultOptions() { diff --git a/src/plugins/ModActions.ts b/src/plugins/ModActions.ts index 77887f69..71c630ac 100644 --- a/src/plugins/ModActions.ts +++ b/src/plugins/ModActions.ts @@ -37,6 +37,8 @@ interface IIgnoredEvent { const CASE_LIST_REASON_MAX_LENGTH = 80; export class ModActionsPlugin extends ZeppelinPlugin { + public static pluginName = 'mod_actions'; + protected actions: GuildActions; protected mutes: GuildMutes; protected cases: GuildCases; diff --git a/src/plugins/Mutes.ts b/src/plugins/Mutes.ts index 4dbb3c48..12bb349b 100644 --- a/src/plugins/Mutes.ts +++ b/src/plugins/Mutes.ts @@ -10,6 +10,8 @@ import { LogType } from "../data/LogType"; import { GuildLogs } from "../data/GuildLogs"; export class MutesPlugin extends ZeppelinPlugin { + public static pluginName = 'mutes'; + protected actions: GuildActions; protected mutes: GuildMutes; protected cases: GuildCases; diff --git a/src/plugins/Persist.ts b/src/plugins/Persist.ts index 258cd153..536ce15a 100644 --- a/src/plugins/Persist.ts +++ b/src/plugins/Persist.ts @@ -7,6 +7,8 @@ import { LogType } from "../data/LogType"; import { stripObjectToScalars } from "../utils"; export class PersistPlugin extends Plugin { + public static pluginName = 'persist'; + protected persistedData: GuildPersistedData; protected logs: GuildLogs; diff --git a/src/plugins/Post.ts b/src/plugins/Post.ts index 29231b7c..22f81f51 100644 --- a/src/plugins/Post.ts +++ b/src/plugins/Post.ts @@ -5,6 +5,8 @@ import { GuildSavedMessages } from "../data/GuildSavedMessages"; import { ISavedMessageData } from "../data/entities/SavedMessage"; export class PostPlugin extends Plugin { + public static pluginName = 'post'; + protected savedMessages: GuildSavedMessages; onLoad() { diff --git a/src/plugins/ReactionRoles.ts b/src/plugins/ReactionRoles.ts index 74c4a483..1eada720 100644 --- a/src/plugins/ReactionRoles.ts +++ b/src/plugins/ReactionRoles.ts @@ -10,6 +10,8 @@ type CustomEmoji = { } & Emoji; export class ReactionRolesPlugin extends Plugin { + public static pluginName = 'reaction_roles'; + protected reactionRoles: GuildReactionRoles; getDefaultOptions() { diff --git a/src/plugins/Slowmode.ts b/src/plugins/Slowmode.ts index f8225db6..4a6cdaf5 100644 --- a/src/plugins/Slowmode.ts +++ b/src/plugins/Slowmode.ts @@ -5,6 +5,8 @@ import { GuildSlowmodes } from "../data/GuildSlowmodes"; import humanizeDuration from "humanize-duration"; export class SlowmodePlugin extends Plugin { + public static pluginName = 'slowmode'; + protected slowmodes: GuildSlowmodes; protected clearInterval; diff --git a/src/plugins/Spam.ts b/src/plugins/Spam.ts index 07787a76..d5b22a86 100644 --- a/src/plugins/Spam.ts +++ b/src/plugins/Spam.ts @@ -43,6 +43,8 @@ const MAX_INTERVAL = 300; const SPAM_ARCHIVE_EXPIRY_DAYS = 90; export class SpamPlugin extends Plugin { + public static pluginName = 'spam'; + protected actions: GuildActions; protected logs: GuildLogs; protected archives: GuildArchives; diff --git a/src/plugins/Starboard.ts b/src/plugins/Starboard.ts index e75d4ff5..1992a559 100644 --- a/src/plugins/Starboard.ts +++ b/src/plugins/Starboard.ts @@ -16,9 +16,10 @@ import path from "path"; import moment from "moment-timezone"; import { GuildSavedMessages } from "../data/GuildSavedMessages"; import { SavedMessage } from "../data/entities/SavedMessage"; -import url from "url"; export class StarboardPlugin extends ZeppelinPlugin { + public static pluginName = 'starboard'; + protected starboards: GuildStarboards; protected savedMessages: GuildSavedMessages; diff --git a/src/plugins/Tags.ts b/src/plugins/Tags.ts index a2ab7cf5..efcbeb16 100644 --- a/src/plugins/Tags.ts +++ b/src/plugins/Tags.ts @@ -4,6 +4,8 @@ import { errorMessage, successMessage } from "../utils"; import { GuildTags } from "../data/GuildTags"; export class TagsPlugin extends Plugin { + public static pluginName = 'tags'; + protected tags: GuildTags; getDefaultOptions() { diff --git a/src/plugins/Utility.ts b/src/plugins/Utility.ts index 3a591802..fe6139b1 100644 --- a/src/plugins/Utility.ts +++ b/src/plugins/Utility.ts @@ -19,6 +19,8 @@ const CLEAN_COMMAND_DELETE_DELAY = 5000; const activeReloads: Map = new Map(); export class UtilityPlugin extends ZeppelinPlugin { + public static pluginName = 'utility'; + protected logs: GuildLogs; protected cases: GuildCases; protected savedMessages: GuildSavedMessages;