示例#1
0
        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);
            }));
        }
示例#2
0
        public void AddWord(SpecificWord word)
        {
            var finded = ForbiddenWords.Find(x => x.Name == word.Name);

            if (finded == null)
            {
                ForbiddenWords.Add(word);
            }
            else
            {
                ++finded.Repetitions;
            }
        }
示例#3
0
    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);
    }