public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e) { List <string> args = e.Command.ArgumentsAsList; int logNum = 0; //If no log number was specified, use the most recent one if (args.Count == 0) { logNum = BotProgram.BotData.Logs.Count - 1; } else if (args.Count == 1) { string num = args[0]; if (int.TryParse(num, out logNum) == false) { BotProgram.QueueMessage("Invalid log number!"); return; } //Go from back to front (Ex. "!viewlog 1" shows the most recent log) logNum = BotProgram.BotData.Logs.Count - logNum; } else { BotProgram.QueueMessage($"Usage: \"recent log number (optional)\""); return; } if (logNum < 0 || logNum >= BotProgram.BotData.Logs.Count) { BotProgram.QueueMessage($"No log found!"); return; } GameLog log = BotProgram.BotData.Logs[logNum]; BotProgram.QueueMessage($"{log.DateTimeString} (UTC) --> {log.User} : {log.LogMessage}"); }
public override void ExecuteCommand(EvtChatCommandArgs e) { string logMessage = e.Command.ArgumentsAsString; if (string.IsNullOrEmpty(logMessage) == true) { BotProgram.MsgHandler.QueueMessage("Please enter a message for the log."); return; } DateTime curTime = DateTime.UtcNow; User user = BotProgram.GetUser(e.Command.ChatMessage.Username, false); string username = string.Empty; //Add a new log GameLog newLog = new GameLog(); newLog.LogMessage = logMessage; //If the user exists and isn't opted out of bot stats, add their name if (user != null && user.OptedOut == false) { username = e.Command.ChatMessage.Username; } newLog.User = username; string date = curTime.ToShortDateString(); string time = curTime.ToLongTimeString(); newLog.DateTimeString = $"{date} at {time}"; BotProgram.BotData.Logs.Add(newLog); BotProgram.SaveBotData(); BotProgram.MsgHandler.QueueMessage("Successfully logged message!"); }
public override void ExecuteCommand(EvtChatCommandArgs e) { List <string> args = e.Command.ArgumentsAsList; if (args.Count < 1) { BotProgram.MsgHandler.QueueMessage("Usage: state #"); return; } string stateNumStr = args[0]; if (int.TryParse(stateNumStr, out int stateNum) == false) { BotProgram.MsgHandler.QueueMessage("Invalid state number."); return; } string saveStateStr = $"ss{stateNum}"; if (InputGlobals.CurrentConsole.ButtonInputMap.ContainsKey(saveStateStr) == false) { BotProgram.MsgHandler.QueueMessage("Invalid state number."); return; } User user = BotProgram.GetOrAddUser(e.Command.ChatMessage.Username, false); //Check if the user can perform this input ParserPostProcess.InputValidation inputValidation = ParserPostProcess.CheckInputPermissions(user.Level, saveStateStr, BotProgram.BotData.InputAccess.InputAccessDict); //If the input isn't valid, exit if (inputValidation.IsValid == false) { if (string.IsNullOrEmpty(inputValidation.Message) == false) { BotProgram.MsgHandler.QueueMessage(inputValidation.Message); } return; } //Savestates are always performed on the first controller IVirtualController joystick = InputGlobals.ControllerMngr.GetController(0); joystick.PressButton(InputGlobals.CurrentConsole.ButtonInputMap[saveStateStr]); joystick.UpdateController(); //Track the time of the savestate DateTime curTime = DateTime.UtcNow; //Add a new savestate log GameLog newStateLog = new GameLog(); newStateLog.User = e.Command.ChatMessage.Username; string date = curTime.ToShortDateString(); string time = curTime.ToLongTimeString(); newStateLog.DateTimeString = $"{date} at {time}"; newStateLog.User = e.Command.ChatMessage.Username; newStateLog.LogMessage = string.Empty; //Add the message if one was specified if (args.Count > 1) { string message = e.Command.ArgumentsAsString.Remove(0, stateNumStr.Length + 1); newStateLog.LogMessage = message; } //Add or replace the log and save the bot data BotProgram.BotData.SavestateLogs[stateNum] = newStateLog; BotProgram.SaveBotData(); BotProgram.MsgHandler.QueueMessage($"Saved state {stateNum}!"); //Wait a bit before releasing the input const float wait = 50f; Stopwatch sw = Stopwatch.StartNew(); while (sw.ElapsedMilliseconds < wait) { } joystick.ReleaseButton(InputGlobals.CurrentConsole.ButtonInputMap[saveStateStr]); joystick.UpdateController(); }
public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e) { List <string> args = e.Command.ArgumentsAsList; if (args.Count < 1) { BotProgram.QueueMessage("Usage: state #"); return; } string stateNumStr = args[0]; if (int.TryParse(stateNumStr, out int stateNum) == false) { BotProgram.QueueMessage("Invalid state number."); return; } string saveStateStr = $"savestate{stateNum}"; if (InputGlobals.CurrentConsole.ButtonInputMap.ContainsKey(saveStateStr) == false) { BotProgram.QueueMessage("Invalid state number."); return; } //Savestates are always performed on the first controller VJoyController joystick = VJoyController.GetController(0); joystick.PressButton(saveStateStr); joystick.UpdateJoystickEfficient(); //Track the time of the savestate DateTime curTime = DateTime.UtcNow; //Add a new savestate log GameLog newStateLog = new GameLog(); newStateLog.User = e.Command.ChatMessage.Username; string date = curTime.ToShortDateString(); string time = curTime.ToLongTimeString(); newStateLog.DateTimeString = $"{date} at {time}"; newStateLog.User = e.Command.ChatMessage.Username; newStateLog.LogMessage = string.Empty; //Add the message if one was specified if (args.Count > 1) { string message = e.Command.ArgumentsAsString.Remove(0, stateNumStr.Length + 1); newStateLog.LogMessage = message; } //Add or replace the log and save the bot data BotProgram.BotData.SavestateLogs[stateNum] = newStateLog; BotProgram.SaveBotData(); BotProgram.QueueMessage($"Saved state {stateNum}!"); //Wait a bit before releasing the input const float wait = 50f; Stopwatch sw = Stopwatch.StartNew(); while (sw.ElapsedMilliseconds < wait) { } joystick.ReleaseButton(saveStateStr); joystick.UpdateJoystickEfficient(); }