internal override async Task Reply(Message message, TelegramBotClient botClient) { var inlineKeyboarButtons = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[BloodTestIndicatorsCommand.InlineKeyboardRowsCount][]; for (int i = 0, j = 0, k = 1; i < BloodTestIndicatorsCommand.InlineKeyboardRowsCount; i++, j += BloodTestIndicatorsCommand.InlineKeyboardColumnsCount, k += BloodTestIndicatorsCommand.InlineKeyboardColumnsCount) { // row i inlineKeyboarButtons[i] = new[] { // column 1 Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData(BloodTestIndicatorsCommand.IndicatorsList[j], $"{BloodTestIndicatorsCommand.IndicatorsList[j]}{BloodTestIndicatorsCommand.CallbackData}"), // column 2 Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData(BloodTestIndicatorsCommand.IndicatorsList[k], $"{BloodTestIndicatorsCommand.IndicatorsList[k]}{BloodTestIndicatorsCommand.CallbackData}") }; } var inlineKeyboar = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(inlineKeyboarButtons); var chatId = message.Chat.Id; string newBotMessage = "Выберете интересующий Вас показатель:"; var media = new InputMediaPhoto("https://raw.githubusercontent.com/OnofreichukRoman/MedicalTelegramBot/master/Images/Bloodtestindicators.jpg"); await botClient.EditMessageMediaAsync(chatId, message.MessageId, media, replyMarkup : inlineKeyboar); await botClient.EditMessageCaptionAsync(chatId, message.MessageId, newBotMessage, replyMarkup : inlineKeyboar, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); }
public static Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup createInlineKeyboard(List <string> buttonNames) { var buttonsRow = new List <Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton>(); foreach (var b in buttonNames) { var button = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton(); button.Text = b; buttonsRow.Add(button); } var inlineKeyboard = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(buttonsRow); return(inlineKeyboard); }
internal override async Task Execute(Message message, TelegramBotClient botClient) { var keyboardButtons = new[] { new [] // row 1 { //column 1 new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("🔙 На главную"), //column 2 new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("🔬 Общий анализ крови") }, new [] // row 2 { //column 1 new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("🔬 Общий анализ мочи") } }; var inlineKeyboardSearchButton = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][] { // row 1 new [] { // column 1 Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("🔍 Поиск") } }; var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(keyboardButtons) { ResizeKeyboard = true }; var inlineKeyboardSearch = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(inlineKeyboardSearchButton); var chatId = message.Chat.Id; string botMessage = "Выберете интересующий Вас анализ: ↕️"; string botSearchMessage = "Или воспользуйтесь кнопкой поиска по другим анализам и показателям"; await botClient.SendTextMessageAsync(chatId, botMessage, replyToMessageId : message.MessageId, replyMarkup : keyboard); await botClient.SendTextMessageAsync(chatId, botSearchMessage, replyMarkup : inlineKeyboardSearch); }
internal override async Task Reply(Message message, TelegramBotClient botClient) { var inlineKeyboardButtons = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][] { // row 1 new [] { // column 1 Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData("<< Назад", "Показатели анализа крови") } }; var inlineKeyboar = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(inlineKeyboardButtons); string newBotMessage = "*Лейкоциты* – клетки крови, которые образуются в костном мозге. Основная их функция – бороться с инфекцией и повреждением тканей. Выделяют пять типов лейкоцитов, которые отличаются по внешнему виду и выполняемым функциям: эозинофилы, базофилы, нейтрофилы, лимфоциты и моноциты. Они присутствуют в организме в относительно стабильных пропорциях и, хотя их численность может значительно изменяться в течение дня, в норме обычно остаются в пределах референсных значений. \nЛейкоциты образуются из стволовых клеток костного мозга и в процессе созревания проходят ряд промежуточных стадий, в ходе которых клетка и содержащееся в ней ядро уменьшаются. В кровоток должны попадать только зрелые лейкоциты.Они живут недолго, так что происходит их постоянное обновление. Производство лейкоцитов в костном мозге возрастает в ответ на любое повреждение тканей, это часть нормального воспалительного ответа. Цель воспалительного ответа – отграничение повреждения, удаление вызвавшего его причинного фактора и восстановление ткани."; var chatId = message.Chat.Id; var media = new InputMediaPhoto("https://raw.githubusercontent.com/OnofreichukRoman/MedicalTelegramBot/master/Images/leukocytes.jpg"); await botClient.EditMessageMediaAsync(chatId, message.MessageId, media, replyMarkup : inlineKeyboar); await botClient.EditMessageCaptionAsync(chatId, message.MessageId, newBotMessage, replyMarkup : inlineKeyboar, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); }
internal override async Task Reply(Message message, TelegramBotClient botClient) { var inlineKeyboardButtons = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][] { // row 1 new [] { // column 1 Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData("<< Назад", "Показатели анализа крови") } }; var inlineKeyboar = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(inlineKeyboardButtons); string newBotMessage = "*Базофилы* являются разновидностью лейкоцитов. Они представляют собой самую малую группу и составляют не более 1 % от общей массы лейкоцитов. При обнаружении антигена(аллергена) в базофилах происходит дегрануляция. Другими словами, они выпускают свое содержимое наружу, благодаря чему блокируют аллергены, усиливают кровоток и увеличивают проницаемость сосудов. В результате создается очаг воспаления, к которому устремляются другие гранулоциты(моноциты и эозинофилы) на борьбу с чужеродным элементом. Это и есть главная функция базофилов — вовремя обнаружить и подавить аллергены, не дать им распространиться по всему организму и призвать остальных гранулоцитов к месту воспаления. Кроме своей главной функции базофилы, благодаря наличию гепарина, участвуют в процессах свертываемости крови, препятствуют образованию тромбов в мелких сосудах легких и печени. Также они осуществляют питание тканей, поддерживают нормальный кровоток в малых кровеносных сосудах и рост новых капилляров."; var chatId = message.Chat.Id; var media = new InputMediaPhoto("https://raw.githubusercontent.com/OnofreichukRoman/MedicalTelegramBot/master/Images/basophils.jpg"); await botClient.EditMessageMediaAsync(chatId, message.MessageId, media, replyMarkup : inlineKeyboar); await botClient.EditMessageCaptionAsync(chatId, message.MessageId, newBotMessage, replyMarkup : inlineKeyboar, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); }
internal override async Task Reply(Message message, TelegramBotClient botClient) { var inlineKeyboardButtons = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][] { // row 1 new [] { // column 1 Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData("<< Назад", "Показатели анализа крови") } }; var inlineKeyboar = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(inlineKeyboardButtons); string newBotMessage = "*Моноциты* – немногочисленные, но по размеру наиболее крупные иммунные клетки организма. \nЭти лейкоциты принимают участие в распознавании чужеродных веществ и обучению других лейкоцитов к их распознаванию.Могут мигрировать из крови в ткани организма.Вне кровеносного русла моноциты изменяют свою форму и преобразуются в макрофаги.Макрофаги могут активно мигрировать к очагу воспаления для того, чтобы принять участие в очищении воспаленной ткани от погибших клеток, лейкоцитов, бактерий. Благодаря такой работе макрофагов создаются все условия для восстановления поврежденных тканей."; var chatId = message.Chat.Id; var media = new InputMediaPhoto("https://raw.githubusercontent.com/OnofreichukRoman/MedicalTelegramBot/master/Images/monocytes.jpg"); await botClient.EditMessageMediaAsync(chatId, message.MessageId, media, replyMarkup : inlineKeyboar); await botClient.EditMessageCaptionAsync(chatId, message.MessageId, newBotMessage, replyMarkup : inlineKeyboar, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); }
internal override async Task Reply(Message message, TelegramBotClient botClient) { var inlineKeyboardButtons = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][] { // row 1 new [] { // column 1 Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData("<< Назад", "Показатели анализа крови") } }; var inlineKeyboar = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(inlineKeyboardButtons); string newBotMessage = "*Лимфоциты* – это один из видов лейкоцитов, особых клеток, которые циркулируют в крови человека и являются главными клетками иммунной системы. \nРазные виды лимфоцитов способны вырабатывать антитела, уничтожать чужеродные агенты(в первую очередь – вирусы, а также бактерии, грибки и простейшие) и пораженные клетки собственного организма, обуславливать развитие аллергических реакций. В детском возрасте происходит распределение и обучение в органах иммунной системы исходно недифференцированных лимфоцитов, это является основой формирования иммунитета. \nВсе лейкоциты, а значит лимфоциты в том числе, образуются в костном мозге, а затем «дозревают» в других органах в зависимости от назначения.Существуют несколько видов лимфоцитов: Т - клетки, В - клетки и NK-клетки."; var chatId = message.Chat.Id; var media = new InputMediaPhoto("https://raw.githubusercontent.com/OnofreichukRoman/MedicalTelegramBot/master/Images/lymphocytes.jpg"); await botClient.EditMessageMediaAsync(chatId, message.MessageId, media, replyMarkup : inlineKeyboar); await botClient.EditMessageCaptionAsync(chatId, message.MessageId, newBotMessage, replyMarkup : inlineKeyboar, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); }
internal override async Task Reply(Message message, TelegramBotClient botClient) { var inlineKeyboardButtons = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][] { // row 1 new [] { // column 1 Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData("<< Назад", "Показатели анализа крови") } }; var inlineKeyboar = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(inlineKeyboardButtons); string newBotMessage = "*Эозинофилы* — один из видов лейкоцитов, клеток иммунной системы, защищающих человеческий организм от паразитов и участвующих в развитии аллергических реакций. \nЭозинофилия крови — это состояние, характеризующееся абсолютным или относительным повышением числа эозинофилов. \nАнализ крови на эозинофилы свидетельствует о наличии различных заболеваний и помогает своевременно начать их лечение."; var chatId = message.Chat.Id; var media = new InputMediaPhoto("https://raw.githubusercontent.com/OnofreichukRoman/MedicalTelegramBot/master/Images/eosinophils.jpg"); await botClient.EditMessageMediaAsync(chatId, message.MessageId, media, replyMarkup : inlineKeyboar); await botClient.EditMessageCaptionAsync(chatId, message.MessageId, newBotMessage, replyMarkup : inlineKeyboar, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); }
internal override async Task Reply(Message message, TelegramBotClient botClient) { var inlineKeyboardButtons = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][] { // row 1 new [] { // column 1 Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData("<< Назад", "Показатели анализа крови") } }; var inlineKeyboar = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(inlineKeyboardButtons); string newBotMessage = "*Нейтрофилы* – самая многочисленная разновидность лейкоцитов. Зрелые сегментоядерные нейтрофилы у здорового взрослого человека составляют 47-72% всех лейкоцитов крови; в анализе крови определяются также незрелые палочкоядерные нейтрофилы, доля которых в норме составляет 1-6%. Повышенное содержание нейтрофилов в крови называется нейтрофилией; пониженное – нейтропенией. Нейтрофилы играют огромную роль в защите организма от инфекционных заболеваний, особенно бактериальных и грибковых. Нейтрофилы способны покидать кровяное русло и устремляться к очагу инфекции, принимая активное участие в развитии воспаления. Они также обладают способностью поглощать и разрушать чужеродные частицы – бактерии и грибы. Этот процесс называется фагоцитозом. Повышенная продукция нейтрофилов и их миграция к очагу инфекции часто являются первым ответом организма на инфекционное заболевание."; var chatId = message.Chat.Id; var media = new InputMediaPhoto("https://raw.githubusercontent.com/OnofreichukRoman/MedicalTelegramBot/master/Images/neutrophils.jpg"); await botClient.EditMessageMediaAsync(chatId, message.MessageId, media, replyMarkup : inlineKeyboar); await botClient.EditMessageCaptionAsync(chatId, message.MessageId, newBotMessage, replyMarkup : inlineKeyboar, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); }
internal override async Task Execute(Message message, TelegramBotClient botClient) { var keyboardButtons = new[] { new [] // row 1 { //column 1 new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("🧾 Показатели анализа крови"), }, new [] // row 2 { //column 1 new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("🔙 Назад к анализам") } }; var inlineKeyboardSearchButton = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][] { // row 1 new [] { // column 1 Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("🔍 Поиск") } }; var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(keyboardButtons) { ResizeKeyboard = true }; var inlineKeyboardSearch = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(inlineKeyboardSearchButton); var chatId = message.Chat.Id; string botMessage = "#Общийанализкрови #ОАК \n🔬🩸 *Общий анализ крови (ОАК)* – это наиболее доступный метод первичной оценки состояния организма, результаты которого, наряду с общим анализом мочи и биохимическим анализом крови, входят в алгоритмы диагностики большинства заболеваний. У здорового человека кровь по своему составу относительно постоянна, но реагирует практически на любые патологические изменения в организме. Поэтому, чтобы понять, что происходит с человеком, какие исследования назначить в дальнейшем или определиться с лечением, врач, в первую очередь, всегда назначает ОАК. \nЭто исследование также используется в виде профилактического обследования даже при отсутствии каких-либо симптомов и отражает изменения состояния здоровья. Кроме того, ОАК позволяет оценить успешность проведенного лечения."; string botSearchMessage = "Не нашли то что искали? Воспользуйтесь кнопкой поиска по другим анализам и показателям"; await botClient.SendPhotoAsync(chatId, "https://raw.githubusercontent.com/OnofreichukRoman/MedicalTelegrammBot/master/Images/bloodanalysis.jpg", botMessage, replyToMessageId : message.MessageId, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown, replyMarkup : keyboard); await botClient.SendTextMessageAsync(chatId, botSearchMessage, replyMarkup : inlineKeyboardSearch); }
public Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup GetInlineKeyboard(string[][] buttons, string[][] callback_data) { int rows = buttons.Length; Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][] keyboardButtons = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[rows][]; for (int row = 0; row < rows; row++) { keyboardButtons[row] = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[buttons[row].Length]; for (int column = 0; column < buttons[row].Length; column++) { keyboardButtons[row][column] = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton { Text = buttons[row][column], CallbackData = callback_data[row][column] }; } } var keyboard = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(keyboardButtons); return(keyboard); }
internal override async Task Execute(Message message, TelegramBotClient botClient) { var inlineKeyboarButtons = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[InlineKeyboardRowsCount][]; for (int i = 0, j = 0, k = 1; i < InlineKeyboardRowsCount; i++, j += InlineKeyboardColumnsCount, k += InlineKeyboardColumnsCount) { // row i inlineKeyboarButtons[i] = new[] { // column 1 Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData(IndicatorsList[j], $"{IndicatorsList[j]}{CallbackData}"), // column 2 Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData(IndicatorsList[k], $"{IndicatorsList[k]}{CallbackData}") }; } var inlineKeyboar = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(inlineKeyboarButtons); var chatId = message.Chat.Id; string botMessage = "Выберете интересующий Вас показатель:"; await botClient.SendPhotoAsync(chatId, "https://raw.githubusercontent.com/OnofreichukRoman/MedicalTelegramBot/master/Images/Bloodtestindicators.jpg", botMessage, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown, replyMarkup : inlineKeyboar); }
async void bw_DoWork(object sender, DoWorkEventArgs e) { var worker = sender as BackgroundWorker; string key = "622335668:AAEv62L9dRi4BH6JVyW8gfEg-tCmd-qTRXo"; try { var Bot = new Telegram.Bot.TelegramBotClient(key); await Bot.SetWebhookAsync(""); // Callback'и от кнопок Bot.OnCallbackQuery += async(object sc, Telegram.Bot.Args.CallbackQueryEventArgs ev) => { var message = ev.CallbackQuery.Message; if (ev.CallbackQuery.Data == "callback0") { await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id, "You hav choosen " + ev.CallbackQuery.Data, true); } else if (ev.CallbackQuery.Data.Contains("correctAnswer")) { await Bot.SendTextMessageAsync(message.Chat.Id, "Вірно!", replyToMessageId : message.MessageId); await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // видаляє очікування (годинник) GetQuestion(Bot, ev, message); string tCountry = ev.CallbackQuery.Data.Replace("correctAnswer", ""); BotAs.RightAnswer(tCountry); } else if (ev.CallbackQuery.Data == "wrongAnswer") { await Bot.SendTextMessageAsync(message.Chat.Id, "Емм..Ні. Йдем далі...", replyToMessageId : message.MessageId); await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // видаляє очікування (годинник) GetQuestion(Bot, ev, message); BotAs.WrongAnswer(); } else if (ev.CallbackQuery.Data.Contains("Continent:")) { string tContinent = ev.CallbackQuery.Data.Replace("Continent:", ""); await Bot.SendTextMessageAsync(message.Chat.Id, "Хмм, сміливо!", replyToMessageId : message.MessageId); BotAs.ChooseContinent(tContinent); GetQuestion(Bot, ev, message); } }; Bot.OnUpdate += async(object su, Telegram.Bot.Args.UpdateEventArgs evu) => { if (evu.Update.CallbackQuery != null || evu.Update.InlineQuery != null) { return; } var update = evu.Update; var message = update.Message; if (message == null) { return; } if (message.Type == Telegram.Bot.Types.Enums.MessageType.Text) { if (message.Text == "/hello") { await Bot.SendTextMessageAsync(message.Chat.Id, "Хелова", replyToMessageId : message.MessageId); } if (message.Text == "/getimage") { await Bot.SendPhotoAsync(message.Chat.Id, "https://static.365info.kz/uploads/2019/03/a346a3729504594579883eeb12a38d80.jpg", "Та й таке!"); } if (message.Text == "/stopgame") { await Bot.SendTextMessageAsync(message.Chat.Id, "Гру завершено! Правильних: " + BotAs.RightAnswers + " з " + (BotAs.WrongAnswers + BotAs.RightAnswers), replyToMessageId : message.MessageId); BotAs.OverGame(); } if (message.Text == "/capitals") { BotAs.StartGame(); List <string> continents = BotAs.GetContinents(); continents.Add("Все"); Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[] Keys = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[continents.Count]; int i = 0; foreach (string continent in continents) { Keys[i] = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton { Text = continent, CallbackData = "Continent:" + continent }; i++; } var keyboard = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup( new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][] { Keys } ); await Bot.SendTextMessageAsync(message.Chat.Id, "З чого розпочнемо гру?", replyMarkup : keyboard); } } }; Bot.StartReceiving(); } catch (Telegram.Bot.Exceptions.ApiRequestException ex) { Console.WriteLine(ex.Message); } }