Skip to main content

A simple library for aiogram that allows you to easily do pagination for any Inline keyboards.

Project description

aiogram-inline-paginations

Description

A simple library for aiogram that allows you to easily do pagination for any Inline keyboards.

Install for pip:

pip install aiogram-inline-paginations

Install for poetry:

poetry add aiogram-inline-paginations

Create paginations object

from aiogram_inline_paginations.paginator import Paginator
from aiogram import types

kb = types.InlineKeyboardMarkup()
paginator = Paginator(data=kb, size=5)

Params

data: Any ready-to-use keyboard InlineKeyboardMarkup or any iterable object with InlineKeyboardButton.

size: The number of rows of buttons on one page, excluding the navigation bar.

Return

A paginator object that, when called, returns a ready-made keyboard with pagination.

Get data for registrations handler paginator

from aiogram_inline_paginations.paginator import Paginator
from aiogram import types

kb = types.InlineKeyboardMarkup()
paginator = Paginator(data=kb, size=5)


@dp.message_handler()
async def some_func(message: types.Message):
    await message.answer(
        text='Some menu',
        reply_markup=paginator()
    )

    args, kwargs = paginator.paginator_handler()
    dp.register_callback_query_handler(*args, **kwargs)

Return paginator_handler()

Data for registrations paginator.

Example

import random

from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher.filters import CommandStart
from aiogram.utils.executor import Executor

from aiogram_inline_paginations.paginator import Paginator

token = 'your token'

storage = MemoryStorage()
bot = Bot(token=token)
dp = Dispatcher(bot, storage=storage)


@dp.message_handler(CommandStart(), state='*')
async def start(message: types.Message):
    await message.answer('Hello text')

    kb = types.InlineKeyboardMarkup()  # some keyboard

    '''To demonstrate, I will add more than 50 buttons to the keyboard and divide them into 5 lines per page'''
    kb.add(
        *[
            types.InlineKeyboardButton(
                text=str(random.randint(1000000, 10000000)),
                callback_data='pass'
            ) for i in range(2)
        ]
    )

    kb.add(
        *[
            types.InlineKeyboardButton(
                text=str(random.randint(1000000, 10000000)),
                callback_data='pass'
            ) for i in range(3)
        ]
    )

    kb.add(
        types.InlineKeyboardButton(
            text=str(random.randint(1000000, 10000000)),
            callback_data='pass'
        )
    )

    kb.add(
        *[
            types.InlineKeyboardButton(
                text=str(random.randint(1000000, 10000000)),
                callback_data='pass'
            ) for i in range(2)
        ]
    )

    kb.add(
        *[
            types.InlineKeyboardButton(
                text=str(random.randint(1000000, 10000000)),
                callback_data='pass'
            ) for i in range(50)
        ]
    )

    paginator = Paginator(data=kb, size=5)

    await message.answer(
        text='Some menu',
        reply_markup=paginator()
    )

    args, kwargs = paginator.paginator_handler()
    dp.register_callback_query_handler(*args, **kwargs)


if __name__ == '__main__':
    Executor(dp).start_polling()

Screenshots

First page:

img_1.png

Second page:

img_2.png

Last page:

img_3.png

The order of entries is not lost.

License MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiogram-inline-paginations-0.1.8.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file aiogram-inline-paginations-0.1.8.tar.gz.

File metadata

  • Download URL: aiogram-inline-paginations-0.1.8.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.10.3 Linux/5.4.0-122-generic

File hashes

Hashes for aiogram-inline-paginations-0.1.8.tar.gz
Algorithm Hash digest
SHA256 b53ff6809904539b86aa0cdcfcf56a87b2c0ffc4b6a6d7744b26ce37824ce097
MD5 2f07739f935d5a1b06ca5e6801e8a825
BLAKE2b-256 d89a599c48a96b8219d04343116c78a001c2bac411caab7b7c538e61581661d1

See more details on using hashes here.

File details

Details for the file aiogram_inline_paginations-0.1.8-py3-none-any.whl.

File metadata

File hashes

Hashes for aiogram_inline_paginations-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 61b457c9c8b991ed85b0dda2fae407201effbfa4aa465bb76a09b57cc9117100
MD5 ace1b20703ca799c37a64c371da4f09f
BLAKE2b-256 745544d0c27a11f5f7b37ae674ecfb52815f66d1ce39d5ba5aab8d8b4af5bc30

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page