示例#1
0
        public bool BlockUser(string message)
        {
            SpeechWordHandler speechWordHandler = new SpeechWordHandler();

            string[] messages;

            //First try splitting the message to check whether there is an username available
            try { messages = message.Split(' '); }
            catch { return(false); }

            if (messages.Length > 2)
            {
                return(false);
            }

            string user = messages[1];

            if (speechWordHandler.CheckBlocked(user))
            {
                return(false);
            }

            File.AppendAllLines(speechWordHandler.GetBlockListLocation(), new string[] { "\n", user });
            return(true);
        }
示例#2
0
        public bool UnblockUser(string message)
        {
            SpeechWordHandler speechWordHandler = new SpeechWordHandler();

            string[] messages;

            //First try splitting the message to check whether there is an username available
            try { messages = message.Split(' '); }
            catch { return(false); }
            if (messages.Length > 2)
            {
                return(false);
            }

            string user = messages[1];

            //If user is not in blocked list, return.
            if (!speechWordHandler.CheckBlocked(user))
            {
                return(false);
            }
            var lines = File.ReadAllLines(speechWordHandler.GetBlockListLocation());

            //Remove user
            for (int i = 0; i < lines.Length; i++)
            {
                if (lines[i] == user)
                {
                    lines[i] = lines[i].Replace(user, "");
                    break;
                }
            }
            //firstly, remove WhiteSpace and then replace old file with new file
            var newLines = lines.Where(arg => !string.IsNullOrWhiteSpace(arg));

            File.WriteAllLines(speechWordHandler.GetBlockListLocation(), newLines);
            return(true);
        }
示例#3
0
        private void OnMessageReceived(object sender, OnMessageReceivedArgs e)
        {
            CommandHandler commandHandler = new CommandHandler();

            Console.WriteLine($"{e.ChatMessage.Username}:{e.ChatMessage.Message}");
            string newUsername = speechWordHandler.ContainsUsername(e.ChatMessage.Username);

            if (e.ChatMessage.Username == e.ChatMessage.BotUsername) //Ignore TTS-Bot.
            {
                return;
            }

            if (e.ChatMessage.IsModerator || e.ChatMessage.IsBroadcaster)
            {
                if (e.ChatMessage.Message.StartsWith("!block"))
                {
                    bool blocked = commandHandler.BlockUser(e.ChatMessage.Message);
                    if (blocked)
                    {
                        client.SendMessage(config.GetChannel(), "The user has been successfully blocked.");
                    }
                    else
                    {
                        client.SendMessage(config.GetChannel(), "The user is already blocked or the input was wrong.");
                    }
                }
                else if (e.ChatMessage.Message.StartsWith("!unblock"))
                {
                    bool unblocked = commandHandler.UnblockUser(e.ChatMessage.Message);
                    if (unblocked)
                    {
                        client.SendMessage(config.GetChannel(), "The user has been successfully unblocked.");
                    }
                    else
                    {
                        client.SendMessage(config.GetChannel(), "The user isn't blocked or the input was wrong.");
                    }
                }
            }

            if (speechWordHandler.CheckBlocked(e.ChatMessage.Username)) //Ignore blocked users
            {
                return;
            }
            if (e.ChatMessage.Message.StartsWith("!")) //Ignore Commands starting with !
            {
                return;
            }

            //Check if URL is in Message
            Regex UrlMatch = new Regex(@"(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?");
            Match url      = UrlMatch.Match(e.ChatMessage.Message);

            //Create a List for multiple bad Words in sentence
            //Add first replaced sentence
            //Get first replaced sentence and replace it and continue this loop for each bad word.
            List <string> badWords = new List <string>();

            badWords = speechWordHandler.ContainsBadWord(e.ChatMessage.Message);


            string newMessageEdited = e.ChatMessage.Message;

            if (url.Success) //Check if contains URL
            {
                newMessageEdited = e.ChatMessage.Message.Replace(url.Value, "url");
            }

            if (badWords.Count != 0) //Check if containing bad words
            {
                for (int i = 0; i < badWords.Count; i++)
                {
                    newMessageEdited = newMessageEdited.Replace(badWords.ElementAt(i), antiswear);
                }
            }
            if (maxWordLength <= newMessageEdited.Length && maxWordLength != 0) //Check if Sentence is too long
            {
                newMessageEdited = newMessageEdited.Substring(0, Math.Min(newMessageEdited.Length, maxWordLength)) + "....... " + longMessage;
                speechHelper.Speak($"{newUsername} {messageConnector} {newMessageEdited}");
                return;
            }
            speechHelper.Speak($"{newUsername} {messageConnector} {newMessageEdited}");
        }