From 4c286d5c150348c4a077a50afea3f5618e9acd16 Mon Sep 17 00:00:00 2001 From: Christopher Darnell Date: Mon, 26 Apr 2021 16:09:20 -0700 Subject: [PATCH] Added lock down functions, and modified search on QuickChats to include soundfiles --- StarsiegeBot/BotSettings.cs | 1 + StarsiegeBot/GroupManagement.cs | 1 + StarsiegeBot/GroupRoleManagement.cs | 1 + StarsiegeBot/LevelManagement.cs | 1 + StarsiegeBot/LevelRoleManagement.cs | 1 + StarsiegeBot/PrefixManagement.cs | 1 + StarsiegeBot/Program.cs | 2 +- StarsiegeBot/RoleManagement.cs | 1 + StarsiegeBot/Starsiege/DeathMessages.cs | 37 +++++++++++++++ StarsiegeBot/Starsiege/Functions.cs | 38 ++++++++++++++- StarsiegeBot/Starsiege/Quickchat.cs | 62 ++++++++++++++++++++++--- 11 files changed, 138 insertions(+), 8 deletions(-) diff --git a/StarsiegeBot/BotSettings.cs b/StarsiegeBot/BotSettings.cs index 29d2bfe..51da3fd 100644 --- a/StarsiegeBot/BotSettings.cs +++ b/StarsiegeBot/BotSettings.cs @@ -8,6 +8,7 @@ using System.Text.RegularExpressions; using System.Collections.Generic; using Newtonsoft.Json; using System.Text; +using DSharpPlus; namespace StarsiegeBot { diff --git a/StarsiegeBot/GroupManagement.cs b/StarsiegeBot/GroupManagement.cs index 7f98213..c89086c 100644 --- a/StarsiegeBot/GroupManagement.cs +++ b/StarsiegeBot/GroupManagement.cs @@ -23,6 +23,7 @@ using System.Threading; namespace StarsiegeBot { [Group("Group")] + [RequireGuild, RequirePermissions(Permissions.ManageRoles)] class GroupManagement : BotSettings { public GroupManagement() diff --git a/StarsiegeBot/GroupRoleManagement.cs b/StarsiegeBot/GroupRoleManagement.cs index 2be46be..63b3ec3 100644 --- a/StarsiegeBot/GroupRoleManagement.cs +++ b/StarsiegeBot/GroupRoleManagement.cs @@ -23,6 +23,7 @@ using System.Threading; namespace StarsiegeBot { [Group("GroupRole")] + [RequireGuild, RequirePermissions(Permissions.ManageRoles)] class GroupRoleManagement : BotSettings { public GroupRoleManagement() diff --git a/StarsiegeBot/LevelManagement.cs b/StarsiegeBot/LevelManagement.cs index 1ef533f..11dbd07 100644 --- a/StarsiegeBot/LevelManagement.cs +++ b/StarsiegeBot/LevelManagement.cs @@ -23,6 +23,7 @@ using System.Threading; namespace StarsiegeBot { [Group("Level")] + [RequireGuild, RequirePermissions(Permissions.ManageRoles)] class LevelManagement : BotSettings { public LevelManagement() diff --git a/StarsiegeBot/LevelRoleManagement.cs b/StarsiegeBot/LevelRoleManagement.cs index 7b48963..c145913 100644 --- a/StarsiegeBot/LevelRoleManagement.cs +++ b/StarsiegeBot/LevelRoleManagement.cs @@ -23,6 +23,7 @@ using System.Threading; namespace StarsiegeBot { [Group("LevelRole")] + [RequireGuild, RequirePermissions(Permissions.ManageRoles)] class LevelRoleManagement : BotSettings { public LevelRoleManagement() diff --git a/StarsiegeBot/PrefixManagement.cs b/StarsiegeBot/PrefixManagement.cs index 0e9db03..92c28bf 100644 --- a/StarsiegeBot/PrefixManagement.cs +++ b/StarsiegeBot/PrefixManagement.cs @@ -23,6 +23,7 @@ using System.Threading; namespace StarsiegeBot { [Group("prefix")] + [RequireGuild, RequirePermissions(Permissions.ManageRoles)] class PrefixManagement : BotSettings { public PrefixManagement() diff --git a/StarsiegeBot/Program.cs b/StarsiegeBot/Program.cs index eb710c6..c33dede 100644 --- a/StarsiegeBot/Program.cs +++ b/StarsiegeBot/Program.cs @@ -62,7 +62,7 @@ namespace StarsiegeBot if (args.Length > 0) BotName = args[0].ToLower(); else - BotName = "sspdev"; + BotName = "ssp"; BotEventId = new EventId(276, BotName); } diff --git a/StarsiegeBot/RoleManagement.cs b/StarsiegeBot/RoleManagement.cs index 058931d..fad0c90 100644 --- a/StarsiegeBot/RoleManagement.cs +++ b/StarsiegeBot/RoleManagement.cs @@ -23,6 +23,7 @@ using System.Threading; namespace StarsiegeBot { [Group("role")] + [RequireGuild,RequirePermissions(Permissions.ManageRoles)] class RoleManagement : BotSettings { public RoleManagement() diff --git a/StarsiegeBot/Starsiege/DeathMessages.cs b/StarsiegeBot/Starsiege/DeathMessages.cs index 757fb0c..be6da3f 100644 --- a/StarsiegeBot/Starsiege/DeathMessages.cs +++ b/StarsiegeBot/Starsiege/DeathMessages.cs @@ -54,6 +54,43 @@ namespace StarsiegeBot } } + [Command("toggle"), Aliases("t")] + [RequireOwner] + public async Task ToggleQC(CommandContext ctx, [RemainingText] string isEnabled = null) + { + await ctx.TriggerTypingAsync(); + + isEnabled = isEnabled.ToLower(); + + string output = ""; + + string[] turnOn = { "on", "true", "1" }; + string[] turnOff = { "off", "false", "0" }; + + if (File.Exists("DeathMessages.json")) + { + if (turnOn.Contains(isEnabled)) + { + DeathMessagesEnabled = true; + } + else if (turnOff.Contains(isEnabled)) + { + DeathMessagesEnabled = false; + } + else + { + + } + output = $"DeathMessages Enabled: {DeathMessagesEnabled}"; + } + else + { + DeathMessagesEnabled = false; + output = "DeathMessages.json file is missing, and it can not be enabled."; + } + await ctx.RespondAsync(output); + } + [GroupCommand] public async Task DeathMessage(CommandContext ctx, [Description("Optional. Person you want to see kill you. If blank, will show generic death message.")]DiscordMember target = null) { diff --git a/StarsiegeBot/Starsiege/Functions.cs b/StarsiegeBot/Starsiege/Functions.cs index 55d6d95..ccb5568 100644 --- a/StarsiegeBot/Starsiege/Functions.cs +++ b/StarsiegeBot/Starsiege/Functions.cs @@ -31,7 +31,7 @@ namespace StarsiegeBot DiscordColor.Violet, DiscordColor.Wheat, DiscordColor.White, DiscordColor.Yellow }; private readonly Random rnd = new Random(); private readonly Dictionary ssFunctions; - private readonly bool FunctionsEnabled; + private bool FunctionsEnabled; public Functions() { @@ -136,6 +136,42 @@ namespace StarsiegeBot await ctx.RespondAsync($"There are {ssFunctions.Count} functions in the known list."); } + [Command("toggle"), Aliases("t")] + [RequireOwner] + public async Task ToggleQC(CommandContext ctx, [RemainingText] string isEnabled = null) + { + await ctx.TriggerTypingAsync(); + + isEnabled = isEnabled.ToLower(); + + string output = ""; + + string[] turnOn = { "on", "true", "1" }; + string[] turnOff = { "off", "false", "0" }; + + if (File.Exists("functions.json")) + { + if (turnOn.Contains(isEnabled)) + { + FunctionsEnabled = true; + } + else if (turnOff.Contains(isEnabled)) + { + FunctionsEnabled = false; + } + else + { + + } + output = $"Functions Enabled: {FunctionsEnabled}"; + } + else + { + FunctionsEnabled = false; + output = "Functions.json file is missing, and it can not be enabled."; + } + await ctx.RespondAsync(output); + } } public class SSFunction diff --git a/StarsiegeBot/Starsiege/Quickchat.cs b/StarsiegeBot/Starsiege/Quickchat.cs index b35dd8a..fd4518b 100644 --- a/StarsiegeBot/Starsiege/Quickchat.cs +++ b/StarsiegeBot/Starsiege/Quickchat.cs @@ -24,7 +24,7 @@ namespace StarsiegeBot { private readonly List Quickchats; private readonly Random rnd = new Random(); - private readonly bool QuickChatsEnabled; + private bool QuickChatsEnabled; public Quickchat() { @@ -170,8 +170,9 @@ namespace StarsiegeBot } // We're going to build a message. + using StreamWriter file = new StreamWriter("tempQC.txt"); DiscordMessageBuilder msg = new DiscordMessageBuilder(); - msg.Content = ""; + int Content = 0; // We're going to search each QC for the stuff in toSearch. for (int i = 0; i < Quickchats.Count; i++) { @@ -179,18 +180,67 @@ namespace StarsiegeBot if (Quickchats[i].text.ToLower().Contains(toSearch.ToLower())) { // add it to the list! - msg.Content += $"[{i}] {Quickchats[i].text}\r\n"; + await file.WriteLineAsync($"[{i}][T] {Quickchats[i].text}\r\n"); + Content++; + } + if (Quickchats[i].soundFile.ToLower().Contains(toSearch.ToLower())) + { + // add it to the list! + await file.WriteLineAsync($"[{i}][S] {Quickchats[i].text}\r\n"); + Content++; } } + file.Close(); // If message content is still nothing, report we found nothing. - if (msg.Content == "") + if (Content == 0) { msg.Content = "No results found."; + await ctx.RespondAsync(msg); + } + else + { + msg.Content = "Here are your results."; + FileStream upload = new FileStream($"tempQC.txt", FileMode.Open); + msg.WithFile(upload); + await ctx.RespondAsync(msg); + upload.Close(); + } + } + + [Command("toggle"), Aliases("t")] + [RequireOwner] + public async Task ToggleQC (CommandContext ctx, [RemainingText] string isEnabled = null) + { + await ctx.TriggerTypingAsync(); + isEnabled = isEnabled.ToLower(); + string output = ""; + string[] turnOn = { "on", "true", "1" }; + string[] turnOff = { "off", "false", "0" }; + + if (File.Exists("quickchats.json")) + { + if (turnOn.Contains(isEnabled)) + { + QuickChatsEnabled = true; + } + else if (turnOff.Contains(isEnabled)) + { + QuickChatsEnabled = false; + } + else + { + // we wont do anything here. + } + output = $"Quickchats Enabled: {QuickChatsEnabled}"; + } + else + { + QuickChatsEnabled = false; + output = "QuickChats.json file is missing, and it can not be enabled."; } - // Tell the end user our results, or lack of. - await ctx.RespondAsync(msg); + await ctx.RespondAsync(output); } } public class Quickchats