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); }
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); }