public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            string args = e.Command.ArgumentsAsString;

            if (string.IsNullOrEmpty(args) == true)
            {
                BotProgram.QueueMessage("Usage: \"Input\"");
                return;
            }

            //Parse the input
            (bool valid, List <List <Parser.Input> > inputList, bool containsStartInput, int durationCounter)
            parsedData = default;

            try
            {
                string parse_message = Parser.Expandify(Parser.PopulateMacros(args));

                parsedData = Parser.Parse(parse_message);
            }
            catch
            {
                parsedData.valid = false;
            }

            if (parsedData.valid == false)
            {
                BotProgram.QueueMessage("Invalid input. Note that length cannot be determined for dynamic macros without inputs filled in.");
                return;
            }

            BotProgram.QueueMessage($"Total length: {parsedData.durationCounter}ms");
        }
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            string[] validInputs = InputGlobals.CurrentConsole.ValidInputs;

            if (validInputs == null || validInputs.Length == 0)
            {
                BotProgram.QueueMessage($"Interesting! There are no valid inputs for {InputGlobals.CurrentConsoleVal}?!");
                return;
            }

            StrBuilder.Clear();

            StrBuilder.Append("Valid inputs for ").Append(InputGlobals.CurrentConsoleVal.ToString()).Append(": ");

            for (int i = 0; i < validInputs.Length; i++)
            {
                StrBuilder.Append(validInputs[i]).Append(", ");
            }

            //Remove trailing comma
            StrBuilder.Remove(StrBuilder.Length - 2, 2);

            string validInputsStr = StrBuilder.ToString();

            BotProgram.QueueMessage(validInputsStr);
        }
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            string logMessage = e.Command.ArgumentsAsString;

            if (string.IsNullOrEmpty(logMessage) == true)
            {
                BotProgram.QueueMessage("Please enter a message for the log.");
                return;
            }

            DateTime curTime = DateTime.UtcNow;

            //Add a new log
            GameLog newLog = new GameLog();

            newLog.LogMessage = logMessage;
            newLog.User       = e.Command.ChatMessage.Username;

            string date = curTime.ToShortDateString();
            string time = curTime.ToLongTimeString();

            newLog.DateTimeString = $"{date} at {time}";

            BotProgram.BotData.Logs.Add(newLog);
            BotProgram.SaveBotData();

            BotProgram.QueueMessage("Successfully logged message!");
        }
Exemple #4
0
        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)
        {
            string displayLower = e.Command.ChatMessage.DisplayName.ToLower();

            if (GroupDuelCommand.UsersInDuel.ContainsKey(displayLower) == false)
            {
                BotProgram.QueueMessage("You're not in the group duel!");
                return;
            }
            else
            {
                long betAmt = GroupDuelCommand.UsersInDuel[displayLower];
                GroupDuelCommand.UsersInDuel.Remove(displayLower);

                BotProgram.QueueMessage($"{e.Command.ChatMessage.DisplayName} has backed out of the group duel and retained their {betAmt} credit(s)!");

                //Check for ending the group duel if there are no longer enough participants
                if (GroupDuelCommand.DuelStarted == true && GroupDuelCommand.UsersInDuel.Count < GroupDuelCommand.MinUsersForDuel)
                {
                    GroupDuelCommand.StopGroupDuel();

                    int count = GroupDuelCommand.UsersInDuel.Count;

                    BotProgram.QueueMessage($"Oh no! The group duel has ended since there no longer enough participants. {GroupDuelCommand.MinUsersForDuel - count} more is/are required to start it up again!");
                }
            }
        }
