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); } }