Exemple #1
0
        private static async Task CheckInlineQueryAsync(Update update)
        {
            // Telebot will support all 19 types of InlineQueryResult.
            // To see available inline query results:
            // https://core.telegram.org/bots/api#answerinlinequery
            var articleResult = new InlineQueryResultArticle
            {
                Id    = Guid.NewGuid().ToString("N"),
                Title = "This is a title",
                Url   = "https://core.telegram.org/bots/api#inlinequeryresultarticle"
            };

            var photoResult = new InlineQueryResultPhoto
            {
                Id           = Guid.NewGuid().ToString("N"),
                Url          = "https://telegram.org/file/811140636/1/hzUbyxse42w/4cd52d0464b44e1e5b",
                ThumbnailUrl = "https://telegram.org/file/811140636/1/hzUbyxse42w/4cd52d0464b44e1e5b"
            };


            var gifResult = new InlineQueryResultGif
            {
                Id           = Guid.NewGuid().ToString("N"),
                Url          = "http://i.giphy.com/ya4eevXU490Iw.gif",
                ThumbnailUrl = "http://i.giphy.com/ya4eevXU490Iw.gif"
            };

            var results = new InlineQueryResult[] { articleResult, photoResult, gifResult };
            await TelegramMessager._telebot.AnswerInlineQueryAsync(update.InlineQuery.Id, results).ConfigureAwait(false);
        }
        public override InlineQueryResult[] GetResult()
        {
            var Orders = FollowerFunction.FollowerOrder(FollowerId).Take(MaxResult).ToList();

            InputTextMessageContent[]  textcontent = new InputTextMessageContent[Orders.Count];
            InlineQueryResultArticle[] article     = new InlineQueryResultArticle[Orders.Count];
            InlineQueryResult[]        result      = new InlineQueryResult[Orders.Count];

            int i = 0;

            foreach (var order in Orders)
            {
                textcontent[i]                       = new InputTextMessageContent();
                textcontent[i].ParseMode             = Telegram.Bot.Types.Enums.ParseMode.Html;
                textcontent[i].DisableWebPagePreview = true;
                textcontent[i].MessageText           = "/order" + order.Number.ToString();

                article[i]             = new InlineQueryResultArticle();
                article[i].HideUrl     = false;
                article[i].Id          = order.Id.ToString();
                article[i].Title       = "Заказ №" + order.Number.ToString();
                article[i].Description = "Время:" + order.DateAdd.ToString() + BotMessage.NewLine();

                article[i].ThumbUrl            = "https://cdn2.iconfinder.com/data/icons/shop-payment-vol-6/128/shop-19-256.png";
                article[i].InputMessageContent = textcontent[i];

                result[i] = new InlineQueryResult();
                result[i] = article[i];

                i++;
            }

            return(result);
        }
Exemple #3
0
        private static async void OnInlineHandler(object sender, InlineQueryEventArgs e)
        {
            InlineQueryResultBase baseResult;

            try
            {
                Entity calculated = e.InlineQuery.Query.Solve("x");
                if (calculated.Complexity < bot.BotConfig.SimplifyComplexityThreshold)
                {
                    calculated = calculated.Simplify();
                }

                using var stream = bot.LatexRenderer.Render(@"Input: " + e.InlineQuery.Query.Latexise() + @"\\\\" + calculated.Latexise());
                baseResult       = await bot.TrySendPhoto(stream, e.InlineQuery.Query, calculated.Stringize());
            }
            catch (Exception ex)
            {
                baseResult = new InlineQueryResultArticle(
                    id: "0",
                    title: "We can't process your request.",
                    inputMessageContent: new InputTextMessageContent(ex.Message + ": " + e.InlineQuery.Query)
                    )
                {
                    Description = ex.Message
                };

                bot.Logger.Info(ex, $"Can't evaluate query {e.InlineQuery.Query}: {ex.Message}");
            }

            bot.SendSingleInlineQueryAnswer(e.InlineQuery.Id, baseResult);
        }
Exemple #4
0
        private static async void Bot_OnInlineQuery(object sender, Telegram.Bot.Args.InlineQueryEventArgs e)
        {
            string query = e.InlineQuery.Query;

            if (query.Length < 3)
            {
                return;
            }

            Database.discsArray[]   discs   = db.Search(query.ToLower());
            InlineQueryResultBase[] results = new InlineQueryResultArticle[discs.Length];
            for (int i = 0; i < results.Length; i++)
            {
                var temp = new InlineQueryResultArticle(Convert.ToString(discs[i].id),
                                                        title: discs[i].name,
                                                        new InputTextMessageContent($"Товар {discs[i].id}: {discs[i].name}"));
                temp.Description = discs[i].platform + " | " + discs[i].price + " BYN";
                results[i]       = temp;
            }
            if (results.Length == 0)
            {
                return;
            }
            Console.WriteLine(query);
            db.SetAwaitInfoType(e.InlineQuery.From.Id, (int)awaitInfoType.searchResult);
            try
            {
                await bot.AnswerInlineQueryAsync(e.InlineQuery.Id, results);
            }
            catch (Telegram.Bot.Exceptions.InvalidParameterException e5)
            {
                log.Error(e5.Message);
                return;
            }
        }
        internal static async Task AnswerInlineQueryAsync(ExtendedUser user, string inlineQueryId, IReadOnlyList <YoutubeExplode.Models.Video> videos)
        {
            var results = new List <InlineQueryResultArticle>();

            for (int i = 0; i < Math.Min(50, videos.Count); i++)
            {
                var video = videos.ElementAt(i);

                var message = $"*{video.Author}*" + "\n\r" +
                              $"[{video.Title}](https://www.youtube.com/watch?v={video.Id})";

                var thumbnail = video.Thumbnails.LowResUrl;
                var url       = "https://www.youtube.com/watch?v=" + video.Id;
                InputTextMessageContent content = new InputTextMessageContent(message);
                content.ParseMode = ParseMode.Markdown;
                InlineQueryResultArticle result = new InlineQueryResultArticle(inlineQueryId + i * 123, video.Title, content);
                result.ThumbUrl = thumbnail;
                result.Url      = url;
                result.HideUrl  = true;

                result.ReplyMarkup = GetMarkup(user, video);
                result.Description = $@"👁️ {ShortenNumber(video.Statistics.ViewCount)} | {ShortenNumber(video.Statistics.LikeCount)} 👍 \ 👎 {ShortenNumber(video.Statistics.DislikeCount)}";

                results.Add(result);
            }

            await botClient.AnswerInlineQueryAsync(inlineQueryId, results, 100, true);

            //cacheTime  - The maximum amount of time the result of the inline query may be cached on the server
            //isPersonal - Pass True, if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query
            //offset     - Pass the offset that a client should send in the next query with the same text to receive more results. Pass an empty string if there are no more results or if you don‘t support pagination. Offset length can’t exceed 64 bytes.
            //pmText     - clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter switchPmParameter
        }
