From c9bf08c2302aa6e46d4c24c2ae2d719428db5584 Mon Sep 17 00:00:00 2001 From: Chris Darnell Date: Sun, 9 May 2021 08:36:27 -0700 Subject: [PATCH] Added commands for allowing bot to talk on specific channels. --- StarsiegeBot/ChannelManagement.cs | 121 +++++++++++++++++++++++++----- 1 file changed, 103 insertions(+), 18 deletions(-) diff --git a/StarsiegeBot/ChannelManagement.cs b/StarsiegeBot/ChannelManagement.cs index ebe022b..48a865f 100644 --- a/StarsiegeBot/ChannelManagement.cs +++ b/StarsiegeBot/ChannelManagement.cs @@ -23,29 +23,114 @@ namespace StarsiegeBot Console.WriteLine("Channel Management Module loaded."); } - [Command("Allow")] - public async Task AllowChannels(CommandContext ctx, [Description("List of discord channels to allow the bot to respond on.")]params DiscordChannel[] discordChannels) + [Group("allow")] + class Allow { - - } - [Command("Allow")] - public async Task AllowChannels(CommandContext ctx, string discordChannels = "") - { - - } - - [Command("deny")] - public async Task DenyChannels(CommandContext ctx, params DiscordChannel[] discordChannels) - { - foreach (DiscordChannel chan in discordChannels) + [Command("add")] + public async Task AddAllowedChannels(CommandContext ctx, [Description("List of discord channels to allow the bot to respond on.")] params DiscordChannel[] discordChannels) { - Console.WriteLine(chan.Id.ToString()); + string gId = ctx.Guild.Id.ToString(); + // string output = "Added the following channel(s) to the allow list:"; + string output = ""; + foreach (DiscordChannel channel in discordChannels) + { + + GuildSettings[gId].AllowChannels.Add(channel.Id.ToString()); + if (!GuildSettings[gId].AllowChannels.Contains(channel.Id.ToString())) + { + if (output == "") + { + output = channel.Mention; + } + else + { + output += $", {channel.Mention}"; + } + } + } + + if (output == "") + { + output = "There was an error adding your channel(s) to the allow list."; + } + else + { + output = "Added the following channel(s) to the allow list: " + output; + } + await ctx.RespondAsync(StartEmbed(output)); + } + [Command("remove")] + public async Task RemoveAllowedChannel(CommandContext ctx, params DiscordChannel[] discordChannels) + { + string success = ""; + string failed = ""; + string output = ""; + string gId = ctx.Guild.Id.ToString(); + foreach (DiscordChannel channel in discordChannels) + { + string chanId = channel.Id.ToString(); + if (GuildSettings[gId].AllowChannels.Remove(chanId)) + { + if (success == "") + { + success = channel.Mention; + } + else + { + success += $", {channel.Mention}"; + } + } + else + { + if (failed == "") + { + failed = channel.Mention; + } + else + { + failed += $", {channel.Mention}"; + } + } + } + if (success != "") + { + output += "Successfully removed from allowed channel(s): " + success; + } + if (failed != "") + { + if (output != "") output += "\r\n"; + output += "Failed to removed from allowed channel(s): " + failed; + } + await ctx.RespondAsync(StartEmbed(output)); } } - [Command("deny")] - public async Task DenyChannels(CommandContext ctx, [Description("List of discord channels to deny the bot to respond on.")] string discordChannels = "") - { + [Group("deny")] + class Deny + { + [Command("add")] + public async Task DenyChannels(CommandContext ctx, params DiscordChannel[] discordChannels) + { + foreach (DiscordChannel chan in discordChannels) + { + Console.WriteLine(chan.Id.ToString()); + } + } } + + + + [Command("deny")] + + private static DiscordEmbedBuilder StartEmbed(string desc) + { + DiscordEmbedBuilder embed = new DiscordEmbedBuilder + { + Description = desc, + Color = Program.colours[^2] + }; + return embed; + } + } }