v0.3.x · pykeyboard

Builder API

The fluent builder interface lets you chain keyboard construction calls instead of calling add() separately.

Chaining

from pykeyboard import InlineKeyboard, InlineButton

kb = (
    InlineKeyboard(row_width=2)
    .add(InlineButton("One",   callback_data="1"))
    .add(InlineButton("Two",   callback_data="2"))
    .add(InlineButton("Three", callback_data="3"))
    .row(InlineButton("Cancel", callback_data="cancel"))
)

Factory Pattern

def confirm_keyboard(action: str) -> InlineKeyboard:
    return (
        InlineKeyboard()
        .row(
            InlineButton("✓ Yes", callback_data=f"confirm:{action}"),
            InlineButton("✗ No",  callback_data="cancel"),
        )
    )

await message.reply(
    "Are you sure you want to delete this?",
    reply_markup=confirm_keyboard("delete:42"),
)

Building from Data

products = [
    {"id": 1, "name": "Apple"},
    {"id": 2, "name": "Banana"},
    {"id": 3, "name": "Cherry"},
]

kb = InlineKeyboard(row_width=2)
for p in products:
    kb.add(InlineButton(p["name"], callback_data=f"buy:{p['id']}"))
kb.row(InlineButton("← Back", callback_data="back"))