public async Task <RuleCheckResult> CheckRuleAsync(WordDocument wordDocument) { return(await Task.Run( () => { var forbiddenCounts = new List <Tuple <int, string> >(); var forbiddenWords = ForbiddenWords.CreateDefault(); foreach (var forbiddenWord in forbiddenWords.Words) { var foundForbiddenWords = wordDocument .Words .Where(word => word.Text.ToUpper(CultureInfo.InvariantCulture) == forbiddenWord.ToUpper(CultureInfo.InvariantCulture)) .ToList(); if (foundForbiddenWords.Any()) { forbiddenCounts.Add(new Tuple <int, string>(foundForbiddenWords.Count, forbiddenWord)); } } if (forbiddenCounts.Any()) { var overviewMessage = $"Found {forbiddenCounts.Count} forbidden Words."; var sorted = forbiddenCounts .OrderByDescending(w => w.Item1) .Select(w => $"{w.Item1}: {w.Item2}") .ToList(); return new RuleCheckResult(false, RuleName, overviewMessage, new RuleCheckResultDetails(sorted)); } return RuleCheckResult.CreatePassed(RuleName); })); }
public void AddWord(SpecificWord word) { var finded = ForbiddenWords.Find(x => x.Name == word.Name); if (finded == null) { ForbiddenWords.Add(word); } else { ++finded.Repetitions; } }
public virtual void SendChat(string text) { if (String.IsNullOrEmpty(text)) { return; } //不適切な表現を削除-------------------------------------------------------------- text = text.Replace(" ", "").Replace(" ", "").Trim(); if (ForbiddenWords.WordFilter(text) == "") { text += Environment.NewLine + "<color=red>不適切な表現を含むため送信できません</color>"; return; } //--------------------------------------------------------------------------------- //送信 _view.RPC("ReceiveChat", MonobitTargets.All, text); }