3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-20 00:05:04 +00:00
zeppelin/backend/src/plugins/GuildConfigReloader/functions/reloadChangedGuilds.ts
2020-10-01 01:43:38 +03:00

24 lines
934 B
TypeScript

import { GlobalPluginData } from "knub";
import { GuildConfigReloaderPluginType } from "../types";
import { SECONDS } from "../../../utils";
const CHECK_INTERVAL = 1 * SECONDS;
export async function reloadChangedGuilds(pluginData: GlobalPluginData<GuildConfigReloaderPluginType>) {
if (pluginData.state.unloaded) return;
const changedConfigs = await pluginData.state.guildConfigs.getActiveLargerThanId(pluginData.state.highestConfigId);
for (const item of changedConfigs) {
if (!item.key.startsWith("guild-")) continue;
const guildId = item.key.slice("guild-".length);
console.log(`Config changed, reloading guild ${guildId}`);
await pluginData.getKnubInstance().reloadGuild(guildId);
if (item.id > pluginData.state.highestConfigId) {
pluginData.state.highestConfigId = item.id;
}
}
pluginData.state.nextCheckTimeout = setTimeout(() => reloadChangedGuilds(pluginData), CHECK_INTERVAL);
}