Exemple #6
0
        public override void HandleArgsOnConsoleChange(List <string> arguments)
        {
            if (arguments?.Count == 0)
            {
                return;
            }

            for (int i = 0; i < arguments.Count; i++)
            {
                //Check for enum mode
                if (Enum.TryParse(arguments[i], true, out InputModes mode) == true)
                {
                    InputMode = mode;
                    BotProgram.QueueMessage($"Changed Wii input mode to {mode}!");
                }

                //Kimimaru: I'm debating including the ability to set it by number, so we'll keep it commented until a decision is made
                //if (int.TryParse(arguments[i], out int inputMode) == true)
                //{
                //    InputModes newInputMode = (InputModes)inputMode;
                //    InputMode = (InputModes)inputMode;
                //    Console.WriteLine($"Changed Wii input mode to {newInputMode}");
                //}
            }
        }
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            Expression exp = null;

            try
            {
                string expression = e.Command.ChatMessage.Message.Replace($"{Globals.CommandIdentifier}calculate", string.Empty);

                exp                    = new Expression(expression);
                exp.Options            = EvaluateOptions.IgnoreCase;
                exp.EvaluateParameter += Exp_EvaluateParameter;
                exp.EvaluateFunction  += Exp_EvaluateFunction;

                string finalExpr = exp.Evaluate().ToString();
                //string finalExpr = CalculateTable.Compute(expression, null).ToString();

                BotProgram.QueueMessage(finalExpr);
            }
            catch (Exception exc)
            {
                Console.WriteLine(exc.Message);

                BotProgram.QueueMessage(exc.Message);//"Sorry, I can't calculate that!");
            }
            finally
            {
                if (exp != null)
                {
                    exp.EvaluateParameter -= Exp_EvaluateParameter;
                    exp.EvaluateFunction  -= Exp_EvaluateFunction;
                }
            }
        }
Exemple #8
0
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            List <string> args = e.Command.ArgumentsAsList;

            if (args == null || args.Count <= 0)
            {
                BotProgram.QueueMessage("Choose one or more people to high five!");
                return;
            }

            string highFive = string.Empty;

            for (int i = 0; i < args.Count; i++)
            {
                int nextInd = i + 1;

                if (i > 0)
                {
                    highFive += ", ";
                    if (nextInd == args.Count)
                    {
                        highFive += "and ";
                    }
                }

                highFive += args[i];
            }

            BotProgram.QueueMessage($"{e.Command.ChatMessage.DisplayName} high fives {highFive}!");
        }
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            //Reload settings and bot data
            BotProgram.LoadSettingsAndBotData();

            BotProgram.QueueMessage("Reloaded bot settings and data!");
        }
        private async void ExecuteCSharpScript(string code)
        {
            //Kimimaru: Store the default console output stream
            TextWriter defaultOut = Console.Out;

            try
            {
                //Kimimaru: Output any Console output to the chat
                //To do this, we're overriding the Console's output stream
                using (BotWriter writer = new BotWriter())
                {
                    Console.SetOut(writer);
                    BotProgram.IgnoreConsoleLog = true;

                    var script = await CSharpScript.RunAsync(code, ScriptCompileOptions);

                    Console.SetOut(defaultOut);
                    BotProgram.IgnoreConsoleLog = false;
                }
            }
            catch (CompilationErrorException exception)
            {
                BotProgram.QueueMessage($"Compiler error: {exception.Message}");
            }
            //Regardless of what happens, return the output stream to the default
            finally
            {
                Console.SetOut(defaultOut);
                BotProgram.IgnoreConsoleLog = false;
            }
        }
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            string msg = e.Command.ArgumentsAsString;

            if (msg == null)
            {
                msg = string.Empty;
            }

            BotProgram.BotData.GameMessage = msg;

            //Always save the message to a file so it updates on OBS

            /*For reading from this file on OBS:
             * 1. Create Text (GDI+)
             * 2. Check the box labeled "Read from file"
             * 3. Browse and select the file
             */
            if (Globals.SaveToTextFile(MessageFile, BotProgram.BotData.GameMessage) == false)
            {
                BotProgram.QueueMessage($"Unable to save message to file");
            }

            BotProgram.SaveBotData();
        }
Exemple #12
0
        public void HandleCommand(object sender, OnChatCommandReceivedArgs e)
        {
            if (e == null || e.Command == null || e.Command.ChatMessage == null)
            {
                Console.WriteLine($"{nameof(OnChatCommandReceivedArgs)} or its Command or ChatMessage is null! Not parsing command");
                return;
            }

            string userToLower = e.Command.ChatMessage.DisplayName.ToLower();

            //Don't handle certain users (Ex. MrMacroBot)
            if (ExemptUsers.Contains(userToLower) == true)
            {
                Console.WriteLine($"User {e.Command.ChatMessage.DisplayName} is exempt and I won't take commands from them");
                return;
            }

            User user = BotProgram.GetOrAddUser(userToLower);

            string commandToLower = e.Command.CommandText.ToLower();

            if (CommandDict.TryGetValue(commandToLower, out BaseCommand command) == true)
            {
                //Handle permissions
                if (user.Level >= command.AccessLevel)
                {
                    command.ExecuteCommand(sender, e);
                }
                else
                {
                    BotProgram.QueueMessage(INVALID_ACCESS_MESSAGE);
                }
            }
        }
Exemple #13
0
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            int randinspiration = Rand.Next(0, RandomInspiration.Length);

            string message = RandomInspiration[randinspiration].Replace("{name}", e.Command.ChatMessage.DisplayName);

            BotProgram.QueueMessage(message);
        }
Exemple #14
0
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            List <string> amount = e.Command.ArgumentsAsList;

            if (amount.Count != 1)
            {
                BotProgram.QueueMessage($"Sorry, please enter a valid bet amount!");
                return;
            }

            if (long.TryParse(amount[0], out long creditBet) == true)
            {
                if (creditBet <= 0)
                {
                    BotProgram.QueueMessage("Bet amount must be greater than 0!");
                    return;
                }

                string name        = e.Command.ChatMessage.DisplayName;
                string nameToLower = name.ToLower();

                User user = BotProgram.GetOrAddUser(nameToLower);

                long credits = user.Credits;

                if (creditBet > credits)
                {
                    BotProgram.QueueMessage("Bet amount is greater than credits!");
                }
                else
                {
                    bool   success = (Rand.Next(0, 2) == 0);
                    string message = string.Empty;

                    if (success)
                    {
                        credits += creditBet;
                        message  = $"{name} won {creditBet} credits :D !";
                    }
                    else
                    {
                        credits -= creditBet;
                        message  = $"{name} lost {creditBet} credits :(";
                    }

                    BotProgram.QueueMessage(message);

                    user.Credits = credits;
                    BotProgram.SaveBotData();
                }
            }
            else
            {
                BotProgram.QueueMessage($"Sorry, please enter a valid bet amount!");
            }
        }
        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)
        {
            if (string.IsNullOrEmpty(BotProgram.BotData.InfoMessage) == true)
            {
                BotProgram.QueueMessage(EmptyMessage);
                return;
            }

            BotProgram.QueueMessage(BotProgram.BotData.InfoMessage);
        }
