public Task <Result> Execute(SocketUserMessage e, string expression, object input) { List <BotConfiguration.Entry> toModify = BotConfiguration.RegexSearchEntries(expression); IEnumerable <string> names = toModify.Select(x => x.name); Program.messageControl.SendMessage(e.Channel, names.ToArray().Singlify(), false, "```"); int succesful = 0; Program.messageControl.AskQuestion(e.Channel.Id, "Confirm edit of these configuration entries?", delegate() { foreach (string entry in names) { object current = BotConfiguration.GetSetting(entry, null, default(object)); object possibleJSON = null; try { possibleJSON = JsonConvert.DeserializeObject(current.ToString()); } catch { } object newObject = null; try { newObject = Convert.ChangeType(input, current.GetType()); BotConfiguration.SetSetting(entry, newObject, false); succesful++; } catch (Exception exception) { Logging.Log(exception); } } BotConfiguration.SaveSettings(); Program.messageControl.SendMessage(e, $"Succesfully edited {succesful} out of {toModify.Count} entries.", false); List <BotConfiguration.Entry> reloaded = new List <BotConfiguration.Entry> (); foreach (var entry in toModify) { if (!reloaded.Contains(entry)) { entry.ReloadConfigurables(); reloaded.Add(entry); } } }); return(TaskResult(null, "")); }