Port GuildConfigReloader plugin
This commit is contained in:
parent
836fadf19e
commit
c467a740db
4 changed files with 65 additions and 1 deletions
|
@ -0,0 +1,24 @@
|
|||
import { PluginData } from "knub";
|
||||
import { GuildConfigReloaderPluginType } from "../types";
|
||||
import { SECONDS } from "../../../utils";
|
||||
|
||||
const CHECK_INTERVAL = 1 * SECONDS;
|
||||
|
||||
export async function reloadChangedGuilds(pluginData: PluginData<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);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue