/// <summary> /// Backs to previous menu /// </summary> private void BackToPreviousMenu() { if (_previousMenus.Count < 1) { SendMessage(Resources.Resources.NowhereBack, nameof(BackToPreviousMenu)); return; } _messageFromUserExpected = false; _expectedAct = default; _currentMenu = _previousMenus[^ 1];
public LessonStartNotification() { List<string> strings = new List<string>(); for (int i = MINNOTIFICATIONTIME; i <= MAXNOTIFICATIONTIME; i += INTERVAL) strings.Add($"{i} min."); strings.Add("/annuleer"); _keyboard = ReplyKeyboardMarkup.GetKeyboardForValues(strings, 3); }
static async Task RequestContact(Message message) { var RequestReplyKeyboard = new ReplyKeyboardMarkup(new[] { KeyboardButton.WithRequestContact("Contact"), }); await Bot.SendTextMessageAsync( chatId : message.Chat.Id, text : "Who are you?", replyMarkup : RequestReplyKeyboard ); }
public override async Task Execute(Message message, TelegramBotClient botClient) { var rkm = new ReplyKeyboardMarkup(); rkm.Keyboard = await _service.GetKeyboards("./InfoKz.json", "Бас мәзір"); string text = @"Жаңа коронавирус инфекциясы (COVID-19) – бұл жақында ашылған коронавирустардың соңғысы туындататын жұқпалы ауру. Коронавирустар – адамдарды да, жануарларды да ауруға шалдықтыруы мүмкін вирустардың кең тобы. "; var chatId = message.Chat.Id; await botClient.SendTextMessageAsync(chatId, text, parseMode : Telegram.Bot.Types.Enums.ParseMode.Html, true, true, 0, rkm); }
/// <summary> /// /// </summary> /// <param name="e"></param> /// <returns></returns> private static async Task TrySendToCompany(CallbackQueryEventArgs e) { var lang = new DataContext().Languages.FirstOrDefault(f => f.ChatId == e.CallbackQuery.From.Id); var langId = lang != null ? lang.LanguageId : 1; var orders = await OrdersService.GetByPositionChatIdDate(e.CallbackQuery.From.Id, 1); if (orders != null) { string suxoypar = langId == 1 ? "💨Suxoy tuman" : "💨Сухой пар"; string naqt = langId == 1 ? "💵 Naqd to'lash" : "💵 Платить наличными"; string card = langId == 1 ? "💳 Karta raqam orqali to'lash" : "💳 Оплата по номеру карты"; string cardNum = langId == 1 ? "Karta raqam:" : "Номер карты:"; var texts = e.CallbackQuery.Data == "paynaqt" ? "💵 Naqd to'lash" : "💳 Karta raqam orqali to'lash"; var textForClient = e.CallbackQuery.Data == "paynaqt" ? "" : ""; double allsum = 0; var ordersText = ""; var client = await ClientService.GetByChatId(e.CallbackQuery.From.Id); foreach (var order in orders) { allsum = allsum + (order.ServiceModel?.Price * order.Count).Value; ordersText = ordersText + "\n" + order.ServiceModel?.Name + "\n" + "\t" + order.ServiceModel?.Name + " " + order.Count + " x" + " " + order.ServiceModel?.Price + "=" + (order.ServiceModel?.Price * order.Count); if (order.SuxoyPar != null) { ordersText += ordersText = "\n " + suxoypar + " = 0"; allsum += 0; } ordersText += "\n\n---------\n\n"; OrdersService.AddOrUpdate(new Orders() { Id = order.Id, ChatId = order.ChatId, ServiceId = order.ServiceId, Longitude = order.Longitude, Lotetude = order.Lotetude, Position = 2, DateOrder = order.DateOrder, Count = order.Count }); } ordersText = ordersText + "Umumiy: " + allsum + " so'm"; var companys = CompanyService.GetAll(); foreach (var item in companys) { string text = $"Klient- {client.Name} Telefon nomeri- {client.Phone}" + "\n" + ordersText + "\n --------- \n To'lov turi: " + texts; Bot.SendTextMessageAsync(item.ChatId, text); var longetude = float.Parse(orders.FirstOrDefault().Longitude); var lotetude = float.Parse(orders.FirstOrDefault().Lotetude); Bot.SendLocationAsync(item.ChatId, lotetude, longetude); } var RequestReplyKeyboard = new ReplyKeyboardMarkup(new[] { new KeyboardButton() }); ordersText = ordersText + "\n \n" + textForClient; var inline = new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithCallbackData(langId == 1 ? "Ish yakunlandi" : "Работа завершена", "done") } }); Bot.EditMessageTextAsync(e.CallbackQuery.From.Id, messageId: e.CallbackQuery.Message.MessageId, ordersText, replyMarkup: inline); } else { InliniButtonForServices(e); } }
private ReplyKeyboardMarkup CreateStartKeyboard() { var keyboard = new ReplyKeyboardMarkup(new[] { groupProvider .GetAllGroups() .Select(x => new KeyboardButton(x)) .ToArray() }); return(keyboard); }
private async Task <ReplyKeyboardMarkup> GetMenu(string command) { IEnumerable <League> leagues = await _leagueRepository.GetAll(version); League currentLeague = leagues.FirstOrDefault(p => p.Name == command); List <List <KeyboardButton> > buttons = CreateButtons(currentLeague, command); ReplyKeyboardMarkup menu = new ReplyKeyboardMarkup(buttons); // menu.Keyboard = buttons; return(menu); }
public ReplyKeyboardMarkup GetReplyKeyboardMarkupByCategories() { var rkm = new ReplyKeyboardMarkup(); //rkm.ResizeKeyboard = true; rkm.Keyboard = new[] { Messages.Categories.Select(c => new KeyboardButton(c)) }; return(rkm); }
public static async Task SendMessage(long chatId, string text, ReplyKeyboardMarkup markup) { if (markup != null) { await SendButtonMessage(chatId, text, markup); } else { await Bot.SendTextMessageAsync(chatId, text); } }
public async void SendTextMessageAsync(ChatId chatId, string message, ReplyKeyboardMarkup keyboard = null) { if (string.IsNullOrEmpty(message)) { return; } if (keyboard == null) { keyboard = Keyboards.Main; } await TelegramBot.SendTextMessageAsync(chatId : chatId, text : message, parseMode : Telegram.Bot.Types.Enums.ParseMode.Default, disableWebPagePreview : true, disableNotification : false, replyToMessageId : 0, replyMarkup : keyboard); }
private static ReplyKeyboardMarkup CreateKeyboard() { var keyboard = new ReplyKeyboardMarkup(new[] { new [] { new KeyboardButton("Назад") } }); return(keyboard); }
protected void ShowOptions(Message message) { //get selected option var options = RefusalTypeRepository.List(); var keyboard = new ReplyKeyboardMarkup(GetKeyboard(options), false, true); Api.SendTextMessageAsync(message.Chat.Id, TelegramBotMessages.AskRefusalText, false, false, 0, keyboard, ParseMode.Default, CancellationToken.None); UpdateCurrentState(message.Chat.Id, RefusalWorkflowStatusType.ShowedOptions); }
private ReplyKeyboardMarkup RestartKeyboard() { var keyboard = new ReplyKeyboardMarkup(new[] { new [] // first row { new KeyboardButton("شروع دوباره"), } }); return(keyboard); }
private static ReplyKeyboardMarkup CreatePreStartKeyboard() { var keyboard = new ReplyKeyboardMarkup(new[] { new [] { new KeyboardButton("Начать") } }); return(keyboard); }
/// <summary> /// /// </summary> public webhookController() { bot = new Api(botToken); //تعریف کیبورد main_menu_key = new ReplyKeyboardMarkup { Keyboard = new KeyboardButton[][] { new KeyboardButton[] { "ارسال عکس" }, new KeyboardButton[] { "درباره", "راهنما" } }, ResizeKeyboard = true, OneTimeKeyboard = true, }; }
public void CreateInstanceAndCheckParameters() { const string responseText = "Hello"; var keybord = new ReplyKeyboardMarkup(new KeyboardButton[] { "FirstButton", "SecondButton" }); var response = new Response(responseText) { ReplyMarkup = keybord }; Assert.AreEqual(responseText, response.Text); Assert.IsTrue(keybord.Equals(response.ReplyMarkup)); }
static void Main() { Console.WriteLine("Start!"); var bot = new BotClient("<your bot token>"); bot.SetMyCommands(new BotCommand("reply", "ReplyMarkup"), new BotCommand("del", "Delete")); // Long Polling var updates = bot.GetUpdates(); while (true) { if (updates.Length > 0) { foreach (var update in updates) { switch (update.Type) { case UpdateType.Message: if (update.Message.Text.Contains("/reply")) { var keyboard = new ReplyKeyboardMarkup { Keyboard = new KeyboardButton[][] { new KeyboardButton[] { new KeyboardButton("Button 1"), //column 1 row 1 new KeyboardButton("Button 2") //column 1 row 2 }, // column 1 new KeyboardButton[] { new KeyboardButton("Button 3") //col 2 row 1 } // column 2 }, ResizeKeyboard = true };; bot.SendMessage(update.Message.Chat.Id, "new keyboard", replyMarkup: keyboard); } if (update.Message.Text.Contains("/del")) { bot.SendMessage(update.Message.Chat.Id, "remove reply keyboard", replyMarkup: new ReplyKeyboardRemove()); } break; } } updates = bot.GetUpdates(offset: updates.Max(u => u.UpdateId) + 1); } else { updates = bot.GetUpdates(); } } }
public void SendMessage(string mytext) { client.OnMessage += BotClient_OnMessage; client.StartReceiving(); async void BotClient_OnMessage(object sender, MessageEventArgs e) { var keyboard = new ReplyKeyboardMarkup(); var buttons = new List <KeyboardButton[]>(); var button = new List <KeyboardButton>(); button.Add(new KeyboardButton(DefaultNames.one_time_event)); button.Add(new KeyboardButton(DefaultNames.custom_event)); button.Add(new KeyboardButton(DefaultNames.period_event)); buttons.Add(button.ToArray()); keyboard.Keyboard = buttons.ToArray(); if (e.Message.Text != null) { if (e.Message.Text == DefaultNames.one_time_event) { await client.SendTextMessageAsync ( chatId : e.Message.Chat, text : mytext, replyMarkup : keyboard ); } if (e.Message.Text == DefaultNames.custom_event) { await client.SendTextMessageAsync ( chatId : e.Message.Chat, text : mytext, replyMarkup : keyboard ); } if (e.Message.Text == DefaultNames.period_event) { await client.SendTextMessageAsync (chatId : e.Message.Chat, text : mytext, replyMarkup : keyboard ); } await client.SendTextMessageAsync (chatId : e.Message.Chat, text : "Go!!!", replyMarkup : keyboard ); } } }
public async Task RequestLocation() { ReplyKeyboardMarkup RequestReplyKeyboard = new ReplyKeyboardMarkup(new[] { KeyboardButton.WithRequestLocation("Location"), }); await TelegramBotClient.SendTextMessageAsync( chatId : Update.Message.Chat.Id, text : "Send your location please 😉", replyMarkup : RequestReplyKeyboard ); }
public static async void ShowButton(ITelegramBotClient _bot, MessageEventArgs args) { var buttonNext = new KeyboardButton("Next"); var buttonBack = new KeyboardButton("Back"); var markup = new ReplyKeyboardMarkup(new[] { buttonBack, buttonNext }); markup.OneTimeKeyboard = false; await _bot.SendTextMessageAsync(args.Message.Chat.Id, " ", replyMarkup : markup); }
public void ShowMainMenu(long chatId) { var keyboard = new ReplyKeyboardMarkup(new[] { new[] { new KeyboardButton("Рассчитай ингредиент"), new KeyboardButton("Покажи сохраненные рецепты") } }); BotClient.SendTextMessageAsync(chatId, "Нажимай на кнопочки - будет весело!", replyMarkup: keyboard); }
static async Task RequestContactAndLocation(Message message) { var RequestReplyKeyboard = new ReplyKeyboardMarkup(new[] { KeyboardButton.WithRequestLocation("Location"), KeyboardButton.WithRequestContact("Contact"), }); await botClient.SendTextMessageAsync( chatId : message.Chat.Id, text : "Who or Where are you?", replyMarkup : RequestReplyKeyboard ); }
/// <summary> /// Создание клавиатуры для пользователя /// </summary> static ReplyKeyboardMarkup UsersDefaultKeyboard() { ReplyKeyboardMarkup keyboard = new ReplyKeyboardMarkup(new[] { new [] // first row { new KeyboardButton("*Путешествие"), new KeyboardButton("*Бросок кубика"), }, }, true, false); return(keyboard); }
public static void SetupReplyMarkup() { var buttonHome = new KeyboardButton("Дома"); var buttonStroll = new KeyboardButton("Гуляю"); var buttonForAStroll = new KeyboardButton("Еду на прогулку"); var buttonFromAStroll = new KeyboardButton("Еду с прогулки"); var raw1 = new[] { buttonStroll, buttonForAStroll }; var raw2 = new[] { buttonHome, buttonFromAStroll }; var raws = new[] { raw1, raw2 }; ReplyMarkup = new ReplyKeyboardMarkup(raws, true); }
public async Task ExecuteCommand(string chatId, User userJoined, User userLeft) { var keyboard = new ReplyKeyboardMarkup(new[] { new KeyboardButton(BotCommands.AndroidApp), new KeyboardButton(BotCommands.IosApp), new KeyboardButton(BotCommands.Return) }, true); var msg = await _messagesService.GetAppMsg(); await _telegramBotClient.SendTextMessageAsync(chatId, msg, ParseMode.Default, false, false, 0, keyboard); }
protected DialogCommandBase(int label) { Label = label; if (!string.IsNullOrWhiteSpace(ReturnCommandMessage)) { ReturnKeyboardMarkup = new ReplyKeyboardMarkup(new[] { new KeyboardButton(ReturnCommandMessage) }) { OneTimeKeyboard = true, ResizeKeyboard = true }; } }
internal static async Task RequestContact(TelegramBotClient bot, int userId) { var replyKeyBoard = new ReplyKeyboardMarkup(new[] { new [] { new KeyboardButton("Поделиться своим контактом") { RequestContact = true } }, new [] { new KeyboardButton("\ud83c\udf81 Хочу подарить \ud83c\udf81") }, }, resizeKeyboard: true); string msg = "Для сохранения подарков, Вы должны зарегистрироваться, отправив нам свой контакт, нажав соответсвующую кнопку на клавиатуре."; await bot.SendTextMessageAsync(userId, msg, replyMarkup : replyKeyBoard); }
/// <summary> /// Ответ с клавиатурой /// </summary> /// <param name="msg">Сообщение</param> /// <param name="keyboard">Клавиатура</param> /// <param name="args">Аргументы</param> /// <param name="chat">Чат ИД</param> private static void WithKeyboardSending(string msg, ReplyKeyboardMarkup keyboard, MessageEventArgs args = null, ChatId chat = null) { TelegramBotClient Bot = SimpleTBot.GetBot(); if (chat is null) { Bot.SendTextMessageAsync(args.Message.Chat.Id, msg, replyMarkup: keyboard); } else { Bot.SendTextMessageAsync(chat, msg, replyMarkup: keyboard); } }
private async Task SendReplyKeyboard(Message message) { var replyKeyboardMarkup = new ReplyKeyboardMarkup( new[] { new[] { KeyboardButton.WithRequestLocation("Location"), "1" }, new[] { KeyboardButton.WithRequestContact("Contact"), "2" }, }, true ); await _client.SendTextMessageAsync(message.Chat.Id, Strings.Choose, replyMarkup : replyKeyboardMarkup); }
private void PrepareKeyboard() { if (_user.Symptoms == Symptoms.None) { AnswerKeyboard = new ReplyKeyboardMarkup(new List <KeyboardButton> { new KeyboardButton { Text = "[TBD]В начало" } }, oneTimeKeyboard: true); } }
public async override Task Execute(Message message, ITelegramBotClient client) { string text = MessageConstant.CHOOSE_LEAGUE; if (message.Text == MessageConstant.DEVELOP) { text = "В разработке:\n1. Бот будет сам уведомлять когда игра\n\nСвязь с разработчиком\n0955923228"; } ReplyKeyboardMarkup keyboard = await GetMenu(); await client.SendTextMessageAsync(message.Chat.Id, text, ParseMode.Html, false, false, 0, keyboard); }
public override bool Execute() { string suggestionId; if (string.IsNullOrEmpty(Arguments)) { Console.WriteLine(GetType().Name + ": Sending 'Enter suggestion number' prompt"); try { TelegramApi.SendMessage(Message.From, "Введите номер предложения"); } catch (Exception e) { throw new Exception(GetType().Name + ": An error occurred while sending prompt", e); } Console.WriteLine(GetType().Name + ": Waiting for a message that contains show title"); try { suggestionId = TelegramApi.WaitForMessage(Message.From).Text; } catch (Exception e) { throw new Exception(GetType().Name + ": An error occurred while waiting for a message that contains show title", e); } } else { suggestionId = Arguments; } ReplyKeyboardMarkup replyRateKB = new ReplyKeyboardMarkup(); replyRateKB.Keyboard = new string[][] { new string[] {"/+","/-"}, new string[] {"/back"} }; replyRateKB.OneTimeKeyboard = true; replyRateKB.ResizeKeyboard = true; replyRateKB.Selective = false; int sId = int.Parse(suggestionId); using (var db = new AppDbContext()) { Suggestion suggestion; //Rating rating; try { suggestion = db.GetSuggestionById(sId); } catch (Exception e) { throw new Exception(GetType().Name + ": An error occurred while searching suggestion #" + suggestionId + " in database", e); } if (suggestion != null) { Console.WriteLine(GetType().Name + ": Searching user with TelegramId: " + Message.From.Id + " in database"); User user; try { user = db.GetUserByTelegramId(Message.From.Id); } catch (Exception e) { throw new Exception(GetType().Name + ": An error occurred while searching user in database", e); } bool newUser = false; if (user == null) { user = new User { TelegramUserId = Message.From.Id, FirstName = Message.From.FirstName, LastName = Message.From.LastName, Username = Message.From.Username }; newUser = true; } if (newUser) { Console.WriteLine(GetType().Name + ": " + user + " is new User"); } else { Console.WriteLine(GetType().Name + ": User " + user + " already exists"); } Rating rating; try { var _user = db.Users.Include(u => u.Ratings).FirstOrDefault(r => r.Id==user.Id); rating = _user.Ratings.FirstOrDefault(r => r.Suggestion.Id == suggestion.Id); } catch (Exception e) { throw new Exception(GetType().Name + ": An error occurred while checking for rating", e); } /* if (rating == null) { rating = new Rating { User = user, Suggestion = suggestion, isRatedUp = true } }*/ //} //do //{ //using (var db = new AppDbContext()) //{ /*if (suggestion.AddedBy == userRated) replyRateKB.Keyboard[1] = new string[] { "/delete" };*/ if (rating != null) { if (rating.isRatedUp) { replyRateKB.Keyboard[0] = new string[] { "/-" }; } else { replyRateKB.Keyboard[0] = new string[] { "/+" }; } } else { replyRateKB.Keyboard[0] = new string[] { "/+", "/-" }; } try { TelegramApi.SendMessage(Message.From, suggestion.ToString(), replyRateKB); } catch (Exception e) { throw new Exception(GetType().Name + ": An error occurred while sending suggest description", e); } Message message; try { message = TelegramApi.WaitForMessage(Message.From); } catch (Exception e) { throw new Exception(GetType().Name + ": An error occurred while waiting for a message with rate action", e); } /*if (suggestion.AddedBy != userRated) {*/ if (rating != null) { if (message.Text == "/+" && !rating.isRatedUp) { suggestion.Rate += 1; db.Ratings.Remove(rating); } else if (message.Text == "/-" && rating.isRatedUp) { suggestion.Rate -= 1; db.Ratings.Remove(rating); } } else { if (message.Text == "/+") { suggestion.Rate += 1; rating = new Rating() { User = user, Suggestion = suggestion, isRatedUp = true }; db.Ratings.Add(rating); } else if (message.Text == "/-") { suggestion.Rate -= 1; rating = new Rating() { User = user, Suggestion = suggestion, isRatedUp = false }; db.Ratings.Add(rating); } } //} db.SaveChanges(); } else { Console.WriteLine(GetType().Name + ": Suggestion does not exist"); try { TelegramApi.SendMessage(Message.From, "Suggestion does not exist"); } catch (Exception e) { throw new Exception(GetType().Name + ": An error occured while sending notification of nonexistent suggestion", e); } } //} while (message.Text != "/+" && message.Text != "/-" && message.Text != "/delete" && message.Text != "/back"); } Status = true; return true; }
internal static void Send(string message, long id, bool clearKeyboard = false, ReplyKeyboardMarkup customMenu = null) { Bot.Send(message, id, clearKeyboard, customMenu); }
internal static void Send(string message, long id, bool clearKeyboard = false, ReplyKeyboardMarkup customMenu = null) { //message = message.Replace("`",@"\`"); if (clearKeyboard) { var menu = new ReplyKeyboardHide { HideKeyboard = true }; Api.SendTextMessage(id, message, replyMarkup: menu, disableWebPagePreview: true); } else if (customMenu != null) { Api.SendTextMessage(id, message, replyMarkup: customMenu, disableWebPagePreview: true); } else { Api.SendTextMessage(id, message, disableWebPagePreview: true); } }
private TelegramBotReply FailedInstruction(Message m, ReplyKeyboardMarkup customKeyboard = null) { return Message(m, @"Er is iets fout gegaan! Gebruik de toetsen op het toetsenbord.", replyMarkup: customKeyboard ?? keyboard); }
private static async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs) { var message = messageEventArgs.Message; if (message == null || message.Type != MessageType.TextMessage) return; if (message.Text.StartsWith("/inline")) // send inline keyboard { await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); var keyboard = new InlineKeyboardMarkup(new[] { new[] // first row { new InlineKeyboardButton("1.1"), new InlineKeyboardButton("1.2"), }, new[] // second row { new InlineKeyboardButton("2.1"), new InlineKeyboardButton("2.2"), } }); await Task.Delay(500); // simulate longer running task await Bot.SendTextMessageAsync(message.Chat.Id, "Choose", replyMarkup: keyboard); } else if (message.Text.StartsWith("/keyboard")) // send custom keyboard { var keyboard = new ReplyKeyboardMarkup(new[] { new [] // first row { new KeyboardButton("1.1"), new KeyboardButton("1.2"), }, new [] // last row { new KeyboardButton("2.1"), new KeyboardButton("2.2"), } }); await Bot.SendTextMessageAsync(message.Chat.Id, "Choose", replyMarkup: keyboard); } else if (message.Text.StartsWith("/photo")) // send a photo { await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.UploadPhoto); const string file = @"<FilePath>"; var fileName = file.Split('\\').Last(); using (var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)) { var fts = new FileToSend(fileName, fileStream); await Bot.SendPhotoAsync(message.Chat.Id, fts, "Nice Picture"); } } else if (message.Text.StartsWith("/request")) // request location or contact { var keyboard = new ReplyKeyboardMarkup(new [] { new KeyboardButton("Location") { RequestLocation = true }, new KeyboardButton("Contact") { RequestContact = true }, }); await Bot.SendTextMessageAsync(message.Chat.Id, "Who or Where are you?", replyMarkup: keyboard); } else { var usage = @"Usage: /inline - send inline keyboard /keyboard - send custom keyboard /photo - send a photo /request - request location or contact "; await Bot.SendTextMessageAsync(message.Chat.Id, usage, replyMarkup: new ReplyKeyboardHide()); } }
public override bool Execute() { //Program.Logger.Debug($"{GetType().Name}: Parsing message size. Arguments: {Arguments}"); int messageSize; int.TryParse(Arguments, out messageSize); if (messageSize == 0) { messageSize = MaxPageSize; } messageSize = Math.Min(messageSize, MaxPageSize); //Program.Logger.Debug($"{GetType().Name}: Message size: {messageSize}"); List<string> suggestions; //Program.Logger.Debug($"{GetType().Name}: Retrieving shows list"); using (var db = new AppDbContext()) { try { suggestions = db.Suggestions.Select(s => "/" + s.Id + " " + s.Title + "\nрейтинг: "+ s.Rate + "\nпредложено " + s.AddedBy.FirstName + " " + s.AddedBy.LastName).ToList(); } catch (Exception e) { throw new Exception(GetType().Name + ": An error occurred while retrieving shows list", e); } } List<string> pagesList = new List<string>(); for (int i = 0; i < suggestions.Count; i += messageSize) { if (i > suggestions.Count) { break; } int count = Math.Min(suggestions.Count - i, messageSize); pagesList.Add( suggestions.GetRange(i, count) .Aggregate("", (s, s1) => s + "\n" + s1) ); } try { //Program.Logger.Debug($"{GetType().Name}: Sending shows list"); for (int i = 0; i < pagesList.Count; i++) { string page = pagesList[i]; ReplyKeyboardMarkup replyKB = new ReplyKeyboardMarkup(); replyKB.Keyboard = new string[][] { new string[] {"/next","/stop"} }; replyKB.OneTimeKeyboard = true; replyKB.ResizeKeyboard = true; replyKB.Selective = false; if (i != pagesList.Count - 1) { page += "\n/next or /stop"; replyKB.Keyboard[0]= new string[] {"/next","/stop"}; } if (i == pagesList.Count - 1) { page += "\n/stop"; replyKB.Keyboard[0]= new string[] {"/stop"}; } TelegramApi.SendMessage(Message.From, page,replyKB); Message message; /*ReplyKeyboardMarkup replyKB = new ReplyKeyboardMarkup(); replyKB.Keyboard = new string[][] { new string[] {"/next","/stop"} }; replyKB.OneTimeKeyboard = true; replyKB.ResizeKeyboard = true; replyKB.Selective = false;*/ ReplyKeyboardMarkup replyRateKB = new ReplyKeyboardMarkup(); replyRateKB.Keyboard = new string[][] { new string[] {"/+","/-"} }; replyRateKB.OneTimeKeyboard = true; replyRateKB.ResizeKeyboard = true; replyRateKB.Selective = false; string footerText = ""; do { message = TelegramApi.WaitForMessage(Message.From); if (message.Text != "/stop" && (i == pagesList.Count - 1 || message.Text != "/next" )) { //if (message.Text = ) string someMatch = SuggestionNumRegex.Match(message.Text).Groups[0].Value; if (someMatch == "" || someMatch == null) { if (i == pagesList.Count - 1) { footerText = "\n/stop or /+"; replyKB.Keyboard[0]= new string[] {"/stop"}; } else { footerText = "\n/next or /stop or /+"; replyKB.Keyboard[0]= new string[] {"/next","/stop"}; } TelegramApi.SendMessage(Message.From, footerText, replyKB); } else { using (var db = new AppDbContext()) { try { int sId = int.Parse(someMatch); Suggestion fullSuggestion = db.Suggestions.Include(s => s.AddedBy).FirstOrDefault(s => s.Id == sId); /*Console.WriteLine(fullSuggestion.Title + "\nдобавлено " + fullSuggestion.AddedBy.FirstName + " " + fullSuggestion.AddedBy.LastName + "\n рейтинг: " + fullSuggestion.Rate + "\n" + fullSuggestion.Text);*/ TelegramApi.SendMessage(Message.From, fullSuggestion.ToString(), replyRateKB); } catch (Exception e) { throw new Exception(GetType().Name + ": An error occurred while sending suggest description", e); } } } } } while (message.Text != "/stop" && (i == pagesList.Count - 1 || message.Text != "/next")); if (message.Text == "/stop") { break; } } } catch (Exception e) { throw new Exception(GetType().Name + ": An error occurred while sending suggestions list", e); } Status = true; return true; }
public JoinMessageFlow(Game[] games) { this.games = games; keyboard = GetKeyboard(); }