• Как осуществить пагинацию aiogram?

    @dp.callback_query_handler()
    async def call_data_process(call: types.CallbackQuery):
        global COUNT
        with open("test_words.txt", "r", encoding="utf-8") as file:
            lines = file.readlines()
            pages = len(lines) // 10 + 1  # определяем количество страниц
            if call.data == "next":
                COUNT += 1
            elif call.data == "prev":
                COUNT -= 1
            COUNT = max(0, min(COUNT, pages - 1))  # ограничиваем значение счетчика до границ страниц
            start = COUNT * 10  # определяем начало и конец страницы
            end = start + 10
            text = "".join(lines[start:end])  # выбираем нужный диапазон строк
            keyboard = InlineKeyboardMarkup(row_width=2)
            if COUNT > 0:
                keyboard.add(InlineKeyboardButton("Назад", callback_data="prev"))
            if COUNT < pages - 1:
                keyboard.add(InlineKeyboardButton("Вперед", callback_data="next"))
            await call.message.edit_text(text=text, reply_markup=keyboard)
    Ответ написан
    2 комментария