From e6d1aa1f073c1fc10d085a31c36dc28cccffbcd6 Mon Sep 17 00:00:00 2001 From: Dark <7890309+DarkView@users.noreply.github.com> Date: Mon, 15 Mar 2021 16:25:17 +0100 Subject: [PATCH] Add options to delete invites from user on kick or ban --- backend/src/plugins/ModActions/ModActionsPlugin.ts | 2 ++ .../plugins/ModActions/functions/actualKickMemberCmd.ts | 7 +++++++ backend/src/plugins/ModActions/functions/banUserId.ts | 7 +++++++ backend/src/plugins/ModActions/types.ts | 2 ++ 4 files changed, 18 insertions(+) diff --git a/backend/src/plugins/ModActions/ModActionsPlugin.ts b/backend/src/plugins/ModActions/ModActionsPlugin.ts index 672e4630..a2ff199c 100644 --- a/backend/src/plugins/ModActions/ModActionsPlugin.ts +++ b/backend/src/plugins/ModActions/ModActionsPlugin.ts @@ -52,6 +52,8 @@ const defaultOptions = { message_on_warn: false, message_on_kick: false, message_on_ban: false, + delete_invites_on_kick: false, + delete_invites_on_ban: false, message_channel: null, warn_message: "You have received a warning on the {guildName} server: {reason}", kick_message: "You have been kicked from the {guildName} server. Reason given: {reason}", diff --git a/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts b/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts index e467212c..783741b1 100644 --- a/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts +++ b/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts @@ -77,6 +77,13 @@ export async function actualKickMemberCmd( }, }); + if (pluginData.config.getForMember(msg.member).delete_invites_on_kick) { + const userInvites = (await pluginData.guild.getInvites()).filter(inv => inv.inviter?.id === user.id); + userInvites.forEach(invite => { + invite.delete("User kicked from server"); + }); + } + if (args.clean) { pluginData.state.serverLogs.ignoreLog(LogType.MEMBER_BAN, memberToKick.id); ignoreEvent(pluginData, IgnoredEventType.Ban, memberToKick.id); diff --git a/backend/src/plugins/ModActions/functions/banUserId.ts b/backend/src/plugins/ModActions/functions/banUserId.ts index 85d05de9..3328c3b4 100644 --- a/backend/src/plugins/ModActions/functions/banUserId.ts +++ b/backend/src/plugins/ModActions/functions/banUserId.ts @@ -97,6 +97,13 @@ export async function banUserId( }; } + if (pluginData.config.get().delete_invites_on_ban) { + const userInvites = (await pluginData.guild.getInvites()).filter(inv => inv.inviter?.id === user.id); + userInvites.forEach(invite => { + invite.delete("User banned from server"); + }); + } + // Create a case for this action const modId = banOptions.caseArgs?.modId || pluginData.client.user.id; const casesPlugin = pluginData.getPlugin(CasesPlugin); diff --git a/backend/src/plugins/ModActions/types.ts b/backend/src/plugins/ModActions/types.ts index af4fd8d6..cf47c72c 100644 --- a/backend/src/plugins/ModActions/types.ts +++ b/backend/src/plugins/ModActions/types.ts @@ -18,6 +18,8 @@ export const ConfigSchema = t.type({ message_on_warn: t.boolean, message_on_kick: t.boolean, message_on_ban: t.boolean, + delete_invites_on_kick: t.boolean, + delete_invites_on_ban: t.boolean, message_channel: tNullable(t.string), warn_message: tNullable(t.string), kick_message: tNullable(t.string),