def start_search_aud(bot, message, storage, tz):
    # ID пользователя
    chat_id = message.chat.id
    # Создаём ключ по значению ID пользователя
    aud_list[chat_id] = []
    # Зарашиваем данные о пользователе из базы
    user = storage.get_user(chat_id=chat_id)
    # Условие для проверки наличия пользователя в базе

    if user:

        # Запуск стейта со значением SEARCH
        msg = bot.send_message(
            chat_id=chat_id,
            text='Введите интересующую аудитрию\n'
            'Например: Ж-317, или Ж317',
            reply_markup=keyboards.make_keyboard_main_menu())

        bot.register_next_step_handler(msg,
                                       search_aud,
                                       bot=bot,
                                       tz=tz,
                                       storage=storage)

    else:

        bot.send_message(chat_id=chat_id, text='Привет\n')
        bot.send_message(chat_id=chat_id,
                         text='Для начала пройдите небольшую регистрацию😉\n')
        bot.send_message(
            chat_id=chat_id,
            text='Выберите институт',
            reply_markup=keyboards.make_inline_keyboard_choose_institute(
                storage.get_institutes()))
Пример #2
0
async def start_search(bot: Bot, ans: Message, state):
    chat_id = ans.from_id
    aud_list[chat_id] = []
    await ans.answer(
        'Введите интересующую аудитрию\n'
        'Например: Ж-317, или Ж317',
        keyboard=keyboards.make_keyboard_main_menu())

    await bot.state_dispenser.set(ans.peer_id, state.AUD_SEARCH)
Пример #3
0
async def start_search(bot: Bot, ans: Message, state, storage):
    # ID пользователя
    chat_id = ans.from_id
    # Создаём ключ по значению ID пользователя
    Condition_request[chat_id] = []
    # Зарашиваем данные о пользователе из базы
    user = storage.get_vk_user(chat_id=chat_id)
    # Условие для проверки наличия пользователя в базе
    if user:
        # Запуск стейта со значением SEARCH
        await bot.state_dispenser.set(ans.peer_id, state.SEARCH)
        await ans.answer(
            'Введите название группы или фамилию преподавателя\n'
            'Например: ИБб-18-1 или Маринов',
            keyboard=keyboards.make_keyboard_main_menu())
    else:
        await ans.answer('Привет\n')
        await ans.answer('Для начала пройдите небольшую регистрацию😉\n')
        await ans.answer('Выберите институт.',
                         keyboard=keyboards.make_keyboard_institutes(
                             storage.get_institutes()))
Пример #4
0
def start_search(bot, message, storage, tz):
    data = message.chat.id
    message_id = message.message_id
    # ID пользователя
    chat_id = message.chat.id
    # Создаём ключ по значению ID пользователя
    Condition_request[chat_id] = []
    # Зарашиваем данные о пользователе из базы
    user = storage.get_user(chat_id=chat_id)
    # Условие для проверки наличия пользователя в базе

    if user:

        # Запуск стейта со значением SEARCH
        msg = bot.send_message(
            chat_id=chat_id,
            text='Введите название группы или фамилию преподавателя\n'
            'Например: ИБб-18-1 или Маринов',
            reply_markup=keyboards.make_keyboard_main_menu())

        bot.register_next_step_handler(msg,
                                       search,
                                       bot=bot,
                                       tz=tz,
                                       storage=storage)

    else:

        bot.send_message(chat_id=chat_id, text='Привет\n')
        bot.send_message(chat_id=chat_id,
                         text='Для начала пройдите небольшую регистрацию😉\n')
        bot.send_message(
            chat_id=chat_id,
            text='Выберите институт',
            reply_markup=keyboards.make_inline_keyboard_choose_institute(
                storage.get_institutes()))
