Add GuildAccessMonitorPlugin
This commit is contained in:
parent
cdd64d7128
commit
62c01d112b
2 changed files with 41 additions and 0 deletions
|
@ -0,0 +1,39 @@
|
|||
import { zeppelinPlugin } from "../ZeppelinPluginBlueprint";
|
||||
import { BasePluginType, eventListener, PluginData } from "knub";
|
||||
import * as t from "io-ts";
|
||||
import { AllowedGuilds } from "../../data/AllowedGuilds";
|
||||
import { Guild } from "eris";
|
||||
|
||||
interface GuildAccessMonitorPluginType extends BasePluginType {
|
||||
config: {};
|
||||
state: {
|
||||
allowedGuilds: AllowedGuilds;
|
||||
};
|
||||
}
|
||||
|
||||
async function checkGuild(pluginData: PluginData<GuildAccessMonitorPluginType>, guild: Guild) {
|
||||
if (!(await pluginData.state.allowedGuilds.isAllowed(guild.id))) {
|
||||
console.log(`Non-allowed server ${guild.name} (${guild.id}), would leave`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Global plugin to monitor if Zeppelin is invited to a non-whitelisted server, and leave it
|
||||
*/
|
||||
export const GuildAccessMonitorPlugin = zeppelinPlugin<GuildAccessMonitorPluginType>()("guild_access_monitor", {
|
||||
configSchema: t.type({}),
|
||||
|
||||
events: [
|
||||
eventListener<GuildAccessMonitorPluginType>()("guildAvailable", ({ pluginData, args: { guild } }) => {
|
||||
checkGuild(pluginData, guild);
|
||||
}),
|
||||
],
|
||||
|
||||
onLoad(pluginData) {
|
||||
pluginData.state.allowedGuilds = new AllowedGuilds();
|
||||
|
||||
for (const guild of pluginData.client.guilds.values()) {
|
||||
checkGuild(pluginData, guild);
|
||||
}
|
||||
},
|
||||
});
|
|
@ -30,6 +30,7 @@ import { AutomodPlugin } from "./Automod/AutomodPlugin";
|
|||
import { CompanionChannelsPlugin } from "./CompanionChannels/CompanionChannelsPlugin";
|
||||
import { CustomEventsPlugin } from "./CustomEvents/CustomEventsPlugin";
|
||||
import { BotControlPlugin } from "./BotControl/BotControlPlugin";
|
||||
import { GuildAccessMonitorPlugin } from "./GuildAccessMonitor/GuildAccessMonitorPlugin";
|
||||
|
||||
// prettier-ignore
|
||||
export const guildPlugins: Array<ZeppelinPluginBlueprint<any>> = [
|
||||
|
@ -68,6 +69,7 @@ export const guildPlugins: Array<ZeppelinPluginBlueprint<any>> = [
|
|||
export const globalPlugins = [
|
||||
GuildConfigReloaderPlugin,
|
||||
BotControlPlugin,
|
||||
GuildAccessMonitorPlugin,
|
||||
];
|
||||
|
||||
// prettier-ignore
|
||||
|
|
Loading…
Add table
Reference in a new issue