From 3b0a0b311d8ea3eeea4cccbcd29de2c079decba7 Mon Sep 17 00:00:00 2001
From: Dragory <2606411+Dragory@users.noreply.github.com>
Date: Sun, 19 May 2024 10:46:43 +0000
Subject: [PATCH] feat: add missing info.configSchemas

---
 backend/src/plugins/AutoDelete/info.ts           | 2 ++
 backend/src/plugins/AutoReactions/info.ts        | 2 ++
 backend/src/plugins/Automod/info.ts              | 2 ++
 backend/src/plugins/Cases/info.ts                | 2 ++
 backend/src/plugins/Censor/info.ts               | 2 ++
 backend/src/plugins/CompanionChannels/info.ts    | 2 ++
 backend/src/plugins/ContextMenus/info.ts         | 2 ++
 backend/src/plugins/CustomEvents/info.ts         | 2 ++
 backend/src/plugins/GuildConfigReloader/info.ts  | 2 ++
 backend/src/plugins/GuildConfigReloader/types.ts | 4 ++++
 backend/src/plugins/GuildInfoSaver/info.ts       | 2 ++
 backend/src/plugins/GuildInfoSaver/types.ts      | 4 ++++
 backend/src/plugins/GuildMemberCache/info.ts     | 2 ++
 backend/src/plugins/GuildMemberCache/types.ts    | 4 ++++
 backend/src/plugins/InternalPoster/info.ts       | 2 ++
 backend/src/plugins/InternalPoster/types.ts      | 4 ++++
 backend/src/plugins/MessageSaver/info.ts         | 2 ++
 backend/src/plugins/RoleManager/info.ts          | 2 ++
 backend/src/plugins/UsernameSaver/info.ts        | 2 ++
 19 files changed, 46 insertions(+)

diff --git a/backend/src/plugins/AutoDelete/info.ts b/backend/src/plugins/AutoDelete/info.ts
index 8a4438a3..dc4ac730 100644
--- a/backend/src/plugins/AutoDelete/info.ts
+++ b/backend/src/plugins/AutoDelete/info.ts
@@ -1,8 +1,10 @@
 import { ZeppelinPluginInfo } from "../../types.js";
+import { zAutoDeleteConfig } from "./types.js";
 
 export const autoDeletePluginInfo: ZeppelinPluginInfo = {
   showInDocs: true,
   prettyName: "Auto-delete",
   description: "Allows Zeppelin to auto-delete messages from a channel after a delay",
   configurationGuide: "Maximum deletion delay is currently 5 minutes",
+  configSchema: zAutoDeleteConfig,
 };
diff --git a/backend/src/plugins/AutoReactions/info.ts b/backend/src/plugins/AutoReactions/info.ts
index 05a41b74..a2817502 100644
--- a/backend/src/plugins/AutoReactions/info.ts
+++ b/backend/src/plugins/AutoReactions/info.ts
@@ -1,5 +1,6 @@
 import { ZeppelinPluginInfo } from "../../types.js";
 import { trimPluginDescription } from "../../utils.js";