Exemple #17
0
 public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
 {
     if (BotProgram.BotData != null && BotProgram.BotData.JRData != null)
     {
         BotProgram.QueueMessage($"The biggest jump rope streak is {BotProgram.BotData.JRData.Streak}!");
     }
     else
     {
         BotProgram.QueueMessage("Something went wrong - I can't find the highest Jump Rope streak!");
     }
 }
        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)
        {
            string code = e.Command.ArgumentsAsString;

            if (string.IsNullOrEmpty(code) == true)
            {
                BotProgram.QueueMessage($"Usage: \"C# code\"");
                return;
            }

            ExecuteCSharpScript(code);
        }
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            List <string> args = e.Command.ArgumentsAsList;

            if (args.Count < 2)
            {
                BotProgram.QueueMessage($"{Globals.CommandIdentifier}addmeme usage: memename memevalue");
                return;
            }

            if (args[0].ElementAt(0) == Globals.CommandIdentifier)
            {
                BotProgram.QueueMessage($"Memes cannot start with \'{Globals.CommandIdentifier}\'");
                return;
            }

            if (args[0].ElementAt(0) == Globals.MacroIdentifier)
            {
                BotProgram.QueueMessage($"Memes cannot start with \'{Globals.MacroIdentifier}\'");
                return;
            }

            if (args[0].Length > MAX_MEME_LENGTH)
            {
                BotProgram.QueueMessage($"The max meme length is {MAX_MEME_LENGTH} characters!");
                return;
            }

            string memeToLower     = args[0].ToLower();
            bool   sendOverwritten = false;

            if (BotProgram.BotData.Memes.ContainsKey(memeToLower) == true)
            {
                BotProgram.BotData.Memes.Remove(memeToLower);
                sendOverwritten = true;
            }

            string actualMeme = e.Command.ArgumentsAsString.Remove(0, args[0].Length + 1);

            BotProgram.BotData.Memes.Add(memeToLower, actualMeme);

            BotProgram.SaveBotData();

            if (sendOverwritten == true)
            {
                BotProgram.QueueMessage("Meme overwritten!");
            }
            else
            {
                MemesCommand.CacheMemesString();
            }
        }
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            if (BotProgram.BotData.Macros.Count == 0)
            {
                BotProgram.QueueMessage("There are no macros!");
                return;
            }

            List <string> macros = BotProgram.BotData.Macros.Keys.ToList();

            MultiMessageCache.Clear();
            StrBuilder.Clear();

            for (int i = 0; i < macros.Count; i++)
            {
                string macroName = macros[i];

                int newLength = StrBuilder.Length + macroName.Length + 3;
                int maxLength = Globals.BotCharacterLimit;
                if (MultiMessageCache.Count == 0)
                {
                    maxLength -= InitMessage.Length;
                }

                //Send in multiple messages if it exceeds the length
                if (newLength >= maxLength)
                {
                    MultiMessageCache.Add(StrBuilder.ToString());
                    StrBuilder.Clear();
                }

                StrBuilder.Append(macroName).Append(", ");
            }

            StrBuilder.Remove(StrBuilder.Length - 2, 2);

            MultiMessageCache.Add(StrBuilder.ToString());

            for (int i = 0; i < MultiMessageCache.Count; i++)
            {
                if (i == 0)
                {
                    BotProgram.QueueMessage($"{InitMessage}{MultiMessageCache[i]}");
                }
                else
                {
                    BotProgram.QueueMessage(MultiMessageCache[i]);
                }
            }
        }
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            List <string> args = e.Command.ArgumentsAsList;

            //See the console
            if (args.Count == 0)
            {
                BotProgram.QueueMessage($"The current console is {InputGlobals.CurrentConsoleVal}. To set the console, add one as an argument: {GetValidConsoleStr()}");
                return;
            }

            string consoleStr = args[0];

            if (Enum.TryParse <InputGlobals.InputConsoles>(consoleStr, true, out InputGlobals.InputConsoles console) == false)
            {
                BotProgram.QueueMessage($"Please enter a valid console: {GetValidConsoleStr()}");
                return;
            }

            if (console == InputGlobals.CurrentConsoleVal)
            {
                BotProgram.QueueMessage($"The current console is already {InputGlobals.CurrentConsoleVal}!");
                return;
            }

            //First stop all inputs completely while changing consoles - we don't want data from other inputs remaining
            InputHandler.CancelRunningInputs();

            //Wait until no inputs are running
            while (InputHandler.CurrentRunningInputs > 0)
            {
            }

            //Set console and buttons
            InputGlobals.SetConsole(console, args);

            for (int i = 0; i < VJoyController.Joysticks.Length; i++)
            {
                if (VJoyController.Joysticks[i].IsAcquired == true)
                {
                    VJoyController.Joysticks[i].SetButtons(InputGlobals.CurrentConsoleVal);
                }
            }

            //Resume inputs
            InputHandler.ResumeRunningInputs();

            BotProgram.QueueMessage($"Set console to {InputGlobals.CurrentConsoleVal} and reset all running inputs!");
        }
        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;
            }

            //Get the state log
            GameLog stateLog = null;

            if (BotProgram.BotData.SavestateLogs.TryGetValue(stateNum, out stateLog) == false)
            {
                BotProgram.QueueMessage("This state has not yet been saved!");
                return;
            }

            string message = string.Empty;

            //Show the log message if one was input
            if (string.IsNullOrEmpty(stateLog.LogMessage) == false)
            {
                message = $"State {stateNum}, \"{stateLog.LogMessage}\", saved by {stateLog.User} on {stateLog.DateTimeString} (UTC)";
            }
            else
            {
                message = $"State {stateNum}, saved by {stateLog.User} on {stateLog.DateTimeString} (UTC)";
            }

            BotProgram.QueueMessage(message);
        }
