Ejemplo n.º 1
0
        /// <summary>
        /// Adds a new filter.
        /// </summary>
        /// <param name="filterType">Type of filter to be added based on FilterType enum.</param>
        /// <param name="lastMassage">Message to get the filter from.</param>
        private void AddFilter(Storage.ChatFilters.FilterType filterType, ChatMessage lastMassage)
        {
            lastMassage.Message = lastMassage.Message.StripSingleWord();
            if (lastMassage.Message == "")
            {
                ChannelInstance.SendChatMessageResponse(lastMassage, "Filter can not be empty!");
                return;
            }

            //This is important, since we don't want regexes that fail to compile in memory
            try
            {
                Regex testRegex = new Regex(lastMassage.Message);
            }
            catch
            {
                ChannelInstance.SendChatMessageResponse(lastMassage, "Failed to compile regex!");
                return;
            }

            switch (filterType)
            {
            case (Storage.ChatFilters.FilterType.Purge):
            {
                var newFilter = lastMassage.Message;
                Filters.PurgeFilters.Add(new Storage.ChatFilter(newFilter, "", 1));
                Filters.Save();
                ChannelInstance.SendChatMessageResponse(lastMassage, "Added! You can update it further using command: !chatfilter update purge last Response:\"Custom response\"");
            }
            break;

            case (Storage.ChatFilters.FilterType.Timeout):
            {
                var newFilter = lastMassage.Message;
                Filters.TimeOutFilter.Add(new Storage.ChatFilter(newFilter, "", 1));
                Filters.Save();
                ChannelInstance.SendChatMessageResponse(lastMassage, "Added! You can update it further using command: !chatfilter update timeout last Response:\"Custom response\", Duration:\"Lenght\"");
            }
            break;

            case (Storage.ChatFilters.FilterType.Ban):
            {
                var newFilter = lastMassage.Message;
                Filters.BanFilters.Add(new Storage.ChatFilter(newFilter, "", 1));
                Filters.Save();
                ChannelInstance.SendChatMessageResponse(lastMassage, "Added! You can update it further using command: !chatfilter update ban last Response:\"Custom response\"");
            }
            break;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Removes the filter using a given ID.
        /// </summary>
        /// <param name="filterType">Type of filter to be removed based on FilterType enum.</param>
        /// <param name="lastMassage">Message from which to get id from.</param>
        private void RemoveFilter(Storage.ChatFilters.FilterType filterType, ChatMessage lastMassage)
        {
            lastMassage.Message = lastMassage.Message.StripSingleWord();
            if (lastMassage.Message == "")
            {
                ChannelInstance.SendChatMessageResponse(lastMassage, "ID can not be empty!");
                return;
            }
            else if (lastMassage.Message.StartsWithLazy("last"))
            {
                lastMassage.Message = lastMassage.Message.StripSingleWord();

                switch (filterType)
                {
                case (Storage.ChatFilters.FilterType.Purge):
                {
                    if (Filters.PurgeFilters.Count > 0)
                    {
                        Filters.PurgeFilters.RemoveAt(Filters.PurgeFilters.Count - 1);
                        Filters.Save();
                        ChannelInstance.SendChatMessageResponse(lastMassage, "Removed last purge filter.");
                    }
                    else
                    {
                        ChannelInstance.SendChatMessageResponse(lastMassage, "There are no purge filters definied.");
                    }
                }
                break;

                case (Storage.ChatFilters.FilterType.Timeout):
                {
                    if (Filters.TimeOutFilter.Count > 0)
                    {
                        Filters.TimeOutFilter.RemoveAt(Filters.TimeOutFilter.Count - 1);
                        Filters.Save();
                        ChannelInstance.SendChatMessageResponse(lastMassage, "Removed last timeout filter.");
                    }
                    else
                    {
                        ChannelInstance.SendChatMessageResponse(lastMassage, "There are no timeout filters definied.");
                    }
                }
                break;

                case (Storage.ChatFilters.FilterType.Ban):
                {
                    if (Filters.BanFilters.Count > 0)
                    {
                        Filters.BanFilters.RemoveAt(Filters.BanFilters.Count - 1);
                        Filters.Save();
                        ChannelInstance.SendChatMessageResponse(lastMassage, "Removed last ban filter.");
                    }
                    else
                    {
                        ChannelInstance.SendChatMessageResponse(lastMassage, "There are no ban filters definied.");
                    }
                }
                break;
                }
            }
            else
            {
                if (int.TryParse(lastMassage.Message, out int id))
                {
                    if (id < 0)
                    {
                        ChannelInstance.SendChatMessageResponse(lastMassage, "ID can not be negative!");
                    }
                    else
                    {
                        switch (filterType)
                        {
                        case (Storage.ChatFilters.FilterType.Purge):
                        {
                            if (id >= Filters.PurgeFilters.Count)
                            {
                                ChannelInstance.SendChatMessageResponse(lastMassage, string.Format("ID was higher than a total number of Purge Filters ({0})", Filters.PurgeFilters.Count - 1));
                            }
                            else
                            {
                                Filters.PurgeFilters.RemoveAt(id);
                                Filters.Save();
                                ChannelInstance.SendChatMessageResponse(lastMassage, string.Format("Removed purge filter {0}", id));
                            }
                        }
                        break;

                        case (Storage.ChatFilters.FilterType.Timeout):
                        {
                            if (id >= Filters.TimeOutFilter.Count)
                            {
                                ChannelInstance.SendChatMessageResponse(lastMassage, string.Format("ID was higher than a total number of Purge Filters ({0})", Filters.TimeOutFilter.Count - 1));
                            }
                            else
                            {
                                Filters.TimeOutFilter.RemoveAt(id);
                                Filters.Save();
                                ChannelInstance.SendChatMessageResponse(lastMassage, string.Format("Removed timeout filter {0}", id));
                            }
                        }
                        break;

                        case (Storage.ChatFilters.FilterType.Ban):
                        {
                            if (id >= Filters.BanFilters.Count)
                            {
                                ChannelInstance.SendChatMessageResponse(lastMassage, string.Format("ID was higher than a total number of Purge Filters ({0})", Filters.BanFilters.Count - 1));
                            }
                            else
                            {
                                Filters.BanFilters.RemoveAt(id);
                                Filters.Save();
                                ChannelInstance.SendChatMessageResponse(lastMassage, string.Format("Removed ban filter {0}", id));
                            }
                        }
                        break;
                        }
                    }
                }
                else
                {
                    ChannelInstance.SendChatMessageResponse(lastMassage, "Failed to parse ID.");
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Updates a filter with Response and Duration for timeout.
        /// </summary>
        /// <param name="filterType">Type of filter to be added based on FilterType enum.</param>
        /// <param name="lastMassage">Message from which to get Response and Duration from.</param>
        private void UpdateFilter(Storage.ChatFilters.FilterType filterType, ChatMessage lastMassage)
        {
            lastMassage.Message = lastMassage.Message.StripSingleWord();
            if (lastMassage.Message == "")
            {
                ChannelInstance.SendChatMessageResponse(lastMassage, "ID can not be empty!");
                return;
            }
            else if (lastMassage.Message.StartsWithLazy("last"))
            {
                lastMassage.Message = lastMassage.Message.StripSingleWord();

                switch (filterType)
                {
                case (Storage.ChatFilters.FilterType.Purge):
                {
                    if (Filters.PurgeFilters.Count > 0)
                    {
                        AdvancedFilters(lastMassage.Message, out string Response, out _);
                        var filter = Filters.PurgeFilters.Last();
                        filter.Duration = 1;
                        filter.Response = Response;
                        Filters.PurgeFilters[Filters.PurgeFilters.Count - 1] = filter;
                        Filters.Save();
                        ChannelInstance.SendChatMessageResponse(lastMassage, "Updated purge filter with response: " + Response);
                    }
                    else
                    {
                        ChannelInstance.SendChatMessageResponse(lastMassage, "There are no purge filters definied.");
                    }
                }
                break;

                case (Storage.ChatFilters.FilterType.Timeout):
                {
                    if (Filters.TimeOutFilter.Count > 0)
                    {
                        AdvancedFilters(lastMassage.Message, out string Response, out uint Lenght);
                        var filter = Filters.TimeOutFilter.Last();
                        filter.Duration = Lenght;
                        filter.Response = Response;
                        Filters.TimeOutFilter[Filters.TimeOutFilter.Count - 1] = filter;
                        Filters.Save();
                        ChannelInstance.SendChatMessageResponse(lastMassage, "Updated timeout filter with duration of " + Lenght.ToString() + " seconds and response: " + Response);
                    }
                    else
                    {
                        ChannelInstance.SendChatMessageResponse(lastMassage, "There are no timeout filters definied.");
                    }
                }
                break;

                case (Storage.ChatFilters.FilterType.Ban):
                {
                    if (Filters.BanFilters.Count > 0)
                    {
                        AdvancedFilters(lastMassage.Message, out string Response, out _);
                        var filter = Filters.BanFilters.Last();
                        filter.Duration = 1;
                        filter.Response = Response;
                        Filters.BanFilters[Filters.BanFilters.Count - 1] = filter;
                        Filters.Save();
                        ChannelInstance.SendChatMessageResponse(lastMassage, "Updated ban filter with response: " + Response);
                    }
                    else
                    {
                        ChannelInstance.SendChatMessageResponse(lastMassage, "There are no ban filters definied.");
                    }
                }
                break;
                }
            }
            else
            {
                if (lastMassage.Message.Contains(" "))
                {
                    var idAsString = lastMassage.Message.Split(new char[] { ' ' });
                    if (int.TryParse(idAsString[0], out int id))
                    {
                        if (id < 0)
                        {
                            ChannelInstance.SendChatMessageResponse(lastMassage, "ID can not be negative!");
                        }
                        else
                        {
                            switch (filterType)
                            {
                            case (Storage.ChatFilters.FilterType.Purge):
                            {
                                if (id >= Filters.PurgeFilters.Count)
                                {
                                    ChannelInstance.SendChatMessageResponse(lastMassage, string.Format("ID was higher than a current last ID of Purge Filters ({0})", Filters.PurgeFilters.Count - 1));
                                }
                                else
                                {
                                    AdvancedFilters(lastMassage.Message, out string responseText, out _);
                                    var filter = Filters.PurgeFilters[id];
                                    filter.Duration          = 1;
                                    filter.Response          = responseText;
                                    Filters.PurgeFilters[id] = filter;
                                    Filters.Save();
                                    ChannelInstance.SendChatMessageResponse(lastMassage, string.Format("Updated purge filter {0} with a response: {1}", id, responseText));
                                }
                            }
                            break;

                            case (Storage.ChatFilters.FilterType.Timeout):
                            {
                                if (id >= Filters.TimeOutFilter.Count)
                                {
                                    ChannelInstance.SendChatMessageResponse(lastMassage, string.Format("ID was higher than a current last ID of Timeout Filters ({0})", Filters.TimeOutFilter.Count - 1));
                                }
                                else
                                {
                                    AdvancedFilters(lastMassage.Message, out string responseText, out uint lenght);
                                    var filter = Filters.TimeOutFilter[id];
                                    filter.Duration           = lenght;
                                    filter.Response           = responseText;
                                    Filters.TimeOutFilter[id] = filter;
                                    Filters.Save();
                                    ChannelInstance.SendChatMessageResponse(lastMassage, string.Format("Updated timeout filter {0} with duration of {1} and response: {2}", id, lenght, responseText));
                                }
                            }
                            break;

                            case (Storage.ChatFilters.FilterType.Ban):
                            {
                                if (id >= Filters.BanFilters.Count)
                                {
                                    ChannelInstance.SendChatMessageResponse(lastMassage, string.Format("ID was higher than a current last ID of Ban Filters ({0})", Filters.BanFilters.Count - 1));
                                }
                                else
                                {
                                    AdvancedFilters(lastMassage.Message, out string responseText, out _);
                                    var filter = Filters.BanFilters[id];
                                    filter.Duration        = 1;
                                    filter.Response        = responseText;
                                    Filters.BanFilters[id] = filter;
                                    Filters.Save();
                                    ChannelInstance.SendChatMessageResponse(lastMassage, string.Format("Updated ban filter {0} with a response: {1}", id, responseText));
                                }
                            }
                            break;
                            }
                        }
                    }
                    else
                    {
                        ChannelInstance.SendChatMessageResponse(lastMassage, "Failed to parse ID.");
                        return;
                    }
                }
                else
                {
                    ChannelInstance.SendChatMessageResponse(lastMassage, "No ID provided. Use !chatfilter update <type> <id> response:\"Custom response\", [duration:\"Time\"]");
                    return;
                }
            }
        }