private void BwReminder_DoWork(object sender, DoWorkEventArgs e) { using (Context db = new Context()) { List <Reminder> list = db.Reminders.ToList(); if (list.Count != 0) { foreach (Reminder item in list) { TrackRequest track = NovaPoshtaApi.SendRequest(item.TTN, null); if (track.data[0].StatusCode != item.StatusId.ToString()) { User user = db.Users.First(x => x.Id == item.UserId); item.StatusId = Convert.ToInt32(track.data[0].StatusCode); BOT.SendTextMessageAsync(user.Telegram, $"Добрый день!{Environment.NewLine}По ТТН{item.TTN} произошли изменения статуса - теперь документ в статусе {track.data[0].Status}"); db.SaveChanges(); } } } else { return; } } }
private async void BotOnMessage(object sender, MessageEventArgs e) { using (Context db = new Context()) { if (db.Users.Any(x => x.Telegram == e.Message.From.Id)) { User user = db.Users.First(x => x.Telegram == e.Message.From.Id); switch (user.Status) { case 1: { if (e.Message.Type == MessageType.Contact) { user.Name = e.Message.Contact.LastName + " " + e.Message.Contact.FirstName; user.Status = 2; await db.SaveChangesAsync(); await BOT.SendTextMessageAsync(e.Message.From.Id, $"{user.Name}, теперь вы можете отслеживать свои посылки ", replyMarkup : Keyboards.MainKeyboard()); } else { await BOT.SendTextMessageAsync(e.Message.From.Id, "Сейчас я ожидаю контактов"); } break; } case 2: { if (e.Message.Text == "Треккинг") { user.Status = 3; await db.SaveChangesAsync(); await BOT.SendTextMessageAsync(e.Message.From.Id, $"Отправьте номер ТТН"); } else if (e.Message.Text == "Мои посылки") { List <Reminder> list = db.Reminders.Where(x => x.UserId == user.Id).ToList(); if (list.Count != 0) { string answer = $"Вот список отслеживаемых посылок:{Environment.NewLine}"; foreach (Reminder item in list) { answer += $"<i>{item.TTN}</i>{Environment.NewLine}"; } await BOT.SendTextMessageAsync(e.Message.From.Id, answer, ParseMode.Html); } else { await BOT.SendTextMessageAsync(e.Message.From.Id, "У вас нет отслеживаемых посылок"); } } else { await BOT.SendTextMessageAsync(e.Message.From.Id, "Сейчас ожидаю нажатия кнопок главного меню"); } break; } case 3: { TrackRequest request = NovaPoshtaApi.SendRequest(e.Message.Text, null); if (request.data[0].Status != "Номер не знайдено") { await BOT.SendTextMessageAsync(e.Message.From.Id, $"Статус документа: {request.data[0].Status}", replyMarkup : Keyboards.GetTracking(e.Message.Text, user.Id, request.data[0].StatusCode)); } else { await BOT.SendTextMessageAsync(e.Message.From.Id, request.data[0].Status); } user.Status = 2; await db.SaveChangesAsync(); break; } default: break; } } else { db.Users.Add(new User(e.Message.From.Id)); await db.SaveChangesAsync(); await BOT.SendTextMessageAsync(e.Message.From.Id, $"Добрый день{Environment.NewLine}Данный бот позволяет отслеживать ТТН Новой почты{Environment.NewLine}Для начала работы отправьте свои контакты", replyMarkup : Keyboards.GetFio()); } } }