Exemple #24
0
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            BotProgram.QueueMessage(Messages[Attempts]);

            if (Attempts >= (Messages.Count - 2))
            {
                BotProgram.QueueMessage(Messages[Attempts + 1]);

                Attempts = 0;
            }
            else
            {
                Attempts++;
            }
        }
Exemple #25
0
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            if (MemesCache.Count == 0)
            {
                BotProgram.QueueMessage("There are none!");
                return;
            }

            for (int i = 0; i < MemesCache.Count; i++)
            {
                string message = (i == 0) ? InitMessage : string.Empty;
                message += MemesCache[i];
                BotProgram.QueueMessage(message);
            }
        }
 public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
 {
     if (e.Command.ChatMessage.Message.Length > 5)
     {
         string realMsg = e.Command.ChatMessage.Message.Remove(0, 5).Trim();// + ". The statement said to me expresses the views of the one instructing me, not myself :D";
         if (realMsg.StartsWith("/") == true)
         {
             BotProgram.QueueMessage("I can't say any Twitch chat commands for you - no hard feelings!");
         }
         else
         {
             BotProgram.QueueMessage(realMsg);
         }
     }
 }
Exemple #27
0
        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.");
        }
Exemple #28
0
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            List <string> args = e.Command.ArgumentsAsList;

            if (args.Count == 0)
            {
                BotProgram.QueueMessage($"The max duration of an input sequence is {BotProgram.BotData.MaxInputDuration} milliseconds!");
                return;
            }

            User user = BotProgram.GetOrAddUser(e.Command.ChatMessage.Username, false);

            //Disallow setting the duration if the user doesn't have a sufficient access level
            if (user.Level < SetAccessLevel)
            {
                BotProgram.QueueMessage(CommandHandler.INVALID_ACCESS_MESSAGE);
                return;
            }

            if (args.Count > 1)
            {
                BotProgram.QueueMessage($"Usage: \"duration (ms)\"");
                return;
            }

            if (int.TryParse(args[0], out int newMaxDur) == false)
            {
                BotProgram.QueueMessage("Please enter a valid number!");
                return;
            }

            if (newMaxDur < 0)
            {
                BotProgram.QueueMessage("Cannot set a negative duration!");
                return;
            }

            if (newMaxDur == BotProgram.BotData.MaxInputDuration)
            {
                BotProgram.QueueMessage("The duration is already this value!");
                return;
            }

            BotProgram.BotData.MaxInputDuration = newMaxDur;
            BotProgram.SaveBotData();

            BotProgram.QueueMessage($"Set max input sequence duration to {newMaxDur} milliseconds!");
        }
        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.");
        }
Exemple #30
0
        public override void ExecuteCommand(object sender, OnChatCommandReceivedArgs e)
        {
            int numLogs = BotProgram.BotData.Logs.Count;

            if (numLogs == 1)
            {
                BotProgram.QueueMessage("There is 1 game log!");
            }
            else if (numLogs > 0)
            {
                BotProgram.QueueMessage($"There are {numLogs} game logs!");
            }
            else
            {
                BotProgram.QueueMessage("There are no game logs!");
            }
        }