public async Task <QuestionResult> Pass(ChatRoom chat, UserWordModel word, UserWordModel[] examList) { var originTranslation = word.RuTranslations.GetRandomItemOrNull(); if (string.IsNullOrWhiteSpace(originTranslation.Transcription) || originTranslation.Transcription != "") { return(QuestionResult.Impossible); } var variants = examList.Where(e => e.RuTranslations.All(t => t.Transcription != originTranslation.Transcription)) .SelectMany(e => e.TextTranslations) .Take(5) .Append(originTranslation.Word) .Shuffle() .ToList(); var msg = QuestionMarkups.TranscriptionTemplate(originTranslation.Transcription, chat.Texts.ChooseWhichWordHasThisTranscription); await chat.SendMarkdownMessageAsync(msg, InlineButtons.CreateVariants(variants)); var choice = await chat.TryWaitInlineIntKeyboardInput(); if (choice == null) { return(QuestionResult.RetryThisQuestion); } if (word.TextTranslations.Contains(variants[choice.Value])) { return(QuestionResult.Passed(chat.Texts)); } return(QuestionResult.Failed(chat.Texts)); }