def search_aud(message, bot, storage, tz, last_msg=None):
    """Регистрация преподавателя"""
    global aud_list
    chat_id = message.chat.id
    message_id = message.message_id
    data = message
    message = message.text
    all_found_aud = []
    all_results = []
    prep_list = []
    page = 0

    if data.content_type == 'sticker':
        message = ''

    if last_msg:
        bot.delete_message(data.chat.id, data.message_id - 1)

    if ('На текущую неделю' == message or 'На следующую неделю' == message):
        return

    if not storage.get_schedule_aud(message) and len(message.replace(' ',
                                                                     '')) < 15:
        # Отправляем запросы в базу посимвольно
        for item in message:
            # Получаем все результаты запроса на каждый символ
            request_item_all = storage.get_schedule_aud(item)
            # Проходим по каждому результату запроса одного символа
            for i in range(len(request_item_all)):
                # Обращаемся к результатам у которых есть ключ "aud"
                request_item = request_item_all[i]['aud']
                # Записывем все совпадения (Значения ключа "aud")
                prep_list.append(request_item)
                request_item = []

            request_item_all = []

        # Выделение наиболее повторяющихся элементов(а). Фактически результат запроса пользователя.
        qty_most_common = 0
        prep_list_set = set(prep_list)
        for item in prep_list_set:
            qty = prep_list.count(item)
            if qty > qty_most_common:
                qty_most_common = qty
                # Переменная с результатом сортировки
            if message.replace(' ', '').lower() in item.replace('-',
                                                                '').lower():
                all_results.append(item.lower())

    if storage.get_schedule_aud(message) and not all_results:
        # Результат запроса по аудам
        request_aud = storage.get_schedule_aud(message)
        # Циклы нужны для общего поиска. Здесь мы удаляем старые ключи в обоих реквестах и создаём один общий ключ, как для групп, так и для преподов
        for i in request_aud:
            i['search_aud'] = i.pop('aud')
        # Записываем слово, которое ищем
        request_word = message

        last_request = request_aud[-1]
        # Эти циклы записывают группы и преподов в нижнем регистре для удобной работы с ними
        for i in request_aud:
            all_found_aud.append(i['search_aud'].lower())
        # Формируем полный багаж для пользователя
        list_search = [page, request_word, all_found_aud]
        # Записываем все данные под ключом пользователя
        aud_list[chat_id] = list_search
        # Выводим результат поиска с клавиатурой (кливиатур формируется по поисковому запросу)
        if len(request_aud) > 10:
            requests = request_aud[:10 * (page + 1)]
            more_than_10 = True
            msg = bot.send_message(
                chat_id=chat_id,
                text='Результат поиска',
                reply_markup=keyboards.make_keyboard_search_group_aud(
                    last_request=last_request,
                    page=page,
                    more_than_10=more_than_10,
                    requests=requests))
            bot.register_next_step_handler(msg,
                                           search_aud,
                                           bot=bot,
                                           storage=storage,
                                           tz=tz,
                                           last_msg=msg)

        else:
            msg = bot.send_message(
                chat_id=chat_id,
                text='Результат поиска',
                reply_markup=keyboards.make_keyboard_search_group_aud(
                    last_request=last_request,
                    page=page,
                    more_than_10=False,
                    requests=request_aud))
            bot.register_next_step_handler(msg,
                                           search_aud,
                                           bot=bot,
                                           storage=storage,
                                           tz=tz,
                                           last_msg=msg)

    if all_results and aud_list[chat_id] == []:
        all_found_aud = all_results
        request_word = data
        list_search = [page, request_word, all_found_aud]
        aud_list[chat_id] = list_search
        kb_all_results = keyboa_maker(items=all_found_aud,
                                      copy_text_to_callback=True,
                                      items_in_row=3)

        msg = bot.send_message(chat_id=chat_id,
                               reply_markup=kb_all_results,
                               text="Результат поиска")

        bot.register_next_step_handler(msg,
                                       search_aud,
                                       bot=bot,
                                       storage=storage,
                                       tz=tz,
                                       last_msg=msg)

    else:
        if len(aud_list[chat_id]) == 3:
            pass
        elif all_results:
            kb_all_results = keyboa_maker(items=all_found_aud,
                                          copy_text_to_callback=True,
                                          items_in_row=3)
            bot.send_message(chat_id=chat_id,
                             reply_markup=kb_all_results,
                             text="Результат поиска")
        else:
            msg = bot.send_message(
                chat_id=chat_id,
                text='Проверьте правильность ввода 😕',
                reply_markup=keyboards.make_keyboard_main_menu())
            bot.register_next_step_handler(msg,
                                           search_aud,
                                           bot=bot,
                                           storage=storage,
                                           tz=tz,
                                           last_msg=msg)
            return

    return
