public override void Execute(List <string> parameters, CommandSenderInfo senderInfo) { TelemetryTools.CollectEvent("command", "execute", GetCommands()[0]); try { ParseParams(parameters, out var tasks, out bool simulate, out bool auto, out int?timerInterval); timerInterval = timerInterval ?? 60 * 10; // every 10 minutes by default if (auto) { if (!PersistentData.Instance.RepairAuto) { PersistentData.Instance.RepairAuto = true; PersistentData.Instance.RepairTasks = tasks; PersistentData.Instance.RepairSimulate = simulate; PersistentData.Instance.RepairInterval = timerInterval.Value; // every 10 minutes by default; PersistentData.Instance.Save(); RepairEngine.AutoOn(); } else { RepairEngine.AutoOff(); PersistentData.Instance.RepairAuto = false; PersistentData.Instance.RepairCounter = 0; PersistentData.Instance.Save(); } } else { ThreadManager.AddSingleTask(delegate { try { var repairEngine = new RepairEngine(tasks, simulate, senderInfo); repairEngine.Start(); } catch (Exception ex) { Log.Exception(ex); SdtdConsole.Instance.OutputAsync(senderInfo, string.Format(Resources.ErrorDuringCommand, ex.Message)); } }); } } catch (Exception ex) { CommandTools.HandleCommandException(ex); } }