Exemple #1
0
        public static bool CheckMessage(JournalEntry journalEntry)
        {
            if (!IsEnabled)
            {
                return(false);
            }

            if (journalEntry.SpeechType != JournalSpeech.System &&
                (journalEntry.Name != "System" || journalEntry.Serial != -1))
            {
                return(false);
            }

            if (RepeatedMessageEntries.All(e => e.Message != journalEntry.Text))
            {
                RepeatedMessageEntries.Add(new RepeatedMessageEntry
                {
                    FirstReceived = DateTime.Now,
                    LastReceived  = DateTime.Now,
                    Count         = 1,
                    Message       = journalEntry.Text
                });

                return(false);
            }

            RepeatedMessageEntry entry =
                RepeatedMessageEntries.FirstOrDefault(e => e.Message == journalEntry.Text);

            if (entry == null)
            {
                return(false);
            }

            if (entry.LastReceived < DateTime.Now - RESET_DELAY)
            {
                RepeatedMessageEntries.Remove(entry);
                return(false);
            }

            if (entry.Count < MESSAGE_LIMIT)
            {
                entry.Count++;
                entry.LastReceived = DateTime.Now;

                return(false);
            }

            if (Options.CurrentOptions.Debug)
            {
                UO.Commands.SystemMessage($"Filtering message: {journalEntry.Text}");
            }

            return(true);
        }
Exemple #2
0
        public static bool CheckMessage(JournalEntry journalEntry)
        {
            if (!IsEnabled)
            {
                return(false);
            }

            if (journalEntry.SpeechType != JournalSpeech.System &&
                (journalEntry.Name != "System" || journalEntry.Serial != -1))
            {
                return(false);
            }

            if (FilterOptions.MessageLimit == 0)
            {
                return(true);
            }

            RepeatedMessageEntry entry = RepeatedMessageEntries.FirstOrDefault(e => e.Message == journalEntry.Text);

            if (entry != null && entry.Blocked && entry.Expires < DateTime.Now)
            {
                RepeatedMessageEntries.Remove(entry);
            }

            if (entry != null && entry.Blocked && entry.Expires > DateTime.Now)
            {
                return(true);
            }

            if (RepeatedMessageEntries.All(e => e.Message != journalEntry.Text))
            {
                RepeatedMessageEntries.Add(new RepeatedMessageEntry
                {
                    FirstReceived = DateTime.Now,
                    LastReceived  = DateTime.Now,
                    Count         = 1,
                    Message       = journalEntry.Text
                });

                return(false);
            }

            entry = RepeatedMessageEntries.FirstOrDefault(e => e.Message == journalEntry.Text);

            if (entry == null)
            {
                return(false);
            }

            if (entry.LastReceived < DateTime.Now - TimeSpan.FromSeconds(FilterOptions.TimeLimit))
            {
                RepeatedMessageEntries.Remove(entry);
                return(false);
            }

            if (entry.Count < FilterOptions.MessageLimit)
            {
                entry.Count++;
                entry.LastReceived = DateTime.Now;

                return(false);
            }

            if (Options.CurrentOptions.Debug)
            {
                UO.Commands.SystemMessage($"Filtering message: {journalEntry.Text}");
            }

            entry.Blocked = true;
            entry.Expires = DateTime.Now + TimeSpan.FromSeconds(FilterOptions.BlockedTime);

            return(true);
        }