def handler_buttons_aud(bot, message, storage, tz):
    """Обрабатываем колбэк преподавателя"""
    global aud_list

    chat_id = message.message.chat.id
    message_id = message.message.message_id
    data = json.loads(message.data)
    all_found_aud = []

    if data['menu_aud'] == 'main':
        bot.send_message(chat_id=chat_id,
                         text='Вы покинули поиск',
                         reply_markup=keyboards.make_keyboard_start_menu())
        bot.delete_message(chat_id, message_id)
        bot.clear_step_handler_by_chat_id(chat_id=chat_id)

        return

    if not aud_list[chat_id] and len(aud_list[chat_id]) != 0:
        aud_list[chat_id][1] = ''

    page = aud_list[chat_id][0]

    request_aud = storage.get_schedule_aud(aud_list[chat_id][1])
    # Циклы нужны для общего поиска. Здесь мы удаляем старые ключи в обоих реквестах и создаём один общий ключ, как для групп, так и для преподов
    for i in request_aud:
        i['search_aud'] = i.pop('aud')
    # Записываем слово, которое ищем
    request_word = aud_list[chat_id][1]
    last_request = request_aud[-1]
    # Эти циклы записывают группы и преподов в нижнем регистре для удобной работы с ними
    for i in request_aud:
        all_found_aud.append(i['search_aud'].lower())
    # Формируем полный багаж для пользователя
    list_search = [page, request_word, all_found_aud]
    # Записываем все данные под ключом пользователя
    aud_list[chat_id] = list_search

    if data['menu_aud'].lower() in aud_list[chat_id][2]:
        bot.delete_message(message_id=message_id, chat_id=chat_id)
        aud_list[chat_id][1] = data['menu_aud'].lower()
        des = message.data.split(":")[1].replace("}", "").replace('"', '')
        msg = bot.send_message(chat_id=chat_id,
                               text=f'Выберите неделю для аудитории{des}',
                               reply_markup=keyboards.
                               make_keyboard_choose_schedule_for_aud_search())
        bot.register_next_step_handler(msg,
                                       choose_week,
                                       bot=bot,
                                       storage=storage,
                                       tz=tz,
                                       last_msg=msg)

    elif data['menu_aud'] == 'back':
        more_than_10 = False
        if len(request_aud) > 10:
            requests = request_aud[10 * (page - 1):10 * page]
            more_than_10 = True

        if aud_list[chat_id][0] - 1 == 0:
            bot.delete_message(message_id=message_id, chat_id=chat_id)
            bot.send_message(
                chat_id=chat_id,
                text=f'Результат поиска',
                reply_markup=keyboards.make_keyboard_search_group_aud(
                    last_request=last_request,
                    page=page - 1,
                    requests=requests,
                    more_than_10=more_than_10))

        else:
            bot.edit_message_reply_markup(
                message_id=message_id,
                chat_id=chat_id,
                reply_markup=keyboards.make_keyboard_search_group_aud(
                    last_request=last_request,
                    page=page - 1,
                    requests=requests,
                    more_than_10=more_than_10))
        aud_list[chat_id][0] -= 1

    elif data['menu_aud'] == 'next':
        bot.delete_message(message_id=message_id, chat_id=chat_id)
        more_than_10 = False
        if len(request_aud) > 10:
            requests = request_aud[10 * (page + 1):10 * (page + 2)]
            more_than_10 = True
        bot.send_message(chat_id=chat_id,
                         text=f'Результат поиска',
                         reply_markup=keyboards.make_keyboard_search_group_aud(
                             last_request=last_request,
                             page=page + 1,
                             requests=requests,
                             more_than_10=more_than_10))
        aud_list[chat_id][0] += 1

    else:
        msg = bot.send_message(
            chat_id=chat_id,
            text='Проверьте правильность ввода 😞',
            reply_markup=keyboards.make_keyboard_main_menu())
        bot.register_next_step_handler(msg,
                                       search_aud,
                                       bot=bot,
                                       storage=storage,
                                       tz=tz,
                                       last_msg=msg)
Пример #7
0
def search(message, bot, storage, tz, last_msg=None):
    """Регистрация преподавателя"""
    global Condition_request
    data = message
    chat_id = message.chat.id
    message = message.text
    all_found_groups = []
    all_found_prep = []
    page = 0

    if data.content_type == 'sticker':
        message = ''

    if last_msg:
        try:
            bot.delete_message(last_msg.chat.id, last_msg.message_id)
        except Exception as e:
            pass

    if storage.get_search_list(message) or storage.get_search_list_prep(
            message):
        # Результат запроса по группам
        request_group = storage.get_search_list(message)
        # Результат запроса по преподам
        request_prep = storage.get_search_list_prep(message)
        # Циклы нужны для общего поиска. Здесь мы удаляем старые ключи в обоих реквестах и создаём один общий ключ,
        # как для групп, так и для преподов
        for i in request_group:
            i['found_prep'] = i.pop('name')
        for i in request_prep:
            i['found_prep'] = i.pop('prep_short_name')
        # Записываем слово, которое ищем
        request_word = message
        # Склеиваем результаты двух запросов для общего поиска
        request = request_group + request_prep
        last_request = request[-1]
        # Отправляем в функцию данные для создания клавиатуры
        # Эти циклы записывают группы и преподов в нижнем регистре для удобной работы с ними
        for i in request_group:
            all_found_groups.append(i['found_prep'].lower())
        for i in request_prep:
            all_found_prep.append(i['found_prep'].lower())
        # Создаём общий список
        all_found_results = all_found_groups + all_found_prep
        # Формируем полный багаж для пользователя
        list_search = [page, request_word, all_found_results]
        # Записываем все данные под ключом пользователя
        Condition_request[chat_id] = list_search
        # Выводим результат поиска с клавиатурой (кливиатур формируется по поисковому запросу)
        if len(request) > 10:
            requests = request[:10 * (page + 1)]
            more_than_10 = True
            msg = bot.send_message(
                chat_id=chat_id,
                text='Результат поиска',
                reply_markup=keyboards.make_keyboard_search_group(
                    last_request=last_request,
                    page=page,
                    more_than_10=more_than_10,
                    requests=requests))
            bot.register_next_step_handler(msg,
                                           search,
                                           bot=bot,
                                           storage=storage,
                                           tz=tz,
                                           last_msg=msg)

        else:
            msg = bot.send_message(
                chat_id=chat_id,
                text='Результат поиска',
                reply_markup=keyboards.make_keyboard_search_group(
                    last_request=last_request,
                    page=page,
                    more_than_10=False,
                    requests=request))
            bot.register_next_step_handler(msg,
                                           search,
                                           bot=bot,
                                           storage=storage,
                                           tz=tz,
                                           last_msg=msg)

    elif ('На текущую неделю' == message or 'На следующую неделю' == message):
        group = Condition_request[chat_id][1]
        request_word = Condition_request[chat_id][1]
        request_group = storage.get_search_list(request_word)
        request_prep = storage.get_search_list_prep(request_word)
        # Если есть запрос для группы, то формируем расписание для группы, а если нет, то для препода
        if request_group:
            schedule = storage.get_schedule(group=group)
        elif request_prep:
            schedule = request_prep[0]
        if not schedule:
            bot.send_message(
                chat_id=chat_id,
                text='Расписание временно недоступно\nПопробуйте позже⏱')
            return

        schedule = schedule['schedule']
        week = find_week()

        # меняем неделю
        if message == 'На следующую неделю':
            week = 'odd' if week == 'even' else 'even'

        week_name = 'четная' if week == 'odd' else 'нечетная'
        if request_group:
            schedule_str = full_schedule_in_str(schedule, week=week)
        elif request_prep:
            schedule_str = full_schedule_in_str_prep(schedule, week=week)

        # Проверяем, что расписание сформировалось
        if isinstance(schedule_str, APIError):
            schedule_processing.sending_schedule_is_not_available(
                bot=bot, chat_id=chat_id)
            return

        bot.send_message(chat_id=chat_id,
                         text=f'Расписание {group}\n'
                         f'Неделя: {week_name}',
                         reply_markup=keyboards.make_keyboard_start_menu())
        # Отправка расписания
        schedule_processing.sending_schedule(bot=bot,
                                             chat_id=chat_id,
                                             schedule_str=schedule_str)

        bot.clear_step_handler_by_chat_id(chat_id=chat_id)

    elif 'Экзамены' == message:
        group = Condition_request[chat_id][1]
        request_word = Condition_request[chat_id][1]
        request_group = storage.get_search_list(request_word)
        request_prep = storage.get_search_list_prep(request_word)

        # Объявляем переменную с расписанием экзаменов группы или препода
        if request_group:
            schedule_str = groups_exam(group)
        elif request_prep:
            schedule_str = groups_exam(group)

        # При отсутствии расписания выводится соответствующее предупреждение
        if not schedule_str:
            bot.send_message(
                chat_id=chat_id,
                text='Расписание экзаменов отсутствует😇\nПопробуйте позже⏱')
            return

        # Задаем расписанию экзаменов вид для подачи пользователю
        schedule_exams = schedule_view_exams(schedule=schedule_str)

        # Проверяем, что расписание сформировалось
        if isinstance(schedule_exams, APIError):
            schedule_processing.sending_schedule_is_not_available(
                bot=bot, chat_id=chat_id)
            return

        # Отправка расписания
        schedule_processing.sending_schedule(bot=bot,
                                             chat_id=chat_id,
                                             schedule_str=schedule_exams)

        bot.clear_step_handler_by_chat_id(chat_id=chat_id)

    elif 'Основное меню' == message:
        bot.send_message(chat_id=chat_id,
                         text='Основное меню',
                         reply_markup=keyboards.make_keyboard_start_menu())

        bot.clear_step_handler_by_chat_id(chat_id=chat_id)

        return

    else:
        msg = bot.send_message(
            chat_id=chat_id,
            text='Проверьте правильность ввода 😞',
            reply_markup=keyboards.make_keyboard_main_menu())
        bot.register_next_step_handler(msg,
                                       search,
                                       bot=bot,
                                       storage=storage,
                                       tz=tz,
                                       last_msg=msg)

    return
Пример #8
0
def handler_buttons(bot, message, storage, tz):
    """Обрабатываем колбэк преподавателя"""
    global Condition_request
    chat_id = message.message.chat.id
    message_id = message.message.message_id
    data = json.loads(message.data)

    if data['prep_list'] == 'main':
        bot.send_message(chat_id=chat_id,
                         text='Основное меню',
                         reply_markup=keyboards.make_keyboard_start_menu())
        try:
            bot.delete_message(message_id=message_id, chat_id=chat_id)
        except Exception as e:
            pass

        bot.clear_step_handler_by_chat_id(chat_id=chat_id)

        return

    # TODO: Если разберетесь для чего эта строка - удалите её
    try:
        if not Condition_request.get(chat_id) and len(
                Condition_request.get(chat_id)) != 0:
            Condition_request[chat_id][1] = ''
    except Exception as e:
        pass

    page = Condition_request[chat_id][0]
    request_word = Condition_request[chat_id][1]

    # Выходим из цикла поиска преподавателя по ФИО
    bot.clear_step_handler_by_chat_id(chat_id=chat_id)
    # Результат запроса по группам
    request_group = storage.get_search_list(request_word)
    # Результат запроса по преподам
    request_prep = storage.get_search_list_prep(request_word)
    # Циклы нужны для общего поиска. Здесь мы удаляем старые ключи в обоих реквестах и создаём один общий ключ,
    # как для групп, так и для преподов
    for i in request_group:
        i['found_prep'] = i.pop('name')
    for i in request_prep:
        i['found_prep'] = i.pop('prep_short_name')
    # Склеиваем результаты двух запросов для общего поиска
    request = request_group + request_prep

    last_request = request[-1]

    if data['prep_list'].lower() in Condition_request[chat_id][2]:
        try:
            bot.delete_message(message_id=message_id, chat_id=chat_id)
        except Exception as e:
            pass
        Condition_request[chat_id][1] = data['prep_list']
        des = message.data.split(":")[1].replace("}", "").replace('"', '')
        if "-" in data['prep_list'].lower():
            msg = bot.send_message(
                chat_id=chat_id,
                text=f'Выберите неделю для {des}',
                reply_markup=keyboards.make_keyboard_choose_schedule())
        else:
            msg = bot.send_message(
                chat_id=chat_id,
                text=f'Выберите неделю для {des}',
                reply_markup=keyboards.
                make_keyboard_choose_schedule_for_aud_search())
        bot.register_next_step_handler(msg,
                                       search,
                                       bot=bot,
                                       storage=storage,
                                       tz=tz,
                                       last_msg=msg)

    elif data['prep_list'] == 'back':
        more_than_10 = False
        if len(request) > 10:
            requests = request[10 * (page - 1):10 * page]
            more_than_10 = True

        if Condition_request[chat_id][0] - 1 == 0:
            try:
                bot.delete_message(message_id=message_id, chat_id=chat_id)
            except Exception as e:
                pass
            bot.send_message(chat_id=chat_id,
                             text=f'Первая страница поиска:',
                             reply_markup=keyboards.make_keyboard_search_group(
                                 last_request=last_request,
                                 page=page - 1,
                                 requests=requests,
                                 more_than_10=more_than_10))

        else:
            bot.edit_message_reply_markup(
                message_id=message_id,
                chat_id=chat_id,
                reply_markup=keyboards.make_keyboard_search_group(
                    last_request=last_request,
                    page=page - 1,
                    requests=requests,
                    more_than_10=more_than_10))
        Condition_request[chat_id][0] -= 1

    elif data['prep_list'] == 'next':
        try:
            bot.delete_message(message_id=message_id, chat_id=chat_id)
        except Exception as e:
            pass
        more_than_10 = False
        if len(request) > 10:
            requests = request[10 * (page + 1):10 * (page + 2)]
            more_than_10 = True
        bot.send_message(chat_id=chat_id,
                         text=f'Следующая страница',
                         reply_markup=keyboards.make_keyboard_search_group(
                             last_request=last_request,
                             page=page + 1,
                             requests=requests,
                             more_than_10=more_than_10))
        Condition_request[chat_id][0] += 1

    # Регистрируем преподавателя по выбранной кнопке

    else:
        msg = bot.send_message(
            chat_id=chat_id,
            text='Проверьте правильность ввода 😞',
            reply_markup=keyboards.make_keyboard_main_menu())
        bot.register_next_step_handler(msg,
                                       search,
                                       bot=bot,
                                       storage=storage,
                                       tz=tz,
                                       last_msg=msg)
Пример #9
0
async def search(bot: Bot, ans: Message, storage):
    """Стейт поиска по аудиториям"""
    global aud_list
    # Чат ID пользователя
    chat_id = ans.from_id
    # Данные ввода
    data = ans.text
    # Соответствия по группам
    all_found_aud = []
    # Соответствия для преподов
    # Задаём состояние для первой страницы
    page = 1
    prep_list = []
    all_results = []

    if not storage.get_schedule_aud(data) and len(ans.text.replace(' ',
                                                                   '')) < 15:
        # Отправляем запросы в базу посимвольно
        for item in data:
            # Получаем все результаты запроса на каждый символ
            request_item_all = storage.get_schedule_aud(item)
            # Проходим по каждому результату запроса одного символа
            for i in range(len(request_item_all)):
                # Обращаемся к результатам у которых есть ключ "aud"
                request_item = request_item_all[i]['aud']
                # Записывем все совпадения (Значения ключа "aud")
                prep_list.append(request_item)
                request_item = []

            request_item_all = []

        # Выделение наиболее повторяющихся элементов(а). Фактически результат запроса пользователя.
        qty_most_common = 0
        prep_list_set = set(prep_list)
        for item in prep_list_set:
            qty = prep_list.count(item)
            if qty > qty_most_common:
                qty_most_common = qty
                # Переменная с результатом сортировки
            if ans.text.replace(' ', '').lower() in item.replace('-',
                                                                 '').lower():
                all_results.append(item.lower())

    # Условие для первичного входа пользователя
    if storage.get_schedule_aud(
            data) and aud_list[chat_id] == [] and not all_results:
        # Результат запроса по аудам
        request_aud = storage.get_schedule_aud(data)
        # Циклы нужны для общего поиска. Здесь мы удаляем старые ключи в обоих реквестах и создаём один общий ключ, как для групп, так и для преподов
        for i in request_aud:
            i['search'] = i.pop('aud')
        # Записываем слово, которое ищем
        request_word = data
        # Отправляем в функцию данные для создания клавиатуры
        keyboard = keyboards.make_keyboard_search_group(page, request_aud)
        # Эти циклы записывают группы и преподов в нижнем регистре для удобной работы с ними
        for i in request_aud:
            all_found_aud.append(i['search'].lower())
        # Формируем полный багаж для пользователя
        list_search = [page, request_word, all_found_aud]
        # Записываем все данные под ключом пользователя
        aud_list[chat_id] = list_search
        # Выводим результат поиска с клавиатурой (кливиатур формируется по поисковому запросу)
        await ans.answer("Результат поиска", keyboard=keyboard)
        return

    if all_results and aud_list[chat_id] == []:
        all_found_aud = all_results
        request_word = data
        keyboard = keyboards.make_keyboard_search_group(page, all_found_aud)
        list_search = [page, request_word, all_found_aud]
        aud_list[chat_id] = list_search
        await ans.answer("Результат поиска", keyboard=keyboard)

    # Здесь уловия для выхода в основное меню
    elif data == "Основное меню":
        del aud_list[ans.from_id]
        await ans.answer("Основное меню",
                         keyboard=keyboards.make_keyboard_start_menu())
        await bot.state_dispenser.delete(ans.peer_id)

    # Здесь уловие для слова "Дальше"
    elif data == "Дальше":
        page = aud_list[ans.from_id][0]
        aud_list[ans.from_id][0] += 1
        request_word = aud_list[ans.from_id][1]
        request_aud = storage.get_schedule_aud(request_word)
        for i in request_aud:
            i['search'] = i.pop('aud')
        request_aud = request_aud[26 * page:]
        keyboard = keyboards.make_keyboard_search_group(page + 1, request_aud)
        await ans.answer(f"Страница {page + 1}", keyboard=keyboard)

    # По аналогии со словом "<==Назад", только обратный процесс
    elif data == "<==Назад":
        aud_list[ans.from_id][0] -= 1
        page = aud_list[ans.from_id][0]
        request_word = aud_list[ans.from_id][1]
        request_aud = storage.get_schedule_aud(request_word)
        for i in request_aud:
            i['search'] = i.pop('aud')
        request_aud = request_aud[26 * (page - 1):]
        keyboard = keyboards.make_keyboard_search_group(page, request_aud)
        await ans.answer(f"Страница {page}", keyboard=keyboard)

    # Условие для вывода расписания для группы и преподавателя по неделям
    elif ('На текущую неделю' == data or 'На следующую неделю' == data):
        group = aud_list[ans.from_id][1]
        request_word = aud_list[ans.from_id][1]
        request_aud = storage.get_schedule_aud(request_word)
        # Если есть запрос для группы, то формируем расписание для группы, а если нет, то для препода
        schedule = request_aud[0]

        if schedule['schedule'] == []:
            await schedule_processing.sending_schedule_is_not_available(ans=ans
                                                                        )
            return

        schedule = schedule['schedule']
        week = find_week()

        # меняем неделю
        if data == 'На следующую неделю':
            week = 'odd' if week == 'even' else 'even'

        week_name = 'четная' if week == 'odd' else 'нечетная'

        aud = request_word

        schedule_str = full_schedule_in_str_prep(schedule, week=week, aud=aud)

        # Проверяем, что расписание сформировалось
        if isinstance(schedule_str, APIError):
            await schedule_processing.sending_schedule_is_not_available(ans=ans
                                                                        )
            await bot.state_dispenser.delete(ans.peer_id)
            return

        await ans.answer(f'Расписание {group}\n'
                         f'Неделя: {week_name}',
                         keyboard=keyboards.make_keyboard_start_menu())

        # Отправка расписания
        await schedule_processing.sending_schedule(ans=ans,
                                                   schedule_str=schedule_str)

        await bot.state_dispenser.delete(ans.peer_id)

    # Условия для завершения поиска, тобишь окончательный выбор пользователя
    elif storage.get_schedule_aud(data) and data.lower() in (
            i for i in aud_list[ans.from_id][2]):
        choose = data
        aud_list[ans.from_id][1] = choose
        request_word = aud_list[ans.from_id][1]
        request_aud = storage.get_schedule_aud(request_word)
        for i in request_aud:
            i['search'] = i.pop('aud')

        await ans.answer(
            f"Выберите неделю для аудитории {choose}",
            keyboard=keyboards.make_keyboard_choose_schedule_for_aud_search())

        return
    # Для того, чтобы во время найденного запроса можно было повторить поиск
    else:
        if aud_list[ans.from_id] and storage.get_schedule_aud(data):

            # Результат запроса по аудам
            request_aud = storage.get_schedule_aud(data)
            # Циклы нужны для общего поиска. Здесь мы удаляем старые ключи в обоих реквестах и создаём один общий ключ, как для групп, так и для преподов
            for i in request_aud:
                i['search'] = i.pop('aud')
            # Записываем слово, которое ищем
            request_word = data
            # Отправляем в функцию данные для создания клавиатуры
            keyboard = keyboards.make_keyboard_search_group(page, request_aud)
            # Эти циклы записывают группы и преподов в нижнем регистре для удобной работы с ними
            for i in request_aud:
                all_found_aud.append(i['search'].lower())
            # Формируем полный багаж для пользователя
            list_search = [page, request_word, all_found_aud]
            # Записываем все данные под ключом пользователя
            aud_list[chat_id] = list_search
            # Выводим результат поиска с клавиатурой (кливиатур формируется по поисковому запросу)
            await ans.answer("Результат поиска", keyboard=keyboard)

        else:
            try:
                if len(aud_list[chat_id]) == 3:
                    aud_list[chat_id] = []

            finally:
                if all_results:
                    keyboard = keyboards.make_keyboard_search_group(
                        page, all_results)
                    await ans.answer("Результат поиска", keyboard=keyboard)
                else:
                    await ans.answer(
                        'Поиск не дал результатов 😕',
                        keyboard=keyboards.make_keyboard_main_menu())
                    return