From 398a6a0c6121db65624c7880d7fbe8200c557599 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sun, 5 Aug 2018 22:19:29 +0200 Subject: [PATCH] added !tag create, !tag delete and !tag remove --- .../CommandHandler/Commands/TagCommands.cs | 6 +-- .../CommandHandler/TagStorage.cs | 41 ++++++++++++++++++- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/DeukBot4/MessageHandlers/CommandHandler/Commands/TagCommands.cs b/DeukBot4/MessageHandlers/CommandHandler/Commands/TagCommands.cs index cfdbbf7..9acb54f 100644 --- a/DeukBot4/MessageHandlers/CommandHandler/Commands/TagCommands.cs +++ b/DeukBot4/MessageHandlers/CommandHandler/Commands/TagCommands.cs @@ -27,15 +27,15 @@ namespace DeukBot4.MessageHandlers.CommandHandler } [Command("tag", PermissionLevel.Everyone)] - [CommandParameters(ParameterMatcher.ParameterType.Word)] + [CommandParameters(ParameterMatcher.ParameterType.Remainder)] [CommandHelp("Gets a tag", "Gets a tag earlier set by a moderator.")] - - [BlockUsageInPm, RequireParameterMatch] + [BlockUsageInPm] public async Task GetTag(CommandRequest request) { TagStorage.GetTag(request); } + [Command("tags", PermissionLevel.Everyone)] [CommandHelp("List tags in the server", "List tags in the server set by a moderator.")] [BlockUsageInPm] diff --git a/DeukBot4/MessageHandlers/CommandHandler/TagStorage.cs b/DeukBot4/MessageHandlers/CommandHandler/TagStorage.cs index 4e8b0f9..14f96d0 100644 --- a/DeukBot4/MessageHandlers/CommandHandler/TagStorage.cs +++ b/DeukBot4/MessageHandlers/CommandHandler/TagStorage.cs @@ -32,9 +32,14 @@ namespace DeukBot4.MessageHandlers.CommandHandler return key.ToLowerInvariant(); } + public static readonly string[] ReservedTags = new[] {"create", "delete", "remove"}; public (bool success, string result) AddTag(string key, string value) { var parsedTag = CleanKey(key); + if (ReservedTags.Contains(parsedTag)) + { + return (false, $"You can't use keyword {parsedTag}, that's a reserved tag"); + } if (Tags.ContainsKey(parsedTag)) { return (false, "A tag with that name already exists"); @@ -140,7 +145,7 @@ namespace DeukBot4.MessageHandlers.CommandHandler ServerCache.Add(serverId, serverTags); } - var key = cmd.Parameters[0].AsString(); + var key = cmd.Parameters[0].AsString(); var value = cmd.Parameters[1].AsString(); var result = serverTags.AddTag(key, value); if (!result.success) @@ -190,6 +195,40 @@ namespace DeukBot4.MessageHandlers.CommandHandler ServerCache.Add(serverId, serverTags); } + var split = cmd.Parameters[0].AsString().Split(" "); + var first = split[0].ToLowerInvariant(); + if (first == "create") + { + var keyword = split[1]; + var rest = split.Skip(2).ToArray().Join(" "); + var result = serverTags.AddTag(keyword, rest); + if (!result.success) + { + cmd.SendMessageAsync("Something went wrong: " + result.result); + } + else + { + cmd.SendMessageAsync("Success! Added tag with key: " + keyword); + } + return; + } + if (first == "remove" || first == "delete") + { + var keyword = split[1]; + var result = serverTags.RemoveTag(keyword); + if (!result.success) + { + cmd.SendMessageAsync("Something went wrong: " + result.result); + } + else + { + cmd.SendMessageAsync("Success! Removed tag with key: " + keyword); + } + return; + } + + + var key = cmd.Parameters[0].AsString(); cmd.SendMessageAsync(serverTags.GetTag(key)); }