ksinn / python-telegram-bot-pagination

Python inline keyboard pagination for Telegram Bot API
Other
105 stars 23 forks source link
bot inline-keyboard keyboard pagination paginator python telegram telegram-bot telegram-bot-api

python-telegram-bot-pagination

Download Month Build Status

Provide easy way for create number pagination with inline keyboard for telegram bot on python.

Example with pyTelegramBotAPI

Example with python-telegram-bot

Installation

pip install python-telegram-bot-pagination

Usage

    from telegram_bot_pagination import InlineKeyboardPaginator

    paginator = InlineKeyboardPaginator(
        page_count,
        current_page=page,
        data_pattern='page#{page}'
    )

    bot.send_message(
        chat_id,
        text,
        reply_markup=paginator.markup,
    )

Init arguments:

Properties:

Button render controlling

For edit button render, use paginator object properties:

All of them can by python style formatting string with one arg, or simple string.

For example:

class MyPaginator(InlineKeyboardPaginator):
    first_page_label = '<<'
    previous_page_label = '<'
    current_page_label = '-{}-'
    next_page_label = '>'
    last_page_label = '>>'

paginator = MyPaginator(page_count)

Result:

Adding extra button

For adding button line before and after pagination use methods:

Each argument mast provide property 'text' and 'callback_data'

For example:

paginator.add_before(
    InlineKeyboardButton('Like', callback_data='like#{}'.format(page)),
    InlineKeyboardButton('Dislike', callback_data='dislike#{}'.format(page))
)
paginator.add_after(InlineKeyboardButton('Go back', callback_data='back'))

Result: