示例#1
0
        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());
                }
            }
        }