3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-10 20:35:02 +00:00

automod: add antiraid_level trigger

This commit is contained in:
Dragory 2021-04-02 17:53:16 +03:00
parent 13294ad351
commit b28186aa0a
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
5 changed files with 114 additions and 0 deletions

View file

@ -0,0 +1,16 @@
import { GuildPluginData } from "knub";
import { AutomodContext, AutomodPluginType } from "../types";
import { runAutomod } from "../functions/runAutomod";
export async function runAutomodOnAntiraidLevel(pluginData: GuildPluginData<AutomodPluginType>, level: string | null) {
const context: AutomodContext = {
timestamp: Date.now(),
antiraid: {
level,
},
};
pluginData.state.queue.add(async () => {
await runAutomod(pluginData, context);
});
}

View file

@ -4,6 +4,7 @@ import { AutomodPluginType } from "../types";
import { LogsPlugin } from "../../Logs/LogsPlugin";
import { LogType } from "../../../data/LogType";
import { stripObjectToScalars } from "../../../utils";
import { runAutomodOnAntiraidLevel } from "../events/runAutomodOnAntiraidLevel";
export async function setAntiraidLevel(
pluginData: GuildPluginData<AutomodPluginType>,
@ -13,6 +14,8 @@ export async function setAntiraidLevel(
pluginData.state.cachedAntiraidLevel = newLevel;
await pluginData.state.antiraidLevels.set(newLevel);
runAutomodOnAntiraidLevel(pluginData, newLevel);
const logs = pluginData.getPlugin(LogsPlugin);
if (user) {

View file

@ -0,0 +1,32 @@
import * as t from "io-ts";
import { automodTrigger } from "../helpers";
import { tNullable } from "../../../utils";
// tslint:disable-next-line
interface AntiraidLevelTriggerResult {}
export const AntiraidLevelTrigger = automodTrigger<AntiraidLevelTriggerResult>()({
configType: t.type({
level: tNullable(t.string),
}),
defaultConfig: {},
async match({ triggerConfig, context, pluginData }) {
if (!context.antiraid) {
return;
}
if (context.antiraid.level !== triggerConfig.level) {
return;
}
return {
extra: {},
};
},
renderMatchInformation({ matchResult, pluginData, contexts, triggerConfig }) {
return `Antiraid level was set to ...`;
},
});

View file

@ -123,6 +123,9 @@ export interface AutomodContext {
type: ModActionType;
reason?: string;
};
antiraid?: {
level: string | null;
};
}
export interface RecentAction {