public async Task <ChordsSearchResults> FindChords(string query) { var key = GetCacheKey(query); return(!Cache.ContainsKey(key) ? Cache[key] = await _decoratee.FindChords(query) : Cache[key]); }
private async Task <Func <Task> > GetInlineQueryAnswer(InlineQuery inlineQuery) { var query = inlineQuery.Query; var inlineQueryId = inlineQuery.Id; var result = await _chordsService.FindChords(query); var inlineQueryResults = result.Results.Take(MaxResultsForInlineSearch) .Select((x, index) => new InlineQueryResultContact { Id = index.ToString(), Title = x.SongName, PhoneNumber = x.SongAuthor, FirstName = x.SongName, ThumbUrl = x.Thumbnail.ToString(), InputMessageContent = new InputTextMessageContent { MessageText = $"/{SelectCommandName} '{query}' {index}" } }); return(() => _botClient.AnswerInlineQueryAsync( inlineQueryId, inlineQueryResults.ToArray <InlineQueryResult>())); }