From dc6e86c877c8e9575ae02838e32a1a71f5db94f9 Mon Sep 17 00:00:00 2001 From: Dark <7890309+DarkView@users.noreply.github.com> Date: Thu, 23 Jul 2020 01:33:01 +0200 Subject: [PATCH] Migrate GuildInfoSaver to new Plugin structure --- .../GuildInfoSaver/GuildInfoSaverPlugin.ts | 27 +++++++++++++++++++ backend/src/plugins/GuildInfoSaver/types.ts | 9 +++++++ backend/src/plugins/availablePlugins.ts | 2 ++ 3 files changed, 38 insertions(+) create mode 100644 backend/src/plugins/GuildInfoSaver/GuildInfoSaverPlugin.ts create mode 100644 backend/src/plugins/GuildInfoSaver/types.ts diff --git a/backend/src/plugins/GuildInfoSaver/GuildInfoSaverPlugin.ts b/backend/src/plugins/GuildInfoSaver/GuildInfoSaverPlugin.ts new file mode 100644 index 00000000..29649dab --- /dev/null +++ b/backend/src/plugins/GuildInfoSaver/GuildInfoSaverPlugin.ts @@ -0,0 +1,27 @@ +import { zeppelinPlugin } from "../ZeppelinPluginBlueprint"; +import { PluginData } from "knub"; +import { AllowedGuilds } from "src/data/AllowedGuilds"; +import { GuildInfoSaverPluginType } from "./types"; +import { MINUTES } from "src/utils"; + +export const GuildInfoSaverPlugin = zeppelinPlugin()("guild_info_saver", { + showInDocs: false, + + onLoad(pluginData) { + const { state, guild } = pluginData; + + state.allowedGuilds = new AllowedGuilds(); + + updateGuildInfo(pluginData); + state.updateInterval = setInterval(() => updateGuildInfo(pluginData), 60 * MINUTES); + }, +}); + +function updateGuildInfo(pluginData: PluginData) { + pluginData.state.allowedGuilds.updateInfo( + pluginData.guild.id, + pluginData.guild.name, + pluginData.guild.iconURL, + pluginData.guild.ownerID, + ); +} diff --git a/backend/src/plugins/GuildInfoSaver/types.ts b/backend/src/plugins/GuildInfoSaver/types.ts new file mode 100644 index 00000000..33e913c9 --- /dev/null +++ b/backend/src/plugins/GuildInfoSaver/types.ts @@ -0,0 +1,9 @@ +import { BasePluginType } from "knub"; +import { AllowedGuilds } from "src/data/AllowedGuilds"; + +export interface GuildInfoSaverPluginType extends BasePluginType { + state: { + allowedGuilds: AllowedGuilds; + updateInterval: NodeJS.Timeout; + }; +} diff --git a/backend/src/plugins/availablePlugins.ts b/backend/src/plugins/availablePlugins.ts index 32825725..44aa2914 100644 --- a/backend/src/plugins/availablePlugins.ts +++ b/backend/src/plugins/availablePlugins.ts @@ -13,10 +13,12 @@ import { GuildConfigReloaderPlugin } from "./GuildConfigReloader/GuildConfigRelo import { CasesPlugin } from "./Cases/CasesPlugin"; import { MutesPlugin } from "./Mutes/MutesPlugin"; import { TagsPlugin } from "./Tags/TagsPlugin"; +import { GuildInfoSaverPlugin } from "./GuildInfoSaver/GuildInfoSaverPlugin"; // prettier-ignore export const guildPlugins: Array> = [ AutoReactionsPlugin, + GuildInfoSaverPlugin, LocateUserPlugin, PersistPlugin, PingableRolesPlugin,