示例#1
0
 public override AnswerItem ProcessNext(AnswerItem previousAnswerItem, LearnUnit lUnit)
 {
     return(new AnswerItem
     {
         Message = lUnit.WordStatistic ?? GetCommandIconUnicode(),
         Picture = lUnit.Picture,
         Markup = GetLearnMarkup(lUnit.IdWord.GetValueOrDefault())
     });
 }
示例#2
0
        public LearnUnit GetNextWord(WordSettings settings)
        {
            var userId    = settings.UserId;
            var learnMode = settings.LearnMode;

            var word = _wordApi.SetQuestionByUser(userId, learnMode);

            if (word == null)
            {
                throw new Exception($"No suitable words to learn. userId={userId}");
            }

            var answers      = _wordApi.GetAnswersByUser(userId);
            var questionItem = new LearnUnit();

            IWordFile file;

            switch (learnMode)
            {
            case ELearnMode.OriginalWord:
                questionItem.Options = answers.Select(a => a.OriginalWord).ToArray();
                file = word.CardOriginalWord;
                break;

            case ELearnMode.Pronunciation:
                questionItem.Options = answers.Select(a => a.Pronunciation).ToArray();
                file = word.CardPronunciation;
                break;

            case ELearnMode.Translation:
                questionItem.Options = answers.Select(a => a.Translation).ToArray();
                file = word.CardTranslation;
                break;

            default:
                questionItem.Options       = new string[0];
                questionItem.WordStatistic = word.ToScoreString();
                file = word.CardAll;

                questionItem.IdWord = word.Id;
                break;
            }

            questionItem.Picture = new GenerateImageResult
            {
                Height    = file.Height,
                Width     = file.Width,
                ImageBody = _wordApi.GetWordCard(file.Id)
            };

            return(questionItem);
        }
示例#3
0
        public override AnswerItem ProcessNext(AnswerItem previousAnswerItem, LearnUnit lUnit)
        {
            var buttons = new List <InlineKeyboardButton[]>();

            foreach (var option in lUnit.Options)
            {
                var answer = string.Join("", option.Take(MaxAnswerLength));
                buttons.Add(new []
                {
                    new InlineKeyboardButton {
                        Text = answer, CallbackData = answer
                    }
                });
            }

            previousAnswerItem.Markup  = new InlineKeyboardMarkup(buttons);
            previousAnswerItem.Picture = lUnit.Picture;
            return(previousAnswerItem);
        }
示例#4
0
 public abstract AnswerItem ProcessNext(AnswerItem previousAnswerItem, LearnUnit lUnit);