diff --git a/src/index.ts b/src/index.ts index 391b7371..c982413e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -66,37 +66,11 @@ moment.tz.setDefault("UTC"); import { Client } from "eris"; import { connect } from "./data/db"; - -// Global plugins -import { BotControlPlugin } from "./plugins/BotControl"; -import { LogServerPlugin } from "./plugins/LogServer"; - -// Guild plugins -import { ModActionsPlugin } from "./plugins/ModActions"; -import { UtilityPlugin } from "./plugins/Utility"; -import { LogsPlugin } from "./plugins/Logs"; -import { PostPlugin } from "./plugins/Post"; -import { ReactionRolesPlugin } from "./plugins/ReactionRoles"; -import { CensorPlugin } from "./plugins/Censor"; -import { PersistPlugin } from "./plugins/Persist"; -import { SpamPlugin } from "./plugins/Spam"; -import { TagsPlugin } from "./plugins/Tags"; -import { MessageSaverPlugin } from "./plugins/MessageSaver"; -import { CasesPlugin } from "./plugins/Cases"; -import { MutesPlugin } from "./plugins/Mutes"; -import { SlowmodePlugin } from "./plugins/Slowmode"; -import { StarboardPlugin } from "./plugins/Starboard"; -import { NameHistoryPlugin } from "./plugins/NameHistory"; -import { AutoReactionsPlugin } from "./plugins/AutoReactionsPlugin"; -import { PingableRolesPlugin } from "./plugins/PingableRolesPlugin"; -import { SelfGrantableRolesPlugin } from "./plugins/SelfGrantableRolesPlugin"; -import { RemindersPlugin } from "./plugins/Reminders"; -import { errorMessage, successMessage } from "./utils"; +import { availablePlugins, availableGlobalPlugins, basePlugins } from "./plugins/availablePlugins"; import { ZeppelinPlugin } from "./plugins/ZeppelinPlugin"; import { customArgumentTypes } from "./customArgumentTypes"; +import { errorMessage, successMessage } from "./utils"; import { startUptimeCounter } from "./uptime"; -import { UsernameSaver } from "./plugins/UsernameSaver"; -import { WelcomeMessagePlugin } from "./plugins/WelcomeMessage"; // Run latest database migrations logger.info("Running database migrations"); @@ -115,36 +89,9 @@ connect().then(async conn => { } }); - const basePlugins = ["message_saver", "name_history", "cases", "mutes"]; - const bot = new Knub(client, { - plugins: [ - // Base plugins (always enabled) - MessageSaverPlugin, - NameHistoryPlugin, - CasesPlugin, - MutesPlugin, - - // Regular plugins - UtilityPlugin, - ModActionsPlugin, - LogsPlugin, - PostPlugin, - ReactionRolesPlugin, - CensorPlugin, - PersistPlugin, - SpamPlugin, - TagsPlugin, - SlowmodePlugin, - StarboardPlugin, - AutoReactionsPlugin, - PingableRolesPlugin, - SelfGrantableRolesPlugin, - RemindersPlugin, - WelcomeMessagePlugin, - ], - - globalPlugins: [BotControlPlugin, LogServerPlugin, UsernameSaver], + plugins: availablePlugins, + globalPlugins: availableGlobalPlugins, options: { /** diff --git a/src/plugins/availablePlugins.ts b/src/plugins/availablePlugins.ts new file mode 100644 index 00000000..6082dc74 --- /dev/null +++ b/src/plugins/availablePlugins.ts @@ -0,0 +1,64 @@ +import { MessageSaverPlugin } from "./MessageSaver"; +import { NameHistoryPlugin } from "./NameHistory"; +import { CasesPlugin } from "./Cases"; +import { MutesPlugin } from "./Mutes"; +import { UtilityPlugin } from "./Utility"; +import { ModActionsPlugin } from "./ModActions"; +import { LogsPlugin } from "./Logs"; +import { PostPlugin } from "./Post"; +import { ReactionRolesPlugin } from "./ReactionRoles"; +import { CensorPlugin } from "./Censor"; +import { PersistPlugin } from "./Persist"; +import { SpamPlugin } from "./Spam"; +import { TagsPlugin } from "./Tags"; +import { SlowmodePlugin } from "./Slowmode"; +import { StarboardPlugin } from "./Starboard"; +import { AutoReactionsPlugin } from "./AutoReactionsPlugin"; +import { PingableRolesPlugin } from "./PingableRolesPlugin"; +import { SelfGrantableRolesPlugin } from "./SelfGrantableRolesPlugin"; +import { RemindersPlugin } from "./Reminders"; +import { WelcomeMessagePlugin } from "./WelcomeMessage"; +import { BotControlPlugin } from "./BotControl"; +import { LogServerPlugin } from "./LogServer"; +import { UsernameSaver } from "./UsernameSaver"; + +/** + * Plugins available to be loaded for individual guilds + */ +export const availablePlugins = [ + MessageSaverPlugin, + NameHistoryPlugin, + CasesPlugin, + MutesPlugin, + UtilityPlugin, + ModActionsPlugin, + LogsPlugin, + PostPlugin, + ReactionRolesPlugin, + CensorPlugin, + PersistPlugin, + SpamPlugin, + TagsPlugin, + SlowmodePlugin, + StarboardPlugin, + AutoReactionsPlugin, + PingableRolesPlugin, + SelfGrantableRolesPlugin, + RemindersPlugin, + WelcomeMessagePlugin, +]; + +/** + * Plugins that are always loaded (subset of the names of the plugins in availablePlugins) + */ +export const basePlugins = [ + MessageSaverPlugin.pluginName, + NameHistoryPlugin.pluginName, + CasesPlugin.pluginName, + MutesPlugin.pluginName, +]; + +/** + * Available global plugins (can't be loaded per-guild, only globally) + */ +export const availableGlobalPlugins = [BotControlPlugin, LogServerPlugin, UsernameSaver];