diff --git a/backend/src/plugins/Automod/AutomodPlugin.ts b/backend/src/plugins/Automod/AutomodPlugin.ts index b8f40f0e..d99c8240 100644 --- a/backend/src/plugins/Automod/AutomodPlugin.ts +++ b/backend/src/plugins/Automod/AutomodPlugin.ts @@ -19,6 +19,9 @@ import { clearOldRecentNicknameChanges } from "./functions/clearOldNicknameChang import { LogsPlugin } from "../Logs/LogsPlugin"; import { ModActionsPlugin } from "../ModActions/ModActionsPlugin"; import { MutesPlugin } from "../Mutes/MutesPlugin"; +import { AntiraidClearCmd } from "./commands/AntiraidClearCmd"; +import { SetAntiraidCmd } from "./commands/SetAntiraidCmd"; +import { ViewAntiraidCmd } from "./commands/ViewAntiraidCmd"; const defaultOptions = { config: { @@ -124,6 +127,8 @@ export const AutomodPlugin = zeppelinPlugin()("automod", { // Messages use message events from SavedMessages, see onLoad below ], + commands: [AntiraidClearCmd, SetAntiraidCmd, ViewAntiraidCmd], + async onLoad(pluginData) { pluginData.state.queue = new Queue(); diff --git a/backend/src/plugins/Automod/commands/AntiraidClearCmd.ts b/backend/src/plugins/Automod/commands/AntiraidClearCmd.ts new file mode 100644 index 00000000..4ac60488 --- /dev/null +++ b/backend/src/plugins/Automod/commands/AntiraidClearCmd.ts @@ -0,0 +1,14 @@ +import { command } from "knub"; +import { AutomodPluginType } from "../types"; +import { setAntiraidLevel } from "../functions/setAntiraidLevel"; +import { sendSuccessMessage } from "../../../pluginUtils"; + +export const AntiraidClearCmd = command()({ + trigger: ["antiraid clear", "antiraid reset", "antiraid none", "antiraid off"], + permission: "can_set_antiraid", + + async run({ pluginData, message }) { + await setAntiraidLevel(pluginData, null, message.author); + sendSuccessMessage(pluginData, message.channel, "Anti-raid turned **off**"); + }, +}); diff --git a/backend/src/plugins/Automod/commands/SetAntiraidCmd.ts b/backend/src/plugins/Automod/commands/SetAntiraidCmd.ts new file mode 100644 index 00000000..7b2f003c --- /dev/null +++ b/backend/src/plugins/Automod/commands/SetAntiraidCmd.ts @@ -0,0 +1,25 @@ +import { command } from "knub"; +import { AutomodPluginType } from "../types"; +import { setAntiraidLevel } from "../functions/setAntiraidLevel"; +import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils"; +import { commandTypeHelpers as ct } from "../../../commandTypes"; + +export const SetAntiraidCmd = command()({ + trigger: "antiraid", + permission: "can_set_antiraid", + + signature: { + level: ct.string(), + }, + + async run({ pluginData, message, args }) { + const config = pluginData.config.get(); + if (!config.antiraid_levels.includes(args.level)) { + sendErrorMessage(pluginData, message.channel, "Unknown anti-raid level"); + return; + } + + await setAntiraidLevel(pluginData, args.level, message.author); + sendSuccessMessage(pluginData, message.channel, `Anti-raid level set to **${args.level}**`); + }, +}); diff --git a/backend/src/plugins/Automod/commands/ViewAntiraidCmd.ts b/backend/src/plugins/Automod/commands/ViewAntiraidCmd.ts new file mode 100644 index 00000000..77597ca7 --- /dev/null +++ b/backend/src/plugins/Automod/commands/ViewAntiraidCmd.ts @@ -0,0 +1,18 @@ +import { command } from "knub"; +import { AutomodPluginType } from "../types"; +import { setAntiraidLevel } from "../functions/setAntiraidLevel"; +import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils"; +import { commandTypeHelpers as ct } from "../../../commandTypes"; + +export const ViewAntiraidCmd = command()({ + trigger: "antiraid", + permission: "can_view_antiraid", + + async run({ pluginData, message, args }) { + if (pluginData.state.cachedAntiraidLevel) { + message.channel.createMessage(`Anti-raid is set to **${pluginData.state.cachedAntiraidLevel}**`); + } else { + message.channel.createMessage(`Anti-raid is **off**`); + } + }, +});