Exemple #6
0
        public override InlineQueryResult[] GetResult()
        {
            db = new MarketBotDbContext();

            var ProductList = GetProductList().Take(MaxResult).ToList();

            InputTextMessageContent[]  textcontent = new InputTextMessageContent[ProductList.Count];
            InlineQueryResultArticle[] article     = new InlineQueryResultArticle[ProductList.Count];
            InlineQueryResult[]        result      = new InlineQueryResult[ProductList.Count];

            int i = 0;

            foreach (Product prod in ProductList)
            {
                textcontent[i]                       = new InputTextMessageContent();
                textcontent[i].ParseMode             = Telegram.Bot.Types.Enums.ParseMode.Html;
                textcontent[i].DisableWebPagePreview = true;
                textcontent[i].MessageText           = "/adminproduct" + prod.Id.ToString();

                article[i]             = new InlineQueryResultArticle();
                article[i].HideUrl     = true;
                article[i].Id          = prod.Id.ToString();
                article[i].Title       = prod.Name;
                article[i].Description = "Категория:" + prod.Category.Name + BotMessage.NewLine() + "Цена:" + prod.CurrentPrice.Value;

                article[i].ThumbUrl            = "https://cdn2.iconfinder.com/data/icons/shop-payment-vol-6/128/shop-07-256.png";
                article[i].InputMessageContent = textcontent[i];
                result[i] = article[i];
                i++;
            }


            db.Dispose();
            return(result);
        }
        public InlineQueryResultArticle Result(Strings strings, string apikey, bool channel)
        {
            if (closed)
            {
                return(null);
            }
            ContentParts content = GetContent(strings, apikey, noApproximation: true /*TODO Request handler here*/, channel: channel);

            return(InlineQueryResultArticle.Create(chatId + ":" + pollId, content.InlineTitle, InputTextMessageContent.Create(content.Text, disableWebPagePreview: true), content.InlineKeyboard, description: content.InlineDescription, thumbUrl: "https://wjclub.capella.uberspace.de/groupagreebot/res/" + pollType.ToString() + "_" + anony.ToString() + ".png", thumbWidth: 256, thumbHeight: 256));
        }
Exemple #8
0
        public InlineQueryResultArticle Result(Strings strings, string apikey, bool channel)
        {
            if (closed)
            {
                return(null);
            }
            ContentParts content = GetContent(strings, apikey, channel);

            return(InlineQueryResultArticle.Create(chatId + ":" + pollId, pollText, InputTextMessageContent.Create(content.Text, disableWebPagePreview: true), content.InlineKeyboard, description: content.Description, thumbUrl: "https://bots.wjclub.tk/groupagreebot/res/" + pollType.ToString() + "_" + anony.ToString() + ".png", thumbWidth: 256, thumbHeight: 256));
        }
        public override InlineQueryResult[] GetResult()
        {
            db = new MarketBotDbContext();

            this.FollowerList = GetFollower().Take(MaxResult).ToList();

            InputTextMessageContent[]  textcontent = new InputTextMessageContent[FollowerList.Count];
            InlineQueryResultArticle[] article     = new InlineQueryResultArticle[FollowerList.Count];
            InlineQueryResult[]        result      = new InlineQueryResult[FollowerList.Count];

            int i = 0;

            foreach (var follower in FollowerList)
            {
                string telephoneLine = "";

                FollowerControlMessage followerControlMessage = new FollowerControlMessage(follower.Id);
                var message = followerControlMessage.BuildMsg();

                if (follower.Telephone != null && follower.Telephone != "")
                {
                    telephoneLine = BotMessage.NewLine() + "Телефон: " + follower.Telephone;
                }


                textcontent[i]                       = new InputTextMessageContent();
                textcontent[i].ParseMode             = Telegram.Bot.Types.Enums.ParseMode.Html;
                textcontent[i].DisableWebPagePreview = true;
                textcontent[i].MessageText           = message.TextMessage;

                article[i]             = new InlineQueryResultArticle();
                article[i].HideUrl     = false;
                article[i].Id          = follower.Id.ToString();
                article[i].Title       = follower.FirstName + " " + follower.LastName;
                article[i].Description = telephoneLine;
                article[i].ReplyMarkup = followerControlMessage.SetInline();

                article[i].ThumbUrl            = "https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-11-2-256.png";
                article[i].Url                 = "https://t.me/" + follower.UserName;
                article[i].InputMessageContent = textcontent[i];

                result[i] = new InlineQueryResult();
                result[i] = article[i];

                i++;
            }

            return(result);
        }
