private static async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs) { var messageBody = messageEventArgs.Message; string responseMessage = String.Empty; Console.WriteLine($"Received inline query from: {messageEventArgs.Message.Location}, {messageEventArgs.Message.Contact}"); ReplyKeyboardMarkup ReplyKeyboard = new ReplyKeyboardMarkup { }; InlineKeyboardMarkup inlineKeyboard = new InlineKeyboardMarkup(new[] { InlineKeyboardButton.WithCallbackData(""), }); var user = new DTOs.User(); var DTP = new DTP(); try { user = _insuranceService.GetUserInfo(messageEventArgs.Message.From.Id); DTP = _insuranceService.GetDtpInfo(messageEventArgs.Message.From.Id); }catch { } if (messageBody != null) { switch (messageBody as object) { case Message l when l.Location != null: user.DTPs.Location = l.Location; user.DTPs.LocationGetTime = DateTime.Now; _insuranceService.UserUpdate(user); inlineKeyboard = _navigationService.CreateInlineKeyboard("⏩ Продолжить...|"); await _telegramBot.SendTextMessageAsync(messageEventArgs.Message.Chat.Id, "Местоположение успешно отправлено", replyMarkup : inlineKeyboard); break; case Message c when c.Contact != null: user.Contact = c.Contact; _insuranceService.UserUpdate(user); await _telegramBot.SendTextMessageAsync(messageEventArgs.Message.Chat.Id, "✔️", replyMarkup : new ReplyKeyboardRemove()); inlineKeyboard = _navigationService.CreateInlineKeyboard("⏩ Продолжить...|"); await _telegramBot.SendTextMessageAsync(messageEventArgs.Message.Chat.Id, "Номер телефона успешно добавлен", replyMarkup : inlineKeyboard); break; case Message p when p.Photo != null: //var teleFile = _telegramBot.GetFileAsync(p.Photo[p.Photo.Count() - 1].FileId); //var downloadUrl = $@"https://api.telegram.org/file/bot{EnvironmentVariables.BotToken}/" + teleFile.Result.FilePath; //using (WebClient client = new WebClient()) //{ // client.DownloadFile(new Uri(downloadUrl), @"Files\image.png"); //} ////using (var fileStream = new FileStream(@"Files\image.png", FileMode.Open, FileAccess.Read, FileShare.Read)) ////{ //// await _telegramBot.SendPhotoAsync( //// p.Chat.Id, //// fileStream, //// "Nice Picture"); ////} //var img = Image.FromFile(@"Files\image.png"); //if (user.DTPs.Photos == null) user.DTPs.Photos = new System.Collections.Generic.List<Image>(); //user.DTPs.Photos.Add(img); //_insuranceService.UserUpdate(user); //foreach (var photo in user.DTPs.Photos) //{ // using (var fileStream = new FileStream(@"Files\image.png", FileMode.Open, FileAccess.Read, FileShare.Read)) // { // //photo.Save(fileStream, ImageFormat.Png); // await _telegramBot.SendPhotoAsync( // p.Chat.Id, // fileStream, // "Nice Picture"); // } //} inlineKeyboard = _navigationService.CreateInlineKeyboard("⏩ Продолжить...|"); await _telegramBot.SendTextMessageAsync(messageEventArgs.Message.Chat.Id, "Фото успешно добавлено", replyMarkup : inlineKeyboard); break; case Message s when s.Text == "/start": responseMessage = _insuranceService.GenerateHelloMessage( messageEventArgs.Message.From.Username, messageEventArgs.Message.From.Id); await _telegramBot.SendTextMessageAsync( chatId : messageEventArgs.Message.Chat, text : responseMessage); inlineKeyboard = _navigationService.CreateInlineKeyboard("💲 Купить\\🆘 SOS ДТП|🌍 Подразделения|📝 Мои полисы|"); await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat.Id, $"<b>'🕮 Главное меню'</b> \n\n" + $"- для того, чтобы приобрести полис, нажмите на кнопку - <b>'💲 Купить'</b>\n\n" + "- для того, чтобы заявить о ДТП и получить необходимую информацию, нажмите на кнопку - <b>'🆘 SOS ДТП'</b>\n\n" + "- для того, чтобы получить необходимые контакты, нажмите на кнопку - <b>'🌍 Подразделения'</b>\n\n" + "- для того, чтобы посмотреть свои полисы, нажмите на кнопку - <b>'📝 Мои полисы'</b>\n\n", replyMarkup : inlineKeyboard, parseMode : ParseMode.Html); EnvironmentVariables.ShowLastPrintedMessage = false; break; #region insApplication case string s when s == "Оформить договор страхования": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); responseMessage = "Выберете интересующий вас продукт"; ReplyKeyboard = new[] { new[] { "Обязательные виды" }, new[] { "Личное страхование" }, new[] { "Имущество" }, new[] { "Каско" }, new[] { "Ответственность" }, new[] { "Вернуться в меню..." }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : ReplyKeyboard); EnvironmentVariables.LastPrintedMessage = responseMessage; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += s; break; case string s when s == "Обязательные виды": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "Оформить договор страхования") { responseMessage = "Выберете интересующий вас продукт"; ReplyKeyboard = new[] { new[] { "ОГПО ВТС" }, new[] { "ОГПО ПП" }, new[] { "ОГПО А" }, new[] { "ОГПО ЧН" }, new[] { "ОГПО Эко" }, new[] { "ОГПО ВОО" }, new[] { "Вернуться в меню..." }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, "\nДля начала я задам несколько вопросов, чтобы посчитать стоимость полиса." + responseMessage, replyMarkup : ReplyKeyboard); EnvironmentVariables.LastPrintedMessage = responseMessage; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; break; } goto default; case string s when s == "ОГПО ВТС": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "Обязательные виды") { responseMessage = "Выберите тип транспортного средства"; ReplyKeyboard = new[] { new[] { "Легковые машины" }, new[] { "Автобусы до 16 пассажирских мест (включительно)" }, new[] { "Автобусы свыше 16 пассажирских мест" }, new[] { "Грузовые" }, new[] { "Троллейбусы, трамваи" }, new[] { "Мототранспорт" }, new[] { "Прицепы, полуприцепы" }, new[] { "Вернуться в меню..." }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : ReplyKeyboard); EnvironmentVariables.LastPrintedMessage = responseMessage; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; break; } goto default; case string s when s == "Легковые машины" || s == "Автобусы до 16 пассажирских мест (включительно)" || s == "Автобусы свыше 16 пассажирских мест" || s == "Грузовые" || s == "Троллейбусы, трамваи" || s == "Мототранспорт" || s == "Прицепы, полуприцепы": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "ОГПО ВТС") { responseMessage = "Выберите регион регистрации автомобиля"; ReplyKeyboard = new[] { new[] { "Алматинская область" }, new[] { "Южно-Казахстанская область" }, new[] { "Восточно-Казахстанская область" }, new[] { "Костанайская область" }, new[] { "Карагандинская область" }, new[] { "Северо-Казахстанская область" }, new[] { "Акмолинская область" }, new[] { "Павлодарская область" }, new[] { "Жамбылская область" }, new[] { "Актюбинская область" }, new[] { "Западно-Казахстанская область" }, new[] { "Кызылординская область" }, new[] { "Атырауская область" }, new[] { "Мангистауская область" }, new[] { "Алматы" }, new[] { "Астана" }, new[] { "ТС снятые с учета для последующей регистрации" }, new[] { "Временный въезд" }, new[] { "Шымкент" }, new[] { "Туркестанская область" }, new[] { "Вернуться в меню..." }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : ReplyKeyboard); EnvironmentVariables.LastPrintedMessage = responseMessage; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; break; } goto default; case string s when s == "Алматинская область" || s == "Южно-Казахстанская область" || s == "Восточно-Казахстанская область" || s == "Костанайская область" || s == "Карагандинская область" || s == "Северо-Казахстанская область" || s == "Акмолинская область" || s == "Павлодарская область" || s == "Жамбылская область" || s == "Актюбинская область" || s == "Западно-Казахстанская область" || s == "Кызылординская область" || s == "Атырауская область" || s == "Мангистауская область" || s == "Алматы" || s == "Астана" || s == "ТС снятые с учета для последующей регистрации" || s == "Временный въезд" || s == "Шымкент" || s == "Туркестанская область": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "Легковые машины" || EnvironmentVariables.LastInputMessage == "Автобусы до 16 пассажирских мест (включительно)" || EnvironmentVariables.LastInputMessage == "Автобусы свыше 16 пассажирских мест" || EnvironmentVariables.LastInputMessage == "Грузовые" || EnvironmentVariables.LastInputMessage == "Троллейбусы, трамваи" || EnvironmentVariables.LastInputMessage == "Мототранспорт" || EnvironmentVariables.LastInputMessage == "Прицепы, полуприцепы") { responseMessage = "Гор.обл. или респ.значения"; ReplyKeyboard = new[] { new[] { "Да" }, new[] { "Нет" }, new[] { "Вернуться в меню..." }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : ReplyKeyboard); EnvironmentVariables.LastPrintedMessage = responseMessage; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; break; } goto default; case string s when s == "Да" || s == "Нет": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "Алматинская область" || EnvironmentVariables.LastInputMessage == "Южно-Казахстанская область" || EnvironmentVariables.LastInputMessage == "Восточно-Казахстанская область" || EnvironmentVariables.LastInputMessage == "Костанайская область" || EnvironmentVariables.LastInputMessage == "Карагандинская область" || EnvironmentVariables.LastInputMessage == "Северо-Казахстанская область" || EnvironmentVariables.LastInputMessage == "Акмолинская область" || EnvironmentVariables.LastInputMessage == "Павлодарская область" || EnvironmentVariables.LastInputMessage == "Жамбылская область" || EnvironmentVariables.LastInputMessage == "Актюбинская область" || EnvironmentVariables.LastInputMessage == "Западно-Казахстанская область" || EnvironmentVariables.LastInputMessage == "Кызылординская область" || EnvironmentVariables.LastInputMessage == "Атырауская область" || EnvironmentVariables.LastInputMessage == "Мангистауская область" || EnvironmentVariables.LastInputMessage == "Алматы" || EnvironmentVariables.LastInputMessage == "Астана" || EnvironmentVariables.LastInputMessage == "ТС снятые с учета для последующей регистрации" || EnvironmentVariables.LastInputMessage == "Временный въезд" || EnvironmentVariables.LastInputMessage == "Шымкент" || EnvironmentVariables.LastInputMessage == "Туркестанская область") { responseMessage = "Введите год выпуска тс"; ReplyKeyboard = new[] { new[] { "Вернуться в меню..." }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : ReplyKeyboard); await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : new ReplyKeyboardRemove()); EnvironmentVariables.LastPrintedMessage = responseMessage; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; break; } goto default; case string s when int.TryParse(s, out int n) && s.Length == 4: await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "Да" || EnvironmentVariables.LastInputMessage == "Нет") { EnvironmentVariables.LastPrintedMessage = "Стоимость вашего электронного полиса "; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; var splittedPath = EnvironmentVariables.MessagePath.Split('/'); EnvironmentVariables.MessagePath = string.Empty; var ogpoVts = _insuranceService.CreateOgpoVts(splittedPath[3], splittedPath[4], splittedPath[5], Int32.Parse(splittedPath[6])); responseMessage = $"Стоимость вашего полиса {Math.Round(ogpoVts.TotalPrice,2)} тнг. " + "Спасибо вам, что вы настолько круты и сами оформляете через бота 🤖"; ReplyKeyboard = new[] { new[] { $"Да, оформляем за {Math.Round(ogpoVts.TotalPrice, 2)} тнг." }, new[] { "Вернуться в меню" }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : ReplyKeyboard); break; } goto default; #endregion #region InsurerRegistration case string s when s == "Да, оформляем за ": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "Стоимость вашего электронного полиса ") { EnvironmentVariables.LastPrintedMessage = "Да, оформляем за "; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += s; responseMessage = "Напишите вашу фамилию"; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, "Начинаем. Для оформления полиса заполните данные об авто и водителе," + " которые обязательно указывать по Закону Джунглей. Время оформления ~ 7 минут\n\n" + responseMessage, replyMarkup : new ReplyKeyboardRemove()); break; } goto default; case string s when Regex.IsMatch(s, @"^-?\d+$"): if (EnvironmentVariables.LastInputMessage == "Стоимость вашего электронного полиса ") { EnvironmentVariables.LastPrintedMessage = "Да, оформляем за "; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; responseMessage = "Напишите вашу фамилию"; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, "Начинаем. Для оформление полиса заполните данные об авто и водителе," + " которые обязательно указывать по Закону Джунглей. Время оформления ~ 7 минут\n\n" + responseMessage, replyMarkup : new ReplyKeyboardRemove()); break; } goto default; #endregion default: inlineKeyboard = _navigationService.CreateInlineKeyboard("🔙 Назад...\\📖 Вернуться в меню|"); await _telegramBot.SendTextMessageAsync( chatId : messageEventArgs.Message.Chat, text : "К сожалению, мы не нашли нужное вам значение в базе. " + "Попробуйте написать еще раз иначе.", replyMarkup : inlineKeyboard); break; } } }