public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e) { List <string> args = e.Command.ArgumentsAsList; if (args.Count > 1) { BotProgram.QueueMessage("Usage: \"username\""); return; } string username = string.Empty; //If no arguments are specified, use the name of the user who performed the command if (args.Count == 0) { username = e.Command.ChatMessage.Username; } else { username = args[0]; } User user = BotProgram.GetUser(username, false); if (user == null) { BotProgram.QueueMessage($"User does not exist in database!"); return; } //Print the user's information BotProgram.QueueMessage($"User: {user.Name} | Level: {user.Level} | Total Inputs: {user.ValidInputs} | Total Messages: {user.TotalMessages}"); }
public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e) { List <string> args = e.Command.ArgumentsAsList; //If a username was specified, view that user's silenced state if (args.Count == 1) { string username = args[0].ToLowerInvariant(); User user = BotProgram.GetUser(username); if (user == null) { BotProgram.QueueMessage($"User does not exist in database!"); } else { if (user.Silenced == false) { BotProgram.QueueMessage($"User {username} is not currently silenced and can perform inputs."); } else { BotProgram.QueueMessage($"User {username} is currently silenced and cannot perform inputs."); } } return; } //No arguments, so print all users who are silenced if (BotProgram.BotData.SilencedUsers.Count == 0) { BotProgram.QueueMessage("No users are silenced. Hurray!"); return; } //Copy for safety in case this gets modified during iteration string[] silencedNames = new string[BotProgram.BotData.SilencedUsers.Count]; BotProgram.BotData.SilencedUsers.CopyTo(silencedNames); StrBuilder.Clear(); StrBuilder.Append("Currently silenced users: "); for (int i = 0; i < silencedNames.Length; i++) { StrBuilder.Append(silencedNames[i]).Append(", "); } //Remove trailing comma StrBuilder.Remove(StrBuilder.Length - 2, 2); string silencedStr = StrBuilder.ToString(); BotProgram.QueueMessage(silencedStr); }
public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e) { List <string> args = e.Command.ArgumentsAsList; if (args == null || args.Count != 2) { BotProgram.QueueMessage("Please specify a single user followed by the amount of credits you wish to transfer!"); return; } string giver = e.Command.ChatMessage.DisplayName; string giverToLower = giver.ToLower(); string receiver = args[0]; string receiverToLower = receiver.ToLower(); if (giverToLower == receiverToLower) { BotProgram.QueueMessage("You cannot transfer points to yourself!"); return; } //If the user transferring points isn't in the database, add them User giverUser = BotProgram.GetOrAddUser(giverToLower); User receiverUser = BotProgram.GetUser(receiverToLower); if (receiverUser == null) { BotProgram.QueueMessage($"{receiver} is not in the database!"); return; } long transferAmount = -1L; bool success = long.TryParse(args[1], out transferAmount); if (success == false || transferAmount <= 0) { BotProgram.QueueMessage("Please specify a positive whole number of credits greater than 0!"); return; } if (giverUser.Credits < transferAmount) { BotProgram.QueueMessage("The transfer amount is greater than your credits!"); return; } giverUser.Credits -= transferAmount; receiverUser.Credits += transferAmount; BotProgram.SaveBotData(); BotProgram.QueueMessage($"{giver} has transferred {transferAmount} points to {receiver} :D !"); }
public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e) { List <string> args = e.Command.ArgumentsAsList; if (args.Count != 1) { BotProgram.QueueMessage("Usage: \"username\""); return; } string unsilencedName = args[0].ToLowerInvariant(); string selfName = e.Command.ChatMessage.Username.ToLowerInvariant(); if (unsilencedName == selfName) { BotProgram.QueueMessage("Nice try."); return; } User user = BotProgram.GetUser(unsilencedName); if (user == null) { BotProgram.QueueMessage($"User does not exist in database!"); return; } if (user.Silenced == false) { BotProgram.QueueMessage($"User {unsilencedName} is not silenced!"); return; } //Make sure the user you're silencing is a lower level than you User selfUser = BotProgram.GetUser(selfName); if (selfUser.Level <= user.Level) { BotProgram.QueueMessage($"Cannot unsilence a user at or above your access level!"); return; } user.Silenced = false; BotProgram.BotData.SilencedUsers.Remove(unsilencedName); BotProgram.SaveBotData(); BotProgram.QueueMessage($"User {unsilencedName} has been unsilenced and can perform inputs once again."); }
public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e) { List <string> args = e.Command.ArgumentsAsList; if (args.Count != 1) { BotProgram.QueueMessage("Usage: \"username\""); return; } string silencedName = args[0].ToLowerInvariant(); string selfName = e.Command.ChatMessage.Username.ToLowerInvariant(); if (silencedName == selfName) { BotProgram.QueueMessage("No use in silencing yourself, silly!"); return; } User user = BotProgram.GetUser(silencedName); if (user == null) { BotProgram.QueueMessage($"User does not exist in database!"); return; } if (user.Silenced == true) { BotProgram.QueueMessage($"User {silencedName} is already silenced!"); return; } //Make sure the user you're silencing is a lower level than you User selfUser = BotProgram.GetUser(selfName); if (selfUser.Level <= user.Level) { BotProgram.QueueMessage($"Cannot silence a user at or above your access level!"); return; } user.Silenced = true; BotProgram.BotData.SilencedUsers.Add(silencedName); BotProgram.SaveBotData(); BotProgram.QueueMessage($"User {silencedName} has been silenced and thus prevented from performing inputs."); }
public override void ExecuteCommand(EvtChatCommandArgs e) { string name = e.Command.ChatMessage.DisplayName; string nameToLower = name.ToLower(); User user = BotProgram.GetUser(nameToLower); if (ConfirmClearedStatsUsers.Contains(nameToLower) == false) { BotProgram.MsgHandler.QueueMessage($"WARNING {name}: this clears all miscellaneous user stats, such as credits and message/input counts. If you're sure, retype this command with \"{ConfirmClearStr}\" as an argument to clear or \"{ConfirmStopStr}\" to ignore."); ConfirmClearedStatsUsers.Add(nameToLower); return; } else { //Check for an argument List <string> args = e.Command.ArgumentsAsList; //Only accept the exact argument if (args.Count != 1) { return; } string confirmation = args[0]; //Confirm - clear stats if (confirmation == ConfirmClearStr) { ClearUserStats(user); BotProgram.SaveBotData(); ConfirmClearedStatsUsers.Remove(nameToLower); BotProgram.MsgHandler.QueueMessage("Successfully cleared stats!"); } //Ignore else if (confirmation == ConfirmStopStr) { ConfirmClearedStatsUsers.Remove(nameToLower); BotProgram.MsgHandler.QueueMessage("Cancelled clearing stats!"); } } }
public override void ExecuteCommand(EvtChatCommandArgs e) { List <string> args = e.Command.ArgumentsAsList; if (args.Count > 1) { BotProgram.MsgHandler.QueueMessage($"{Globals.CommandIdentifier}level usage: \"username (optional)\""); return; } string levelUsername = (args.Count == 1) ? args[0].ToLowerInvariant() : e.Command.ChatMessage.Username.ToLowerInvariant(); User levelUser = BotProgram.GetUser(levelUsername, true); if (levelUser == null) { BotProgram.MsgHandler.QueueMessage($"User does not exist in database!"); return; } BotProgram.MsgHandler.QueueMessage($"{levelUsername} is level {levelUser.Level}, {((AccessLevels.Levels)levelUser.Level)}!"); }
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) { string userName = e.Command.ChatMessage.DisplayName; //Allow inspiring another user List <string> args = e.Command.ArgumentsAsList; if (args.Count == 1) { //Check if the name is in the database User user = BotProgram.GetUser(args[0], false); if (user != null) { userName = user.Name; } } int randinspiration = Rand.Next(0, RandomInspiration.Length); string message = RandomInspiration[randinspiration].Replace("{name}", userName); BotProgram.MsgHandler.QueueMessage(message); }
public override void ExecuteCommand(EvtChatCommandArgs e) { List <string> args = e.Command.ArgumentsAsList; string userName = e.Command.ChatMessage.DisplayName.ToLowerInvariant(); User user = BotProgram.GetUser(userName); if (user == null) { Console.WriteLine($"User {e.Command.ChatMessage.DisplayName} not in database."); return; } if (args.Count == 0) { ExecuteNoArgs(user); return; } //If "new" is specified, generate a new input sequence if (args.Count == 1 && args[0] == GenerateNewArg) { ExecuteNewArg(user); return; } //Make sure the user has an exercise - if not, output the same message if (UserExercises.ContainsKey(user.Name) == false) { ExecuteNoArgs(user); return; } //There's more than one argument and the user has an exercise; so it has to be the input //Let's validate it! ExecuteValidateInput(user, e.Command.ArgumentsAsString, InputGlobals.CurrentConsole); }
private User DummyUserSetup() { //Set name string line = string.Empty; while (string.IsNullOrEmpty(line) == true) { Console.WriteLine("Please choose a valid name for your user. This can be a valid user in your BotData."); line = Console.ReadLine(); } User user = BotProgram.GetUser(line, false); if (user != null) { return(user); } string userName = line; //Set level int level = -1; line = string.Empty; while (level < 0) { Console.WriteLine("Please choose an access level for your user."); line = Console.ReadLine(); AccessLevels.Levels[] levelArray = EnumUtility.GetValues <AccessLevels.Levels> .EnumValues; if (int.TryParse(line, out int levelNum) == false) { Console.WriteLine("Invalid level specified."); continue; } bool found = false; string lvlName = string.Empty; for (int i = 0; i < levelArray.Length; i++) { if (levelNum == (int)levelArray[i]) { found = true; lvlName = levelArray[i].ToString(); break; } } if (found == false) { Console.WriteLine("Invalid level specified."); continue; } level = levelNum; } //Return new user user = new User(); user.Name = userName; user.Level = level; return(user); }
public override void ExecuteCommand(EvtChatCommandArgs e) { string name = e.Command.ChatMessage.DisplayName; string nameToLower = name.ToLower(); if (DuelCommand.DuelRequests.ContainsKey(nameToLower) == true) { DuelCommand.DuelData data = DuelCommand.DuelRequests[nameToLower]; DuelCommand.DuelRequests.Remove(nameToLower); TimeSpan diff = DateTime.Now - data.CurDuelTime; if (diff.TotalMinutes >= DuelCommand.DUEL_MINUTES) { BotProgram.MsgHandler.QueueMessage("You are not in a duel or your duel has expired!"); return; } long betAmount = data.BetAmount; string dueled = data.UserDueling; string dueledToLower = dueled.ToLower(); User duelerUser = BotProgram.GetUser(nameToLower); User dueledUser = BotProgram.GetUser(dueledToLower); //First confirm both users have enough credits for the duel, as they could've lost some in that time if (duelerUser.Credits < betAmount || dueledUser.Credits < betAmount) { BotProgram.MsgHandler.QueueMessage("At least one user involved in the duel no longer has enough points for the duel! The duel is off!"); return; } //50/50 chance of either user winning int val = Rand.Next(0, 2); string message = string.Empty; if (val == 0) { duelerUser.AddCredits(betAmount); dueledUser.SubtractCredits(betAmount); message = $"{name} won the bet against {dueled} for {betAmount} credit(s)!"; } else { duelerUser.SubtractCredits(betAmount); dueledUser.AddCredits(betAmount); message = $"{dueled} won the bet against {name} for {betAmount} credit(s)!"; } BotProgram.SaveBotData(); BotProgram.MsgHandler.QueueMessage(message); } else { BotProgram.MsgHandler.QueueMessage("You are not in a duel or your duel has expired!"); } }
public override void ExecuteCommand(EvtChatCommandArgs e) { List <string> args = e.Command.ArgumentsAsList; if (args == null || args.Count != 2) { BotProgram.MsgHandler.QueueMessage("Please specify a single user to duel followed by the bet amount!"); return; } string dueler = e.Command.ChatMessage.DisplayName; string duelerToLower = dueler.ToLower(); string user = args[0]; string usertoLower = user.ToLower(); if (duelerToLower == usertoLower) { BotProgram.MsgHandler.QueueMessage("You cannot duel yourself!"); return; } //If the user dueling isn't in the database, add them User duelerUser = BotProgram.GetOrAddUser(duelerToLower); User cmdUser = BotProgram.GetUser(usertoLower); if (cmdUser == null) { BotProgram.MsgHandler.QueueMessage($"{user} is not in the database!"); return; } if (duelerUser.OptedOut == true) { BotProgram.MsgHandler.QueueMessage("You can't duel if you're opted out of bot stats!"); return; } if (cmdUser.OptedOut == true) { BotProgram.MsgHandler.QueueMessage("The one you're attempting to duel is opted out of bot stats!"); return; } //Check if the duel expired and replace it with this one if so if (DuelRequests.ContainsKey(usertoLower) == true) { DuelData data = DuelRequests[usertoLower]; TimeSpan diff = DateTime.Now - data.CurDuelTime; if (diff.TotalMinutes >= DUEL_MINUTES) { DuelRequests.Remove(usertoLower); } else { BotProgram.MsgHandler.QueueMessage($"You're still waiting on a duel response from {user}!"); return; } } long betAmount = -1L; bool success = long.TryParse(args[1], out betAmount); if (success == false || betAmount <= 0) { BotProgram.MsgHandler.QueueMessage("Please specify a positive whole number of credits greater than 0!"); return; } if (duelerUser.Credits < betAmount || cmdUser.Credits < betAmount) { BotProgram.MsgHandler.QueueMessage("Either you or the one you're dueling does not have enough credits for this duel!"); return; } //Add to the duel requests DuelRequests.Add(usertoLower, new DuelData(dueler, betAmount, DateTime.Now)); BotProgram.MsgHandler.QueueMessage($"{dueler} has requested to duel {user} for {betAmount} credit(s)! Type {Globals.CommandIdentifier}accept to duel or {Globals.CommandIdentifier}deny to refuse. The duel expires in {DUEL_MINUTES} minute(s)!"); }
public override void ExecuteCommand(EvtChatCommandArgs e) { List <string> args = e.Command.ArgumentsAsList; if (args.Count != 2) { BotProgram.MsgHandler.QueueMessage($"{Globals.CommandIdentifier}setlevel usage: \"username\" \"level\""); return; } string levelUsername = args[0].ToLowerInvariant(); string levelStr = args[1]; string curUserName = e.Command.ChatMessage.Username.ToLowerInvariant(); if (levelUsername == curUserName) { BotProgram.MsgHandler.QueueMessage("You cannot set your own level!"); return; } User levelUser = BotProgram.GetUser(levelUsername, true); if (levelUser == null) { BotProgram.MsgHandler.QueueMessage($"User does not exist in database!"); return; } User curUser = BotProgram.GetUser(e.Command.ChatMessage.Username, true); if (curUser == null) { BotProgram.MsgHandler.QueueMessage("Invalid user of this command; something went wrong?!"); return; } if (levelUser.Level >= curUser.Level) { BotProgram.MsgHandler.QueueMessage("You can't set the level of a user with a level equal to or greater than yours!"); return; } if (int.TryParse(levelStr, out int levelNum) == false) { BotProgram.MsgHandler.QueueMessage("Invalid level specified."); return; } AccessLevels.Levels[] levelArray = EnumUtility.GetValues <AccessLevels.Levels> .EnumValues; bool found = false; string lvlName = string.Empty; for (int i = 0; i < levelArray.Length; i++) { if (levelNum == (int)levelArray[i]) { found = true; lvlName = levelArray[i].ToString(); break; } } if (found == false) { BotProgram.MsgHandler.QueueMessage("Invalid level specified."); return; } if (levelNum > curUser.Level) { BotProgram.MsgHandler.QueueMessage("You cannot set a level greater than your own!"); return; } levelUser.SetLevel(levelNum); BotProgram.SaveBotData(); BotProgram.MsgHandler.QueueMessage($"Set {levelUsername}'s level to {levelNum}, {lvlName}!"); }
public override void ExecuteCommand(EvtChatCommandArgs e) { //Console.WriteLine("Executed"); List <string> args = e.Command.ArgumentsAsList; if (args.Count > 1) { BotProgram.MsgHandler.QueueMessage("Usage: \"controller number\""); return; } int controllerIndex = 0; //Default to the user's controller port User user = BotProgram.GetUser(e.Command.ChatMessage.DisplayName, false); if (user != null) { controllerIndex = user.Team; } //Parse the controller port if we have another argument if (args.Count == 1) { //Console.WriteLine("Found arg"); string arg = args[0]; //Couldn't parse if (int.TryParse(arg, out int value) == false) { BotProgram.MsgHandler.QueueMessage("Usage: \"controller number\""); return; } //Subtract 1 for consistency (Ex. player 1 is controller index 0) controllerIndex = value - 1; //Console.WriteLine($"Arg val set to {controllerIndex}"); } else { //Console.WriteLine("No arg found"); } //Console.WriteLine("CONTROLLER INDEX: " + controllerIndex); //Check if the controller port is out of range if (controllerIndex < 0 || controllerIndex >= InputGlobals.ControllerMngr.ControllerCount) { BotProgram.MsgHandler.QueueMessage($"controller port is out of the 1 to {InputGlobals.ControllerMngr.ControllerCount} range."); return; } //Get the controller IVirtualController controller = InputGlobals.ControllerMngr.GetController(controllerIndex); if (controller.IsAcquired == false) { BotProgram.MsgHandler.QueueMessage($"Controller at index {controllerIndex} is not acquired."); return; } //Console.WriteLine("Found controller and acquired"); StringBuilder stringBuilder = new StringBuilder(500); string startString = $"Pressed inputs for controller {controllerIndex + 1}: "; stringBuilder.Append(startString); //Check which inputs are pressed string[] validInputs = InputGlobals.ValidInputs; for (int i = 0; i < validInputs.Length; i++) { string inputName = validInputs[i]; ButtonStates btnState = controller.GetInputState(inputName); if (btnState == ButtonStates.Pressed) { stringBuilder.Append(inputName).Append(',').Append(' '); } } //If the controller doesn't have any pressed inputs, mention it if (stringBuilder.Length == startString.Length) { stringBuilder.Append("None!"); } else { stringBuilder.Remove(stringBuilder.Length - 2, 2); } string finalStr = stringBuilder.ToString(); BotProgram.MsgHandler.QueueMessage(finalStr); }