Exemple #10
0
        public InlineQueryResult[] ProductInlineSearch()
        {
            List <Product> product = new List <MyTelegramBot.Product>();
            SqlParameter   param   = new SqlParameter("@name", "%" + Query + "%");

            product = db.Product.FromSql("SELECT * FROM Product WHERE Name LIKE @name and Enable=1", param).
                      Include(p => p.ProductPrice).Include(p => p.Stock).Include(p => p.ProductPrice).Include(p => p.Unit).ToList();


            InputTextMessageContent[]  textcontent = new InputTextMessageContent[product.Count];
            InlineQueryResultArticle[] article     = new InlineQueryResultArticle[product.Count];
            InlineQueryResult[]        result      = new InlineQueryResult[product.Count];


            for (int i = 0; i < product.Count; i++)
            {
                textcontent[i] = new InputTextMessageContent();
                textcontent[i].DisableWebPagePreview = true;
                textcontent[i].MessageText           = product[i].ToString();

                product[i].ProductPrice.Where(p => p.Enabled).FirstOrDefault().Currency
                    = db.Currency.Where(c => c.Id == product[i].ProductPrice.Where(p => p.Enabled).FirstOrDefault().CurrencyId).FirstOrDefault();

                article[i]             = new InlineQueryResultArticle();
                article[i].HideUrl     = true;
                article[i].Id          = product[i].Id.ToString();
                article[i].Title       = product[i].Name;
                article[i].Description = product[i].Name + " "
                                         + product[i].ProductPrice.Where(p => p.Enabled).FirstOrDefault().Value.ToString() + " "
                                         + product[i].ProductPrice.Where(p => p.Enabled).FirstOrDefault().Currency.ShortName
                                         + "\r\nНажмите сюда";

                article[i].ThumbUrl            = product[i].PhotoUrl;
                article[i].Url                 = product[i].TelegraphUrl;
                article[i].InputMessageContent = textcontent[i];
                article[i].ReplyMarkup         = new InlineKeyboardMarkup(
                    new[] {
                    new[]
                    {
                        OpenBtn = new InlineKeyboardCallbackButton("Открыть", BuildCallData("GetProduct", product[i].Id))
                    }
                });
                result[i] = new InlineQueryResult();
                result[i] = article[i];
            }
            return(result);
        }
        private static async void OnInlineQueryAsync(object sender, InlineQueryEventArgs inlineQueryEventArgs)
        {
            var inlineQuery = inlineQueryEventArgs.InlineQuery;

            if (string.IsNullOrEmpty(inlineQuery.Query) || string.IsNullOrWhiteSpace(inlineQuery.Query))
            {
                return;
            }

            var listBooksRequest = BooksService.Volumes.List(inlineQuery.Query);
            var books            = await listBooksRequest.ExecuteAsync();

            if (books?.Items == null || !books.Items.Any())
            {
                return;
            }

            var response = books.Items.Select(volume =>
            {
                var article =
                    new InlineQueryResultArticle(volume.Id.ToString(),
                                                 volume.VolumeInfo.Title,
                                                 new InputTextMessageContent(GetMarkdown(volume))
                {
                    ParseMode = ParseMode.Html
                });

                if (volume.VolumeInfo.Authors != null)
                {
                    article.Description = string.Join(", ", volume.VolumeInfo.Authors);
                }

                if (volume.VolumeInfo.ImageLinks != null)
                {
                    article.ThumbUrl = volume.VolumeInfo.ImageLinks.Thumbnail;
                }

                return(article);
            });

            await _bot.AnswerInlineQueryAsync(inlineQuery.Id, response);
        }
        public override InlineQueryResult[] GetResult()
        {
            db = new MarketBotDbContext();

            var Follower = db.Follower.Where(f => f.ChatId == ChatId).FirstOrDefault();

            if (Follower != null)
            {
                OrderList = db.Orders.Where(o => o.FollowerId == Follower.Id).OrderByDescending(o => o.Id).Take(MaxResult).ToList();

                int i = 0;

                InputTextMessageContent[]  textcontent = new InputTextMessageContent[OrderList.Count];
                InlineQueryResultArticle[] article     = new InlineQueryResultArticle[OrderList.Count];
                InlineQueryResult[]        result      = new InlineQueryResult[OrderList.Count];

                foreach (Orders order in OrderList)
                {
                    textcontent[i]                       = new InputTextMessageContent();
                    textcontent[i].ParseMode             = Telegram.Bot.Types.Enums.ParseMode.Html;
                    textcontent[i].DisableWebPagePreview = true;
                    textcontent[i].MessageText           = "/myorder" + order.Number.ToString();

                    article[i]             = new InlineQueryResultArticle();
                    article[i].HideUrl     = true;
                    article[i].Id          = order.Id.ToString();
                    article[i].Title       = order.Number.ToString();
                    article[i].Description = "№:" + order.Number.ToString() + BotMessage.NewLine() + "Дата:" + order.DateAdd.ToString();

                    article[i].ThumbUrl            = "https://cdn2.iconfinder.com/data/icons/shop-payment-vol-6/128/shop-04-256.png";
                    article[i].InputMessageContent = textcontent[i];
                    result[i] = article[i];
                    i++;
                }
                db.Dispose();
                return(result);
            }

            return(null);
        }
        public override InlineQueryResult[] GetResult()
        {
            var list = PaymentsFunction.GetPaymentsList().Take(MaxResult).ToList();


            InputTextMessageContent[]  textcontent = new InputTextMessageContent[list.Count];
            InlineQueryResultArticle[] article     = new InlineQueryResultArticle[list.Count];
            InlineQueryResult[]        result      = new InlineQueryResult[list.Count];

            int i = 0;

            foreach (var payment in list)
            {
                //PaymentViewMsg = new Messages.Admin.PaymentViewMessage(payment);
                //BotMessage mess = PaymentViewMsg.BuildMsg();

                textcontent[i]                       = new InputTextMessageContent();
                textcontent[i].ParseMode             = Telegram.Bot.Types.Enums.ParseMode.Html;
                textcontent[i].DisableWebPagePreview = true;
                textcontent[i].MessageText           = "/payment" + payment.Id.ToString();

                article[i]             = new InlineQueryResultArticle();
                article[i].HideUrl     = false;
                article[i].Id          = payment.Id.ToString();
                article[i].Title       = "Платеж №" + payment.Id.ToString();
                article[i].Description = payment.TimestampDataAdd.ToString();

                article[i].ThumbUrl = "https://cdn2.iconfinder.com/data/icons/shop-payment-vol-6/128/shop-01-256.png";
                //article[i].ReplyMarkup = mess.MessageReplyMarkup;
                article[i].InputMessageContent = textcontent[i];


                result[i] = new InlineQueryResult();
                result[i] = article[i];

                i++;
            }

            return(result);
        }
    private async void OnFinishSearch(List <Film> filmsFound, Update update)
    {
        if (filmsFound.Count > 0)
        {
            var results = new InlineQueryResultBase[filmsFound.Count];

            for (int i = 0; i < filmsFound.Count; i++)
            {
                InputTextMessageContent aux = new InputTextMessageContent(filmsFound[i].title);

                //@TODO color to rating
                // float rating = float.Parse(filmsFound[i].rating);
                //string emojiRating = rating > 6.9f ?TelegramEmoji.Emojis.Symbols.Other_Symbol.: rating > 4.9 ?:;

                results[i] = new InlineQueryResultArticle(i.ToString(), filmsFound[i].title, aux);

                results[i].ReplyMarkup = new InlineKeyboardMarkup(InlineKeyboardButton.WithUrl(filmsFound[i].rating, filmsFound[i].link));
            }

            await botClient.AnswerInlineQueryAsync(update.InlineQuery.Id, results);
        }
    }
