From 67e793de470cf04b4de75706aa6e12caaa67e964 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Tue, 29 Jan 2019 11:03:01 +0100 Subject: [PATCH] Implements purge messages command --- .../Commands/ModeratorCommands.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/DeukBot4/MessageHandlers/CommandHandler/Commands/ModeratorCommands.cs b/DeukBot4/MessageHandlers/CommandHandler/Commands/ModeratorCommands.cs index f4afbaa..58038c4 100644 --- a/DeukBot4/MessageHandlers/CommandHandler/Commands/ModeratorCommands.cs +++ b/DeukBot4/MessageHandlers/CommandHandler/Commands/ModeratorCommands.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Threading.Tasks; using DeukBot4.Database.ServerSettings; using DeukBot4.MessageHandlers.CommandHandler.RequestStructure; @@ -13,6 +14,32 @@ namespace DeukBot4.MessageHandlers.CommandHandler { public override string Name => "Moderator"; + [Command("purge", PermissionLevel.Moderator)] + [CommandHelp("Purges a set number of messages", + "Purges a set number of messages. \n" + + "Usage: \n" + + "``!purge {number}`")] + [CommandParameters(ParameterMatcher.ParameterType.Number)] + [BlockUsageInPm, RequireParameterMatch] + public async Task PurgeMessages(CommandRequest request) + { + // get the server channel object out of message. Return if it's somehow not a server channel + if (!(request.OriginalMessage.Channel is ITextChannel channel)) + return; + var messageCountParameter = request.Parameters[0].AsInt(); + if (!messageCountParameter.HasValue) + return; + var messageCount = messageCountParameter.Value; + var messages = channel.GetMessagesAsync(request.OriginalMessage, Direction.Before, messageCount); + messages.ForEachAsync(x => + { + foreach (var message in x) + { + message.DeleteAsync(); + } + }); + } + [Command("kick", PermissionLevel.Moderator)] [CommandParameters(ParameterMatcher.ParameterType.User, ParameterMatcher.ParameterType.Remainder)] [CommandHelp("Kicks a user from the server",