Esempio n. 1
0
        private void Answer(MSession session, MRequest request)
        {
            if (session.LastInput == request.RawInput)
            {
                session.RIndex += 1;
            }
            else
            {
                session.LastInput = request.RawInput;

                string t = Regex.Replace(request.RawInput, "\\s+", "");
                // 仅数字
                if (Regex.IsMatch(t, "^\\d+$"))
                {
                    return;
                }
                // 数学运算
                t = Regex.Replace(t, "[\\[\\{(【{]", "(");
                t = Regex.Replace(t, "[\\]\\})】}]", ")");
                if (Regex.IsMatch('(' + t + ')', @"^(((?<o>\()[-+]?(\d+[-+*/])*)+\d+((?<-o>\))([-+*/]\d+)*)+($|[-+*/]))*(?(o)(?!))$"))
                {
                    return;
                }

                session.Question.Clear();
                session.QIndex = 0;
                _DataModel.FindQuestion(session.Question, session.LastInput, session.Style, session.Language, session.Category);
                if (session.Question.Count < 1)
                {
                    _Target.SendMessage(session.LastInput);
                    return;
                }

                session.Response.Clear();
                session.RIndex = 0;
                _DataModel.FindResponse(session.Response, session.Question[0].P3100103, session.Style, session.Language, session.Category);
                if (session.Response.Count < 1)
                {
                    _Target.SendMessage(session.LastInput);
                    return;
                }
            }

            _Target.SendMessage(session.Response[session.RIndex].P3100105);
        }
Esempio n. 2
0
 /// <summary>
 /// 会话处理
 /// </summary>
 /// <param name="target"></param>
 /// <param name="request"></param>
 /// <returns></returns>
 public bool Deal(ITarget target, MRequest request)
 {
     _Target = target;
     Answer(null, request);
     return true;
 }