Exemple #15
0
    public async Task Execute(TelegramBotClient botClient, Update update)
    {
        InputTextMessageContent aux = new InputTextMessageContent(
            Emojis.Symbols.Other_Symbol.double_exclamation_mark +
            Emojis.Symbols.Other_Symbol.double_exclamation_mark +
            Emojis.Symbols.Other_Symbol.double_exclamation_mark +
            Emojis.Symbols.Other_Symbol.double_exclamation_mark +
            Emojis.Symbols.Other_Symbol.double_exclamation_mark +
            Emojis.Symbols.Other_Symbol.double_exclamation_mark +
            Emojis.Symbols.Other_Symbol.double_exclamation_mark
            );

        var articleResult = new InlineQueryResultArticle("A", "Spoiler", aux);

        articleResult.ThumbUrl = "https://cdn.pixabay.com/photo/2012/04/12/22/25/warning-sign-30915_960_720.png";

        var results = new InlineQueryResultBase[] { articleResult };

        results[0].ReplyMarkup = new InlineKeyboardMarkup(InlineKeyboardButton.WithCallbackData("Spoiler", update.InlineQuery.Query.Remove(0, 9)));

        await botClient.AnswerInlineQueryAsync(update.InlineQuery.Id, results);
    }
        protected override async Task Handle(InlineUsersSearchCommand request, CancellationToken cancellationToken)
        {
            var searchUserText = request.SearchUserText.ToLower();
            var channels       = await twitchApiService.SearchChannels(searchUserText);

            var results = new List <InlineQueryResultArticle>();

            foreach (var user in channels.Channels)
            {
                var article = new InlineQueryResultArticle(
                    id: user.Id,
                    title: user.DisplayName,
                    inputMessageContent: new InputTextMessageContent(user.DisplayName))
                {
                    ReplyMarkup = new InlineKeyboardMarkup(new[]
                    {
                        new[] {
                            InlineKeyboardButton.WithCallbackData(
                                "Show messages",
                                $"{BotCommands.UserMessages} {user.BroadcasterLogin}")
                        },
                        new[] {
                            InlineKeyboardButton.WithCallbackData(
                                "Show subs count",
                                $"{BotCommands.SubscribersCount} {user.BroadcasterLogin}")
                        }
                    }),
                    ThumbUrl    = user.ThumbnailUrl,
                    Description = $"IsLive: {user.IsLive}"
                };
                results.Add(article);
            }

            await telegramBotClient.AnswerInlineQueryAsync(
                request.InlineQueryId,
                results,
                cacheTime : 0,
                cancellationToken : cancellationToken);
        }
        public override InlineQueryResult[] GetResult()
        {
            this.Orders = GetOrder();
            InputTextMessageContent[]  textcontent = new InputTextMessageContent[Orders.Count];
            InlineQueryResultArticle[] article     = new InlineQueryResultArticle[Orders.Count];
            InlineQueryResult[]        result      = new InlineQueryResult[Orders.Count];


            for (int i = 0; i < Orders.Count; i++)
            {
                string StatusOrderLine = "";

                if (Orders[i].CurrentStatusNavigation != null)
                {
                    StatusOrderLine = "\r\nСтатус: " + db.Status.Find(Orders[i].CurrentStatusNavigation.StatusId).Name;
                }

                textcontent[i] = new InputTextMessageContent();
                textcontent[i].DisableWebPagePreview = true;
                textcontent[i].MessageText           = "/order" + Orders[i].Number.ToString();

                article[i]             = new InlineQueryResultArticle();
                article[i].HideUrl     = true;
                article[i].Id          = Orders[i].Number.ToString();
                article[i].Title       = Orders[i].Number.ToString();
                article[i].Description = "№" + Orders[i].Number.ToString() + "\r\nДата:" + Orders[i].DateAdd.ToString()
                                         + StatusOrderLine;

                article[i].ThumbUrl            = "https://cdn2.iconfinder.com/data/icons/shop-payment-vol-6/128/shop-19-256.png";
                article[i].InputMessageContent = textcontent[i];


                result[i] = new InlineQueryResult();
                result[i] = article[i];
            }
            db.Dispose();
            return(result);
        }
