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"))