public async Task GroupKinks(params string[] parameters) { if (parameters.Length < 2) { await Context.Channel.SendMessageAsync("Insufficient data, quitting!"); return; } List <string> kinkList = parameters.ToList(); string groupName = kinkList[0]; kinkList.RemoveAt(0); KinkGroup groupToJoin = DataMethods.GetGroup(groupName); if (groupToJoin == null) { await Context.Channel.SendMessageAsync("Invalid group, quitting!"); return; } string adding = "Adding kinks to " + groupToJoin.KinkGroupName + "\n"; foreach (string kinkName in kinkList) { bool kinkFound = await DataMethods.AddKinkToGroup(groupToJoin.KinkGroupID, kinkName, Context.Guild.Id); if (kinkFound) { adding += kinkName + " added\n"; } else { adding += kinkName + " is not a valid kink\n"; } } await Context.Channel.SendMessageAsync(adding); }
public async Task EditGroupData(SocketCommandContext Context) { ulong userID = Context.User.Id; Command groupCommand = Vars.activeCommands.Where(x => x.ActorID == userID).FirstOrDefault(); Console.WriteLine(" we've got our group command "); KinkGroup groupToEdit = Vars.tableEntries.Where(x => x.GetType().Name == "KinkGroup").ToList().Cast <KinkGroup>().ToList().Where(x => x.KinkGroupID.ToString() == groupCommand.CommandData).FirstOrDefault(); Console.WriteLine(" we've got our group to edit "); if (groupCommand.CommandData == "start") { string groupName = Context.Message.Content; KinkGroup groupFromDB = DataMethods.GetGroup(groupName); if (groupFromDB == null) { ulong msgEndID = groupCommand.MessageID; var msgEnd = (RestUserMessage)await Context.Channel.GetMessageAsync(msgEndID); string endMessage = "Welcome " + Context.User.Mention + "\n" + "Group not found, quitting!"; await msgEnd.ModifyAsync(x => x.Content = endMessage); Vars.activeCommands.RemoveAll(x => x.ActorID == Context.User.Id); await Context.Message.DeleteAsync(); return; } Vars.tableEntries.Add(groupFromDB); groupCommand.CommandData = groupFromDB.KinkGroupID.ToString(); groupCommand.CommandStep = 1; string newMessage = "Welcome " + Context.User.Mention + "\n" + "Edit Group Step 1: Enter New Name, or Fartz to skip"; ulong msgToEditID = groupCommand.MessageID; var msgToEdit = (RestUserMessage)await Context.Channel.GetMessageAsync(msgToEditID, CacheMode.AllowDownload); await msgToEdit.ModifyAsync(x => x.Content = newMessage); await Context.Message.DeleteAsync(); } else if (groupToEdit != null && groupCommand.CommandStep == 1) { string newGroupName = Context.Message.Content; if (!newGroupName.Equals("fartz", StringComparison.OrdinalIgnoreCase)) { groupToEdit.KinkGroupName = newGroupName; KinkGroup kinkToCheck = Vars.tableEntries.Where(x => x.GetType().Name == "KinkGroup").ToList().Cast <KinkGroup>().ToList().Where(x => x.KinkGroupID.ToString() == groupCommand.CommandData).FirstOrDefault(); if (groupToEdit.KinkGroupName != kinkToCheck.KinkGroupName) { Console.WriteLine("Kink in edit list not updating"); } } groupCommand.CommandStep = 2; string newMessage = "Welcome " + Context.User.Mention + "\n" + "Edit Kink Step 2: Enter New Description, or Fartz to skip"; ulong msgToEditID = groupCommand.MessageID; var msgToEdit = (RestUserMessage)await Context.Channel.GetMessageAsync(msgToEditID, CacheMode.AllowDownload); await msgToEdit.ModifyAsync(x => x.Content = newMessage); await Context.Message.DeleteAsync(); } else if (groupToEdit != null && groupCommand.CommandStep == 2) { string newKinkDescrip = Context.Message.Content; if (!newKinkDescrip.Equals("fartz", StringComparison.OrdinalIgnoreCase)) { groupToEdit.KinkGroupDescrip = newKinkDescrip; KinkGroup kinkToCheck = Vars.tableEntries.Where(x => x.GetType().Name == "KinkGroup").ToList().Cast <KinkGroup>().ToList().Where(x => x.KinkGroupID.ToString() == groupCommand.CommandData).FirstOrDefault(); if (groupToEdit.KinkGroupDescrip != kinkToCheck.KinkGroupDescrip) { Console.WriteLine("Kink in edit list not updating"); } } await Context.Message.DeleteAsync(); string newMessage = "Welcome " + Context.User.Mention + "\n" + "Now updating entry with new Name and Description: \n" + "Name: " + groupToEdit.KinkGroupName + "\n" + "Desc: " + groupToEdit.KinkGroupDescrip + "\n"; ulong msgToEditID = groupCommand.MessageID; var msgToEdit = (RestUserMessage)await Context.Channel.GetMessageAsync(msgToEditID, CacheMode.AllowDownload); await msgToEdit.ModifyAsync(x => x.Content = newMessage); await DataMethods.EditGroup(groupToEdit.KinkGroupID, groupToEdit.KinkGroupName, groupToEdit.KinkGroupDescrip); await Task.Delay(1000); newMessage += "\n."; await msgToEdit.ModifyAsync(x => x.Content = newMessage); await Task.Delay(1000); newMessage += "."; await msgToEdit.ModifyAsync(x => x.Content = newMessage); await Task.Delay(1000); newMessage += "."; await msgToEdit.ModifyAsync(x => x.Content = newMessage); await Task.Delay(1000); newMessage += " Done."; await msgToEdit.ModifyAsync(x => x.Content = newMessage); Vars.activeCommands.RemoveAll(x => x.ActorID == Context.User.Id); Vars.tableEntries.RemoveAll(x => x.GetType().Name == "KinkGroup" && (x as KinkGroup).KinkGroupID == groupToEdit.KinkGroupID); } }
public async Task GroupMenuCreator(SocketCommandContext Context) { if (Context.Channel.Id != Vars.menuBuilder.ChannelID) { return; } if (!Vars.menuBuilder.IsActive) { return; } var emojiMenuMsg = (RestUserMessage)await Context.Channel.GetMessageAsync(Vars.menuBuilder.EmojiMenuID); var editMenuMsg = (RestUserMessage)await Context.Channel.GetMessageAsync(Vars.menuBuilder.EditMenuID); if (Vars.menuBuilder.CommandStep == 0) { string groupName = Context.Message.Content; KinkGroup groupToMenufy = DataMethods.GetGroup(groupName); if (groupToMenufy == null) { string quitting = "Invalid group name, quitting!"; await emojiMenuMsg.ModifyAsync(x => x.Content = quitting); await editMenuMsg.ModifyAsync(x => x.Content = quitting); WipeMenuBuilder(); return; } Vars.menuBuilder.CommandStep = 1; Vars.menuBuilder.KinkGroupName = groupToMenufy.KinkGroupName; Vars.menuBuilder.KinkGroupID = groupToMenufy.KinkGroupID; Vars.menuBuilder.KinksToUpdate = DataMethods.GetKinksInGroupWithEmojis(groupToMenufy.KinkGroupID, Vars.menuBuilder.ServerID); Console.WriteLine("We're passing GetKinksInGroupWithEmojis."); if (Vars.menuBuilder.KinksToUpdate == null) { string quitting = "No kinks in group, quitting!"; await emojiMenuMsg.ModifyAsync(x => x.Content = quitting); await editMenuMsg.ModifyAsync(x => x.Content = quitting); WipeMenuBuilder(); return; } Console.WriteLine("We're passing kinkstoupdate null check."); //CONSOLE DATA CHECK Console.WriteLine("Writing kinks to update\n"); foreach (var kink in Vars.menuBuilder.KinksToUpdate) { Console.WriteLine("name - " + kink.KinkName + ", group - " + kink.KinkGroupID + "\n"); } Console.WriteLine("Done"); string emojiMenuText = "\n" + "Building Menu" + "\n" + "\n" + "Group - " + Vars.menuBuilder.KinkGroupName + "\n"; await emojiMenuMsg.ModifyAsync(x => x.Content = emojiMenuText); string editMenuText = "\n" + "Edit Menu" + "\n" + "\n" + "Valid group name!" + "\n"; await editMenuMsg.ModifyAsync(x => x.Content = editMenuText); await Task.Delay(2000); editMenuText += "\n" + "Is this a kink menu or a limit menu? Enter Kink, Limit, or anything else to quit" + "\n"; await editMenuMsg.ModifyAsync(x => x.Content = editMenuText); } else if (Vars.menuBuilder.CommandStep == 1) { string limitOrKink = Context.Message.Content; limitOrKink.ToLower(); limitOrKink = char.ToUpper(limitOrKink[0]) + limitOrKink.Substring(1); if (limitOrKink != "Limit" && limitOrKink != "Kink") { string quitting = "Invalid response, quitting!"; await emojiMenuMsg.ModifyAsync(x => x.Content = quitting); await editMenuMsg.ModifyAsync(x => x.Content = quitting); WipeMenuBuilder(); return; } if (limitOrKink.Equals("limit", StringComparison.OrdinalIgnoreCase)) { Vars.menuBuilder.IsLimitMenu = true; } Vars.menuBuilder.CommandStep++; string emojiMenuText = "\n" + "Building Menu" + "\n" + "\n" + limitOrKink + " Group - " + Vars.menuBuilder.KinkGroupName + "\n"; await emojiMenuMsg.ModifyAsync(x => x.Content = emojiMenuText); string editMenuText = "\n" + "Edit Menu" + "\n" + "\n" + "Valid Entry!" + "\n"; await editMenuMsg.ModifyAsync(x => x.Content = editMenuText); await Task.Delay(2000); editMenuText += "\n" + "Reuse emoji data or enter everything from scratch? Reuse, Scratch, or anything else to quit" + "\n"; await editMenuMsg.ModifyAsync(x => x.Content = editMenuText); } else if (Vars.menuBuilder.CommandStep == 2) { Vars.menuBuilder.CommandStep = 3; string limitOrKink = Vars.menuBuilder.IsLimitMenu ? "Limit" : "Kink"; string reuseOrScratch = Context.Message.Content; reuseOrScratch.ToLower(); reuseOrScratch = char.ToUpper(reuseOrScratch[0]) + reuseOrScratch.Substring(1); if (reuseOrScratch != "Reuse" && reuseOrScratch != "Scratch") { string quitting = "Invalid response, quitting!"; await emojiMenuMsg.ModifyAsync(x => x.Content = quitting); await editMenuMsg.ModifyAsync(x => x.Content = quitting); WipeMenuBuilder(); return; } if (reuseOrScratch == "Scratch") { foreach (KinkWithEmoji kinkWE in Vars.menuBuilder.KinksToUpdate) { kinkWE.ServerID = 0; kinkWE.EmojiName = ""; } } await emojiMenuMsg.RemoveAllReactionsAsync(); string emojiMenuText = "\n" + "Building Menu" + "\n" + "\n" + "**" + limitOrKink + " Group - " + Vars.menuBuilder.KinkGroupName + "**" + "\n" + "\n"; await emojiMenuMsg.ModifyAsync(x => x.Content = emojiMenuText); string editMenuText = "\n" + "Edit Menu" + "\n" + "\n" + "Valid Entry!" + "\n"; var setKinks = Vars.menuBuilder.KinksToUpdate.Where(x => x.EmojiName != "").ToList(); foreach (var kinkWE in setKinks) { IEmote myEmote = null; if (Emote.TryParse(kinkWE.EmojiName, out Emote shitfartz)) { myEmote = shitfartz; } else { myEmote = new Emoji(kinkWE.EmojiName); } //= Emote.TryParse(kinkWE.EmojiName, out Emote shitfartz) ? shitfartz : new Emoji(kinkWE.EmojiName); /* * var anEmoji = Context.Guild.Emotes.Where(x => x.Name == kinkWE.EmojiName).FirstOrDefault(); * * string anEmojiString = anEmoji.ToString(); */ emojiMenuText += myEmote + " " + kinkWE.KinkName + " - " + kinkWE.KinkDesc + "\n" + "\n"; await Task.Delay(1000); await emojiMenuMsg.ModifyAsync(x => x.Content = emojiMenuText); await emojiMenuMsg.AddReactionAsync(myEmote); } //Guild.Emotes.Where(x => x.Name == kinkToUpdate.EmojiName).FirstOrDefault(); await editMenuMsg.ModifyAsync(x => x.Content = editMenuText); //remember if you do reuse that this may not work cause it // could be full if (!Vars.menuBuilder.KinksToUpdate.Any(x => x.EmojiName.Equals(""))) { string building = "Building Menu" + "\n" + "\n"; emojiMenuText = emojiMenuText.Remove(emojiMenuText.IndexOf(building), building.Length); editMenuText += "\n" + "You are all out of kinks to enter! Writing Menu to Database!" + "\n"; await DataMethods.AddKinkMenu(); await Task.Delay(2000); await editMenuMsg.ModifyAsync(x => x.Content = editMenuText); await emojiMenuMsg.ModifyAsync(x => x.Content = emojiMenuText); WipeMenuBuilder(); return; } string firstKinkName = Vars.menuBuilder.KinksToUpdate.Where(x => x.EmojiName.Equals("")).FirstOrDefault().KinkName; editMenuText += "\n" + "Please react to THIS post with the emoji for: " + firstKinkName + "\n"; await Task.Delay(2000); await editMenuMsg.ModifyAsync(x => x.Content = editMenuText); } }