Exemple #18
0
        private void Bot_OnInlineQuery(object sender, InlineQueryEventArgs e)
        {
            List <InlineQueryResultBase> inlineQueryResults = new List <InlineQueryResultBase>();

            if (e.InlineQuery.Query != string.Empty)
            {
                List <TolokaResult>          tolokaResults = Searcher.search(e.InlineQuery.Query);
                List <InlineQueryResultBase> inlineResults = new List <InlineQueryResultBase>();

                if (tolokaResults.Count > 0)
                {
                    foreach (var result in tolokaResults)
                    {
                        var inputContent = new InputTextMessageContent(result.ToString());
                        var article      = new InlineQueryResultArticle(tolokaResults.IndexOf(result).ToString(), result.title, inputContent)
                        {
                            Description = $"{result.seeders}/{result.leechers}/{result.complete} ({result.size})"
                        };

                        inlineResults.Add(article);
                    }
                }

                else
                {
                    var inputContent = new InputTextMessageContent($"No results found for {e.InlineQuery.Query}.");
                    var article      = new InlineQueryResultArticle("1", "Not found", inputContent)
                    {
                        Description = $"Nothing found by {e.InlineQuery.Query}"
                    };

                    inlineResults.Add(article);
                }

                bot.AnswerInlineQueryAsync(e.InlineQuery.Id, inlineResults);
            }
        }
Exemple #19
0
        public async Task ProcessUpdateAsync(Update update, CancellationToken cancellationToken)
        {
            if (update.Type == TB.Enums.UpdateType.InlineQuery)
            {
                var companies = this.GetCompaniesFromQuery(update);
                var quotes    = await this.stockProvider.GetQuotesAsync(companies.Select(c => c.Symbol), cancellationToken);

                var results = new List <InlineQueryResultArticle>();
                foreach (var company in companies)
                {
                    var quote   = quotes[company.Symbol].Quote;
                    var logoUrl = this.stockProvider.GetLogo(company.Symbol);
                    var title   = $"{company.Name} ({company.Symbol})";

                    var us          = CultureInfo.GetCultureInfo("en-US");
                    var description = new StringBuilder();
                    description.AppendLine($"*{quote.LatestPrice?.ToString("C", us)}* {(quote.Change > 0 ? "+" : "") + quote.Change?.ToString("C", us)} ({(quote.ChangePercent > 0 ? "+" : "") + quote.ChangePercent?.ToString("P")})");
                    description.AppendLine($"*High:* {quote.High?.ToString("C", us)}");
                    description.AppendLine($"*Low:* {quote.Low?.ToString("C", us)}");
                    description.AppendLine($"*52w high:* {quote.Week52High?.ToString("C", us)}");
                    description.Append($"*52w low:* {quote.Week52Low?.ToString("C", us)}");

                    var textContent        = $"*{title}*\n{description}";
                    var testMessageContent = new InputTextMessageContent(textContent)
                    {
                        ParseMode = TB.Enums.ParseMode.Markdown
                    };
                    var result = new InlineQueryResultArticle(company.Symbol, title, testMessageContent)
                    {
                        Description = description.ToString(),
                        ThumbUrl    = logoUrl
                    };
                    results.Add(result);
                }
                await this.telegramBot.ReplyAsync(update.InlineQuery.Id, results, cancellationToken);
            }
        }
Exemple #20
0
        private Task CheckInlineQueryAsync(Update update)
        {
            WriteLine(ConsoleColor.Green, "Received InlineQuery:");
            Dump(update, ConsoleColor.Green);

            var articleResult = new InlineQueryResultArticle
            {
                Id    = Guid.NewGuid().ToString("N"),
                Title = "This is a title",
                Url   = "https://core.telegram.org/bots/api#inlinequeryresultarticle"
            };

            var photoResult = new InlineQueryResultPhoto
            {
                Id           = Guid.NewGuid().ToString("N"),
                Url          = "https://telegram.org/file/811140636/1/hzUbyxse42w/4cd52d0464b44e1e5b",
                ThumbnailUrl = "https://telegram.org/file/811140636/1/hzUbyxse42w/4cd52d0464b44e1e5b"
            };


            var gifResult = new InlineQueryResultGif
            {
                Id           = Guid.NewGuid().ToString("N"),
                Url          = "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Rotating_earth_%28large%29.gif/200px-Rotating_earth_%28large%29.gif",
                ThumbnailUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Rotating_earth_%28large%29.gif/200px-Rotating_earth_%28large%29.gif"
            };

            var results = new InlineQueryResult[] { articleResult, photoResult, gifResult };

            var answerId = update.InlineQuery.Id;

            WriteLine(ConsoleColor.DarkGreen, "Sending: ");
            WriteLine(ConsoleColor.DarkGreen, $"Answer Id: {answerId}");
            Dump(results, ConsoleColor.DarkGreen);

            return(this._telebot.AnswerInlineQueryAsync(answerId, results));
        }
