Пагинация inline кнопок с помощью inline кнопок aiogram?

Хочу сделать пагинацию - всё получалось, поместил информацию в список, разделил на равные части (страницы), но никак не могу придумать, как реализовать перелистывание страниц. Пытался сделать через передачу с callback, но потом не могу вызвать функцию для отправки сообщения и обновления кнопок. В ручную (меняя переменную current_page) - всё прекрасно работает!

r_json = reqtest.get_schools(449) # <-- JSON in List
    buttons = InlineKeyboardMarkup()

    chunk_size = 15
    chunks = [r_json[i:i + chunk_size] for i in range(0, len(r_json), chunk_size)] # Делим все школы на группы (страницы) по 2
    max_page = len(chunks)
    current_page = int(db.get_current_page(message.from_user.id))


    for a in chunks[current_page]:
        buttons.add(InlineKeyboardButton(text=a['shortName'], callback_data=f"school-{a['id']}"))

    buttons.add(InlineKeyboardButton(text='<', callback_data=f'to-left-{max_page}'), InlineKeyboardButton(text=f'{current_page + 1}/{max_page}', callback_data='count'), InlineKeyboardButton(text='>', callback_data=f'to-right-{max_page}'))
    buttons.add(InlineKeyboardButton(text='Поменять город', callback_data='choose_city'))


    await bot.send_message(message.from_user.id, f'Выберите школу:', reply_markup=buttons)

Пытался поймать callback стрелок, но коряво получилось:

@dp.callback_query_handler(lambda c: re.search('to-', c.data))
async def to_page(call: CallbackQuery):
    chat_id = call.message.chat.id
    await call.answer()
    side_page = call.data.split("-")[1]
    max_page = call.data.split("-")[2]
    current_page = int(db.get_current_page(chat_id))
    if side_page == 'left':
        if current_page <= 0:
            current_page = max_page
        else:
            current_page = current_page - 1

    db.set_current_page(chat_id, current_page)

Ответы (0 шт):