public override async Task <UpdateHandlingResult> HandleCommand(Update update)
        {
            var teacher = teachers.GetTeachersNames()
                          .FirstOrDefault(x => x == update.CallbackQuery.Data);

            if (teacher != null)
            {
                teacherSelector.TeacherName = teacher;
                var teacherSchedule = await scheduleService.CompileScheduleWithSelector(teacherSelector);

                if (teacherSchedule.ScheduleRoot.Level == ScheduleElemLevel.Week)
                {
                    await Bot.Client.SendTextMessageAsync(
                        update.CallbackQuery.Message.Chat.Id,
                        teacher);

                    await Bot.Client.AnswerCallbackQueryAsync(update.CallbackQuery.Id, teacher);

                    foreach (var daySchedule in teacherSchedule.ScheduleRoot.Elems.Cast <Day>())
                    {
                        await SendDay(daySchedule);

                        await Task.Delay(200);
                    }
                }
                else if (teacherSchedule.ScheduleRoot.Level == ScheduleElemLevel.Day)
                {
                    await Bot.Client.SendTextMessageAsync(
                        update.CallbackQuery.Message.Chat.Id,
                        teacher);

                    await Bot.Client.AnswerCallbackQueryAsync(update.CallbackQuery.Id, teacher);
                    await SendDay((Day)teacherSchedule.ScheduleRoot);
                }
                else
                {
                    await Bot.Client.SendTextMessageAsync(
                        update.CallbackQuery.Message.Chat.Id,
                        "Пар нет", replyMarkup : keyboards.GetMainOptionsKeyboard());
                }
            }
            else
            {
                await Bot.Client.SendTextMessageAsync(
                    update.CallbackQuery.Message.Chat.Id,
                    "Нет такого преподавателя.", replyMarkup : keyboards.GetMainOptionsKeyboard());
            }

            return(UpdateHandlingResult.Handled);

            async Task SendDay(Day day)
            {
                var answer =
                    CustomSerializator.ProcessSchedule(day.Elems.OfType <Lesson>(),
                                                       day.DayOfWeek);
                await Bot.Client.SendTextMessageAsync(
                    update.CallbackQuery.Message.Chat.Id,
                    answer, ParseMode.Html, replyMarkup : keyboards.GetMainOptionsKeyboard());
            }
        }