Exemple #21
0
        public override InlineQueryResult[] GetResult()
        {
            list = HelpDeskFunction.GetHelpDeskList(Number).Take(MaxResult).ToList();


            InputTextMessageContent[]  textcontent = new InputTextMessageContent[list.Count];
            InlineQueryResultArticle[] article     = new InlineQueryResultArticle[list.Count];
            InlineQueryResult[]        result      = new InlineQueryResult[list.Count];

            int i = 0;

            foreach (var help in list)
            {
                textcontent[i]                       = new InputTextMessageContent();
                textcontent[i].ParseMode             = Telegram.Bot.Types.Enums.ParseMode.Html;
                textcontent[i].DisableWebPagePreview = true;
                textcontent[i].MessageText           = "/ticket" + help.Number.ToString();

                article[i]             = new InlineQueryResultArticle();
                article[i].HideUrl     = false;
                article[i].Id          = help.Id.ToString();
                article[i].Title       = "Заявка №" + help.Number.ToString();
                article[i].Description = help.Number + BotMessage.NewLine() +
                                         "Время:" + help.Timestamp;

                article[i].ThumbUrl            = "https://cdn2.iconfinder.com/data/icons/shop-payment-vol-6/128/shop-10-256.png";
                article[i].InputMessageContent = textcontent[i];

                result[i] = new InlineQueryResult();
                result[i] = article[i];

                i++;
            }

            return(result);
        }
 public static ValidationResult <InlineQueryResultArticle> CreateValidation(this InlineQueryResultArticle value) =>
 new ValidationResult <InlineQueryResultArticle>(value).ValidateRequired(x => x.Type)
 .ValidateRequired(x => x.Id)
 .ValidateRequired(x => x.Title)
 .ValidateRequired(x => x.InputMessageContent);
