ShowTradersInBotChat.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System.Threading.Tasks;
  2. using CardCollector.Controllers;
  3. using CardCollector.DataBase.Entity;
  4. using CardCollector.Resources;
  5. using CardCollector.Session.Modules;
  6. using Telegram.Bot.Types;
  7. namespace CardCollector.Commands.InlineQuery
  8. {
  9. public class ShowTradersInBotChat : InlineQuery
  10. {
  11. protected override string CommandText => "";
  12. public override async Task Execute()
  13. {
  14. // Фильтр - введенная пользователем фраза
  15. var filter = Update.InlineQuery!.Query;
  16. var module = User.Session.GetModule<AuctionModule>();
  17. // Получаем список продавцов
  18. var traders = await AuctionController.GetTradersList(filter, module.SelectedSticker.Id);
  19. var results = User.Session.GetModule<FiltersModule>()
  20. .ApplyPriceTo(traders)
  21. .ToTelegramResults(Command.buy_sticker);
  22. // Посылаем пользователю ответ на его запрос
  23. await MessageController.AnswerInlineQuery(InlineQueryId, await results);
  24. }
  25. /* Команда пользователя удовлетворяет условию, если она вызвана
  26. в личных сообщениях с ботом и пользователь выбрал стикер в меню аукциона */
  27. protected internal override bool IsMatches(string command)
  28. {
  29. return User == null
  30. ? command.Contains("Sender")
  31. : User.Session.State == UserState.ProductMenu;
  32. }
  33. public ShowTradersInBotChat() { }
  34. public ShowTradersInBotChat(UserEntity user, Update update) : base(user, update) { }
  35. }
  36. }