コード例 #1
0
        public override async Task <IResponseInfo> HandleText(ITextRequestInfo info)
        {
            if (info.Request.Session.WordSequence == null || info.Request.Session.ExpectedWord >= info.Request.Session.WordSequence.Count)
            {
                return(new ArcadeResponseInfo("Internal error", ResponseCodes.LogicInternalError));
            }

            int wordId = info.Request.Session.WordSequence[info.Request.Session.ExpectedWord];

            var translations = await _repository.GetWordTranslationsAsync(wordId);

            if (translations == null || translations.Count == 0)
            {
                var noTranslations = await _translations.GetText("text_noTranslations");

                return(new ArcadeResponseInfo(noTranslations.Russian, ResponseCodes.NoAsnwers));
            }

            foreach (var t in translations)
            {
                if (t.Translation == info.Request.MessageText)
                {
                    if (info.Request.Session.ExpectedWord == info.Request.Session.WordSequence.Count - 1)
                    {
                        await GenerateSequenceAsync(info);
                    }
                    else
                    {
                        info.Request.Session.ExpectedWord++;
                    }

                    var success = await _translations.GetText("text_success");

                    info.Request.Session.Award += t.Word.Award;
                    return(new ArcadeResponseInfo(success.Russian, ResponseCodes.OK, t.Word.Award));
                }
            }

            if (info.Request.Session.ExpectedWord == info.Request.Session.WordSequence.Count - 1)
            {
                info.Request.Session.ExpectedWord = 0;
                info.Request.Session.WordSequence = null;
            }
            else
            {
                info.Request.Session.ExpectedWord++;
            }

            var wrongAnswer = await _translations.GetText("text_wrongAnswer");

            info.Request.Session.Award = 0;

            return(new ArcadeResponseInfo(
                       string.Format(wrongAnswer.Russian, string.Join(", ", translations.Select(x => x.Translation))),
                       ResponseCodes.WrongAnswer));
        }
コード例 #2
0
 public override async Task <IResponseInfo> HandleText(ITextRequestInfo info)
 {
     return(null);
 }
コード例 #3
0
ファイル: AbstractLogic.cs プロジェクト: GYuki/BotPolyglot
 public abstract Task <IResponseInfo> HandleText(ITextRequestInfo info);