Exemple #23
0
        private static void BotClient_OnInlineQuery(object sender, InlineQueryEventArgs e)
        {
            var results = new List <InlineQueryResultBase>();

            try
            {
                var q = QueryParser.Parse(e.InlineQuery.Query);
                if (q.Type == QueryType.Exception)
                {
                    throw q.Exception;
                }
                else if (q.Type == QueryType.Repository)
                {
                    var repo = github.Repository.Get(q.Owner, q.Repository).GetAwaiter().GetResult();
                    results.Add(InlineFromRepo(repo));
                }
                else if (q.Type == QueryType.SearchOrOwner)
                {
                    try
                    {
                        var owner = github.User.Get(q.Owner).GetAwaiter().GetResult();
                        results.Add(InlineFromUser(owner));
                    }
                    catch (NotFoundException)
                    {
                        var repos = github.Search.SearchRepo(new SearchRepositoriesRequest(q.Owner)).GetAwaiter().GetResult();
                        for (int i = 0; i < repos.Items.Count && i < Limits.HybridSearchLimit; i++)
                        {
                            results.Add(InlineFromRepo(github.Repository.Get(repos.Items[i].Id).GetAwaiter().GetResult()));
                        }

                        var users = github.Search.SearchUsers(new SearchUsersRequest(q.Owner)).GetAwaiter().GetResult();
                        for (int i = 0; i < users.Items.Count && i < Limits.HybridSearchLimit; i++)
                        {
                            results.Add(InlineFromUser(github.User.Get(users.Items[i].Login).GetAwaiter().GetResult()));
                        }
                    }

                    if (results.Count <= 0)
                    {
                        throw new Exception("Nothing found.");
                    }
                }
                else if (q.Type == QueryType.SearchRepo)
                {
                    var repos = github.Search.SearchRepo(new SearchRepositoriesRequest(q.Repository)).GetAwaiter().GetResult();

                    if (repos.Items.Count <= 0)
                    {
                        throw new Exception("No repos found");
                    }

                    for (int i = 0; i < repos.Items.Count && i < Limits.CleanSearchLimit; i++)
                    {
                        results.Add(InlineFromRepo(github.Repository.Get(repos.Items[i].Id).GetAwaiter().GetResult()));
                    }
                }
                else if (q.Type == QueryType.SearchUser)
                {
                    var users = github.Search.SearchUsers(new SearchUsersRequest(q.Owner)).GetAwaiter().GetResult();

                    if (users.Items.Count <= 0)
                    {
                        throw new Exception("No users found");
                    }

                    for (int i = 0; i < users.Items.Count && i < Limits.CleanSearchLimit; i++)
                    {
                        results.Add(InlineFromUser(github.User.Get(users.Items[i].Login).GetAwaiter().GetResult()));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);

                var result = new InlineQueryResultArticle(
                    "0", "🔴 " + ex.Message, new InputTextMessageContent(ex.ToString()));

                results.Add(result);
            }

            botClient.AnswerInlineQueryAsync(e.InlineQuery.Id, results);
        }
    private static async Task <InlineQueryExecutionResult> OnInlineQuerySearchUupAsync(this TelegramService telegramService)
    {
        var inlineQueryExecution = new InlineQueryExecutionResult();
        var uupService           = telegramService.GetRequiredService <UupDumpService>();
        var query1     = telegramService.GetInlineQueryAt <string>(1);
        var query2     = telegramService.GetInlineQueryAt <string>(2);
        var queryValue = telegramService.InlineQueryValue;
        var builds     = await uupService.GetUpdatesAsync(queryValue);

        var inlineQueryResults = builds.Response.Builds.Select(
            build => {
            var title = build.BuildNumber + " - " + build.Arch.ToString().ToUpper();

            var downloadLink = build.Arch == Arch.Arm64
                    ? $"https://uupdump.net/download.php?id={build.Uuid}&pack=en-us&edition=core;professional"
                    : $"https://uupdump.net/download.php?id={build.Uuid}&pack=en-us&edition=core;coren;professional;professionaln";

            var htmlDescription = HtmlMessage.Empty
                                  .TextBr(build.Created.ToString("yyyy-MM-dd HH:mm:ss tt zz"))
                                  .TextBr(build.Title);

            var htmlContent = HtmlMessage.Empty
                              .Bold("Title: ").CodeBr(build.Title)
                              .Bold("Version: ").CodeBr(build.BuildNumber)
                              .Bold("Date: ").CodeBr(build.Created.ToString("yyyy-MM-dd HH:mm:ss tt zz"))
                              .Bold("Arch: ").CodeBr(build.Arch.ToString().ToUpper());

            var result = new InlineQueryResultArticle(
                id: build.Uuid,
                title: title,
                inputMessageContent: new InputTextMessageContent(htmlContent.ToString())
            {
                ParseMode             = ParseMode.Html,
                DisableWebPagePreview = true
            }
                )
            {
                Description = htmlDescription.ToString(),
                ReplyMarkup = new InlineKeyboardMarkup(
                    new[]
                {
                    new[]
                    {
                        InlineKeyboardButton.WithUrl("Unduh", downloadLink)
                    },
                    new[]
                    {
                        InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("Pencarian lanjut", $"uup {queryValue} "),
                        InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("Ulang pencarian", $"uup "),
                    }
                }
                    )
            };

            return(result);
        }
            );

        await telegramService.AnswerInlineQueryAsync(inlineQueryResults);

        return(inlineQueryExecution);
    }
    private static async Task <InlineQueryExecutionResult> OnInlineQuerySubsceneDownloadAsync(this TelegramService telegramService)
    {
        var executionResult = new InlineQueryExecutionResult();
        var queryCmd        = telegramService.GetInlineQueryAt <string>(0);
        var query1          = telegramService.GetInlineQueryAt <string>(1);
        var query2          = telegramService.GetInlineQueryAt <string>(2);
        var queryValue      = telegramService.InlineQueryValue;

        Log.Information("Starting find Subtitle file with title: '{QueryValue}'", query1);

        var subsceneService = telegramService.GetRequiredService <SubsceneService>();
        var searchBySlug    = await subsceneService.GetOrFeedSubtitleBySlug(query1);

        Log.Information(
            "Found about {AllCount} subtitle by slug: '{QueryValue}'",
            searchBySlug.Count,
            query1
            );

        var filteredSearch = searchBySlug.Where(
            element => {
            if (query2.IsNullOrEmpty())
            {
                return(true);
            }

            return(element.Language.Contains(query2, StringComparison.CurrentCultureIgnoreCase) ||
                   element.MovieName.Contains(query2, StringComparison.CurrentCultureIgnoreCase) ||
                   element.Owner.Contains(query2, StringComparison.CurrentCultureIgnoreCase));
        }
            ).ToList();

        Log.Information(
            "Found about {FilteredCount} of {AllCount} subtitle with title: '{QueryValue}'",
            filteredSearch.Count,
            searchBySlug.Count,
            query2
            );

        if (filteredSearch.Count == 0)
        {
            await telegramService.AnswerInlineQueryAsync(
                new List <InlineQueryResult>()
            {
                new InlineQueryResultArticle(
                    id: StringUtil.NewGuid(),
                    title: "Tidak di temukan hasil, silakan cari bahasa/judul yang lain",
                    inputMessageContent: new InputTextMessageContent("Tekan tombol dibawah ini untuk memulai pencarian")
                    )
                {
                    ReplyMarkup = new InlineKeyboardMarkup(
                        new[]
                    {
                        InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("Pencarian baru", "subscene ")
                    }
                        )
                }
            }
                );

            executionResult.IsSuccess = false;

            return(executionResult);
        }

        var urlStart = await telegramService.GetUrlStart("");

        var result = filteredSearch.Select(
            element => {
            var documentId  = element.ID;
            var languageSub = element.Language;
            var movieName   = element.MovieName;
            var movieUrl    = element.MovieUrl;
            var ownerSub    = element.Owner;
            var slug        = element.MovieUrl?.Split("/").Skip(2).JoinStr("/");
            var subtitleUrl = "https://subscene.com" + movieUrl;

            Log.Debug(
                "Appending Movie with slug: '{0}' => {1}",
                slug,
                movieName
                );

            var titleResult = $"{languageSub} | {ownerSub}";

            var content = HtmlMessage.Empty
                          .Bold("Nama/Judul: ").CodeBr(movieName)
                          .Bold("Bahasa: ").CodeBr(languageSub)
                          .Bold("Pemilik: ").Text(element.Owner);

            // var startDownloadUrl = urlStart + "start=sub-dl_" + slug.Replace("/", "=");
            var startDownloadUrl = urlStart + "start=sub-dl_" + documentId;

            var article = new InlineQueryResultArticle(
                id: documentId,
                title: titleResult,
                inputMessageContent: new InputTextMessageContent(content.ToString())
            {
                ParseMode             = ParseMode.Html,
                DisableWebPagePreview = true
            }
                )
            {
                Description = movieName,
                ReplyMarkup = new InlineKeyboardMarkup(
                    new[]
                {
                    new[]
                    {
                        InlineKeyboardButton.WithUrl("Tautan subtitle", subtitleUrl)
                    },
                    new[]
                    {
                        InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("Pencarian lanjut", $"subscene-dl {queryValue} "),
                        InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("Ulang pencarian", $"subscene-dl {query1} "),
                    },
                    new[]
                    {
                        InlineKeyboardButton.WithUrl("Unduh subtitle", startDownloadUrl),
                        InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("Pencarian baru", "subscene ")
                    }
                }
                    )
            };

            return(article);
        }
            );

        await telegramService.AnswerInlineQueryAsync(result);

        executionResult.IsSuccess = true;

        return(executionResult);
    }
    private static async Task <InlineQueryExecutionResult> OnInlineQuerySubsceneSearchAsync(this TelegramService telegramService)
    {
        var executionResult = new InlineQueryExecutionResult();
        List <SubsceneMovieSearch> subsceneMovieSearches;

        var queryCmd   = telegramService.InlineQueryCmd;
        var queryValue = telegramService.InlineQueryValue;

        Log.Information("Starting find Subtitle with title: '{QueryValue}'", queryValue);

        var subsceneService = telegramService.GetRequiredService <SubsceneService>();

        if (queryValue.IsNotNullOrEmpty())
        {
            subsceneMovieSearches = await subsceneService.GetOrFeedMovieByTitle(queryValue);

            if (subsceneMovieSearches == null)
            {
                var title = "Tidak di temukan hasil, silakan cari judul yang lain";
                if (queryValue.IsNullOrEmpty())
                {
                    title = "Silakan masukkan judul yang ingin dicari";
                }

                await telegramService.AnswerInlineQueryAsync(
                    new List <InlineQueryResult>()
                {
                    new InlineQueryResultArticle(
                        id: StringUtil.NewGuid(),
                        title: title,
                        inputMessageContent: new InputTextMessageContent("Tekan tombol dibawah ini untuk memulai pencarian")
                        )
                    {
                        ReplyMarkup = new InlineKeyboardMarkup(
                            new[]
                        {
                            InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("Pencarian baru", "subscene ")
                        }
                            )
                    }
                }
                    );

                executionResult.IsSuccess = false;

                return(executionResult);
            }
        }
        else
        {
            subsceneMovieSearches = await subsceneService.GetOrFeedMovieByTitle("");
        }

        Log.Information(
            "Found about {AllCount} title with query: '{QueryValue}'",
            subsceneMovieSearches.Count,
            queryValue
            );

        var inlineQueryResultArticles = subsceneMovieSearches
                                        .OrderByDescending(search => search.CreatedOn)
                                        .Select(
            item => {
            var movieTitle    = item.MovieName;
            var pathName      = item.MovieUrl;
            var subtitleCount = item.SubtitleCount;
            var moviePath     = pathName.Split("/").Take(3).JoinStr("/");
            var slug          = pathName.Split("/").ElementAtOrDefault(2);
            var subsceneUrl   = $"https://subscene.com{moviePath}";

            var titleHtml = HtmlMessage.Empty
                            .Bold("Judul: ").CodeBr(movieTitle)
                            .Bold("Tersedia : ").CodeBr(subtitleCount);

            var article = new InlineQueryResultArticle(
                id: item.ID,
                title: movieTitle,
                inputMessageContent: new InputTextMessageContent(titleHtml.ToString())
            {
                ParseMode             = ParseMode.Html,
                DisableWebPagePreview = true
            }
                )
            {
                Description = $"Tersedia: {subtitleCount}",
                ReplyMarkup = new InlineKeyboardMarkup(
                    new[]
                {
                    new[]
                    {
                        InlineKeyboardButton.WithUrl("Tautan Subscene", subsceneUrl)
                    },
                    new[]
                    {
                        InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("Pencarian lanjut", $"subscene {queryValue} "),
                        InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("Pencarian baru", "subscene ")
                    },
                    new[]
                    {
                        InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("Mulai unduh", $"subscene-dl {slug} "),
                    }
                }
                    )
            };

            return(article);
        }
            );

        // }
        await telegramService.AnswerInlineQueryAsync(inlineQueryResultArticles);

        executionResult.IsSuccess = true;

        return(executionResult);
    }
        public HurtomBot(string TelegramApiToken)
        {
            bot = new TelegramBotClient(TelegramApiToken);

            bot.SetWebhookAsync("");

            bot.OnInlineQuery += async(object updobj, InlineQueryEventArgs iqea) =>
            {
                if (string.IsNullOrEmpty(iqea.InlineQuery.Query) || string.IsNullOrWhiteSpace(iqea.InlineQuery.Query))
                {
                    return;
                }

                var toloka = new TolokaHurtom.Toloka(iqea.InlineQuery.Query).ToArray();

                if (toloka.Length > 0)
                {
                    var inline = new InlineQueryResultArticle[toloka.Length];

                    for (int i = 0; i < toloka.Length; i++)
                    {
                        var content = new InputTextMessageContent($"<b>{toloka[i].title}</b>\n\n{toloka[i].size} | Роздають: {toloka[i].seeders} | Завантажують: {toloka[i].leechers}\n\n<i>{toloka[i].forum_parent} / {toloka[i].forum_name}</i>\n\n{toloka[i].link}");
                        content.ParseMode = ParseMode.Html;

                        inline[i] = new InlineQueryResultArticle(
                            i.ToString(),
                            toloka[i].title,
                            content);

                        inline[i].Description =
                            toloka[i].size + " | Роздають: " + toloka[i].seeders + " | Завантажують: " + toloka[i].leechers;

                        inline[i].ThumbUrl = toloka[i].link;
                    }

                    await bot.AnswerInlineQueryAsync(iqea.InlineQuery.Id, inline);
                }
            };

            bot.OnMessage += async(object updobj, MessageEventArgs mea) =>
            {
                var message = mea.Message;

                if (mea.Message.Type == MessageType.Text)
                {
                    if (message.Text == null)
                    {
                        return;
                    }

                    var ChatId = message.Chat.Id;

                    string command = message.Text.ToLower().Replace("@hurtombot", "").Replace("/", "");

                    switch (command)
                    {
                    case "start":
                        await bot.SendTextMessageAsync(ChatId, "Вітаю! Я @HurtomBot!\nНапишіть, що ви хочете знайти на Гуртом, і я знайду для вас українські торренти.\nНатисніть '/', щоби обрати команду.");

                        break;

                    case "sendtorrent":
                        await bot.SendTextMessageAsync(ChatId, "Оберіть чат, до якого хочете надіслати торрент.", replyMarkup : new InlineKeyboardMarkup(new[] { InlineKeyboardButton.WithSwitchInlineQuery("Надіслати") }));

                        break;

                    default:
                        foreach (var torrent in new TolokaHurtom.Toloka(command).ToArray())
                        {
                            bot.SendTextMessageAsync(ChatId, $"<b>{torrent.title}</b>\n\n{torrent.size} | Роздають: {torrent.seeders} | Завантажують: {torrent.leechers}\n\n<i>{torrent.forum_parent} / {torrent.forum_name}</i>\n\n{torrent.link}", ParseMode.Html);
                        }
                        break;
                    }
                }
            };
        }