예제 #1
0
        public async Task <ChordsSearchResults> FindChords(string query)
        {
            var key = GetCacheKey(query);

            return(!Cache.ContainsKey(key)
                ? Cache[key] = await _decoratee.FindChords(query)
                : Cache[key]);
        }
예제 #2
0
        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>()));
        }