+import { zAutoReactionsConfig } from "./types.js";
 
 export const autoReactionsInfo: ZeppelinPluginInfo = {
   showInDocs: true,
@@ -7,4 +8,5 @@ export const autoReactionsInfo: ZeppelinPluginInfo = {
   description: trimPluginDescription(`
     Allows setting up automatic reactions to all new messages on a channel
   `),
+  configSchema: zAutoReactionsConfig,
 };
diff --git a/backend/src/plugins/Automod/info.ts b/backend/src/plugins/Automod/info.ts
index 7dd94560..5c3efeaf 100644
--- a/backend/src/plugins/Automod/info.ts
+++ b/backend/src/plugins/Automod/info.ts
@@ -1,9 +1,11 @@
 import { ZeppelinPluginInfo } from "../../types.js";
 import { trimPluginDescription } from "../../utils.js";
+import { zAutomodConfig } from "./types.js";
 
 export const automodPluginInfo: ZeppelinPluginInfo = {
   showInDocs: true,
   prettyName: "Automod",
+  configSchema: zAutomodConfig,
   description: trimPluginDescription(`
       Allows specifying automated actions in response to triggers. Example use cases include word filtering and spam prevention.
   `),
diff --git a/backend/src/plugins/Cases/info.ts b/backend/src/plugins/Cases/info.ts
index fa446a24..4cda78db 100644
--- a/backend/src/plugins/Cases/info.ts
+++ b/backend/src/plugins/Cases/info.ts
@@ -1,9 +1,11 @@
 import { ZeppelinPluginInfo } from "../../types.js";
 import { trimPluginDescription } from "../../utils.js";
+import { zCasesConfig } from "./types.js";
 
 export const casesPluginInfo: ZeppelinPluginInfo = {
   showInDocs: true,
   prettyName: "Cases",
+  configSchema: zCasesConfig,
   description: trimPluginDescription(`
     This plugin contains basic configuration for cases created by other plugins
   `),
diff --git a/backend/src/plugins/Censor/info.ts b/backend/src/plugins/Censor/info.ts
index 888cea1d..3cb0cc5f 100644
--- a/backend/src/plugins/Censor/info.ts
+++ b/backend/src/plugins/Censor/info.ts
@@ -1,10 +1,12 @@
 import { ZeppelinPluginInfo } from "../../types.js";
 import { trimPluginDescription } from "../../utils.js";
+import { zCensorConfig } from "./types.js";
 
 export const censorPluginInfo: ZeppelinPluginInfo = {
   showInDocs: true,
   legacy: true,
   prettyName: "Censor",
+  configSchema: zCensorConfig,
   description: trimPluginDescription(`
     Censor words, tokens, links, regex, etc.
     For more advanced filtering, check out the Automod plugin!
diff --git a/backend/src/plugins/CompanionChannels/info.ts b/backend/src/plugins/CompanionChannels/info.ts
index c482618b..d4fb7860 100644
--- a/backend/src/plugins/CompanionChannels/info.ts
+++ b/backend/src/plugins/CompanionChannels/info.ts
@@ -1,9 +1,11 @@
 import { ZeppelinPluginInfo } from "../../types.js";
 import { trimPluginDescription } from "../../utils.js";
+import { zCompanionChannelsConfig } from "./types.js";
 
 export const companionChannelsPluginInfo: ZeppelinPluginInfo = {
   showInDocs: true,
   prettyName: "Companion channels",
+  configSchema: zCompanionChannelsConfig,
   description: trimPluginDescription(`
     Set up 'companion channels' between text and voice channels.
     Once set up, any time a user joins one of the specified voice channels,
diff --git a/backend/src/plugins/ContextMenus/info.ts b/backend/src/plugins/ContextMenus/info.ts
index d67eb711..508ca811 100644
--- a/backend/src/plugins/ContextMenus/info.ts
+++ b/backend/src/plugins/ContextMenus/info.ts
@@ -1,6 +1,8 @@
 import { ZeppelinPluginInfo } from "../../types.js";
+import { zContextMenusConfig } from "./types.js";
 
 export const contextMenuPluginInfo: ZeppelinPluginInfo = {
   showInDocs: false,
   prettyName: "Context menu",
+  configSchema: zContextMenusConfig,
 };
diff --git a/backend/src/plugins/CustomEvents/info.ts b/backend/src/plugins/CustomEvents/info.ts
index 4825cc36..f9a8cec0 100644
--- a/backend/src/plugins/CustomEvents/info.ts
+++ b/backend/src/plugins/CustomEvents/info.ts
@@ -1,6 +1,8 @@
 import { ZeppelinPluginInfo } from "../../types.js";
+import { zCustomEventsConfig } from "./types.js";
 
 export const customEventsPluginInfo: ZeppelinPluginInfo = {
   prettyName: "Custom events",
   showInDocs: false,
+  configSchema: zCustomEventsConfig,
 };
diff --git a/backend/src/plugins/GuildConfigReloader/info.ts b/backend/src/plugins/GuildConfigReloader/info.ts
index 2aa6cacd..00aaa653 100644
--- a/backend/src/plugins/GuildConfigReloader/info.ts
+++ b/backend/src/plugins/GuildConfigReloader/info.ts
@@ -1,6 +1,8 @@
 import { ZeppelinPluginInfo } from "../../types.js";
+import { zGuildConfigReloaderPlugin } from "./types.js";
 
 export const guildConfigReloaderPluginInfo: ZeppelinPluginInfo = {
   prettyName: "Guild config reloader",
   showInDocs: false,
+  configSchema: zGuildConfigReloaderPlugin,
 };
diff --git a/backend/src/plugins/GuildConfigReloader/types.ts b/backend/src/plugins/GuildConfigReloader/types.ts
index 58b439c4..15222e7d 100644
--- a/backend/src/plugins/GuildConfigReloader/types.ts
+++ b/backend/src/plugins/GuildConfigReloader/types.ts
@@ -1,8 +1,12 @@
 import { BasePluginType } from "knub";
 import { Configs } from "../../data/Configs.js";
 import Timeout = NodeJS.Timeout;
+import { z } from "zod";
+
+export const zGuildConfigReloaderPlugin = z.strictObject({});
 
 export interface GuildConfigReloaderPluginType extends BasePluginType {
+  config: z.infer<typeof zGuildConfigReloaderPlugin>;
   state: {
     guildConfigs: Configs;
     unloaded: boolean;
diff --git a/backend/src/plugins/GuildInfoSaver/info.ts b/backend/src/plugins/GuildInfoSaver/info.ts
index 362873c1..7256e8cc 100644
--- a/backend/src/plugins/GuildInfoSaver/info.ts
+++ b/backend/src/plugins/GuildInfoSaver/info.ts
@@ -1,6 +1,8 @@
 import { ZeppelinPluginInfo } from "../../types.js";
+import { zGuildInfoSaverConfig } from "./types.js";
 
 export const guildInfoSaverPluginInfo: ZeppelinPluginInfo = {
   prettyName: "Guild info saver",
   showInDocs: false,
+  configSchema: zGuildInfoSaverConfig,
 };
diff --git a/backend/src/plugins/GuildInfoSaver/types.ts b/backend/src/plugins/GuildInfoSaver/types.ts
index 4ff63cba..7b40ee2a 100644
--- a/backend/src/plugins/GuildInfoSaver/types.ts
+++ b/backend/src/plugins/GuildInfoSaver/types.ts
@@ -1,6 +1,10 @@
 import { BasePluginType } from "knub";
+import { z } from "zod";
+
+export const zGuildInfoSaverConfig = z.strictObject({});
 
 export interface GuildInfoSaverPluginType extends BasePluginType {
+  config: z.infer<typeof zGuildInfoSaverConfig>;
   state: {
     updateInterval: NodeJS.Timeout;
   };
diff --git a/backend/src/plugins/GuildMemberCache/info.ts b/backend/src/plugins/GuildMemberCache/info.ts
index 290a6921..8b2da421 100644
--- a/backend/src/plugins/GuildMemberCache/info.ts
+++ b/backend/src/plugins/GuildMemberCache/info.ts
@@ -1,6 +1,8 @@
 import { ZeppelinPluginInfo } from "../../types.js";
+import { zGuildMemberCacheConfig } from "./types.js";
 
 export const guildMemberCachePluginInfo: ZeppelinPluginInfo = {
   prettyName: "Guild member cache",
   showInDocs: false,
+  configSchema: zGuildMemberCacheConfig,
 };
diff --git a/backend/src/plugins/GuildMemberCache/types.ts b/backend/src/plugins/GuildMemberCache/types.ts
index e38eb6fb..3e7a7654 100644
--- a/backend/src/plugins/GuildMemberCache/types.ts
+++ b/backend/src/plugins/GuildMemberCache/types.ts
@@ -1,7 +1,11 @@
 import { BasePluginType } from "knub";
 import { GuildMemberCache } from "../../data/GuildMemberCache.js";
+import { z } from "zod";
+
+export const zGuildMemberCacheConfig = z.strictObject({});
 
 export interface GuildMemberCachePluginType extends BasePluginType {
+  config: z.infer<typeof zGuildMemberCacheConfig>;
   state: {
     memberCache: GuildMemberCache;
     saveInterval: NodeJS.Timeout;
diff --git a/backend/src/plugins/InternalPoster/info.ts b/backend/src/plugins/InternalPoster/info.ts
index 37bab5f0..35870b23 100644
--- a/backend/src/plugins/InternalPoster/info.ts
+++ b/backend/src/plugins/InternalPoster/info.ts
@@ -1,6 +1,8 @@
 import { ZeppelinPluginInfo } from "../../types.js";
+import { zInternalPosterConfig } from "./types.js";
 
 export const internalPosterPluginInfo: ZeppelinPluginInfo = {
   prettyName: "Internal poster",
   showInDocs: false,
+  configSchema: zInternalPosterConfig,
 };
diff --git a/backend/src/plugins/InternalPoster/types.ts b/backend/src/plugins/InternalPoster/types.ts
index cf747353..baf20d3d 100644
--- a/backend/src/plugins/InternalPoster/types.ts
+++ b/backend/src/plugins/InternalPoster/types.ts
@@ -2,8 +2,12 @@ import { WebhookClient } from "discord.js";
 import { BasePluginType } from "knub";
 import { Queue } from "../../Queue.js";
 import { Webhooks } from "../../data/Webhooks.js";
+import { z } from "zod";
+
+export const zInternalPosterConfig = z.strictObject({});
 
 export interface InternalPosterPluginType extends BasePluginType {
+  config: z.infer<typeof zInternalPosterConfig>;
   state: {
     queue: Queue;
     webhooks: Webhooks;
diff --git a/backend/src/plugins/MessageSaver/info.ts b/backend/src/plugins/MessageSaver/info.ts
index 2a9b9bda..7d62a72a 100644
--- a/backend/src/plugins/MessageSaver/info.ts
+++ b/backend/src/plugins/MessageSaver/info.ts
@@ -1,6 +1,8 @@
 import { ZeppelinPluginInfo } from "../../types.js";
+import { zMessageSaverConfig } from "./types.js";
 
 export const messageSaverPluginInfo: ZeppelinPluginInfo = {
   prettyName: "Message saver",
   showInDocs: false,
+  configSchema: zMessageSaverConfig,
 };
diff --git a/backend/src/plugins/RoleManager/info.ts b/backend/src/plugins/RoleManager/info.ts
index 7bc9571e..9b532990 100644
--- a/backend/src/plugins/RoleManager/info.ts
+++ b/backend/src/plugins/RoleManager/info.ts
@@ -1,6 +1,8 @@
 import { ZeppelinPluginInfo } from "../../types.js";
+import { zRoleManagerConfig } from "./types.js";
 
 export const roleManagerPluginInfo: ZeppelinPluginInfo = {
   prettyName: "Role manager",
   showInDocs: false,
+  configSchema: zRoleManagerConfig,
 };
diff --git a/backend/src/plugins/UsernameSaver/info.ts b/backend/src/plugins/UsernameSaver/info.ts
index 7f9afb5f..68a65f31 100644
--- a/backend/src/plugins/UsernameSaver/info.ts
+++ b/backend/src/plugins/UsernameSaver/info.ts
@@ -1,6 +1,8 @@
 import { ZeppelinPluginInfo } from "../../types.js";
+import { zUsernameSaverConfig } from "./types.js";
 
 export const usernameSaverPluginInfo: ZeppelinPluginInfo = {
   showInDocs: false,
   prettyName: "Username saver",
+  configSchema: zUsernameSaverConfig,
 };