Reply Keyboard

Custom reply keyboard markup with contact, location, poll request buttons, and input placeholder support.

Basic Usage

Simple reply keyboard
from pykeyboard import ReplyKeyboard

kb = ReplyKeyboard(
    row_width=2,
    resize_keyboard=True,
    one_time_keyboard=True,
    placeholder="Choose an option...",
)
kb.add("✅ Yes", "❌ No", "🤷 Maybe")

await message.reply("What do you think?", reply_markup=kb)

Constructor

ParameterTypeDefaultDescription
row_widthint3Max buttons per row (1–8)
resize_keyboardboolNoneResize to fit content vertically
one_time_keyboardboolNoneDisappear after first use
is_persistentboolNoneKeep visible between messages
selectiveboolNoneShow only to specific users
placeholderstrNonePlaceholder text in input field

Button Types

Use ReplyButton for advanced button types beyond plain text.

ParameterTypeDescription
textstrButton label (required)
request_contactboolRequest phone contact
request_locationboolRequest GPS location
request_pollKeyboardButtonPollTypeRequest a poll
web_appWebAppInfoOpen a Web App
request_usersKeyboardButtonRequestUsersRequest user selection
request_chatKeyboardButtonRequestChatRequest chat selection
Special button types
from pykeyboard import ReplyKeyboard, ReplyButton

kb = ReplyKeyboard(resize_keyboard=True)
kb.add(
    ReplyButton(text="📱 Share Contact", request_contact=True),
    ReplyButton(text="📍 Share Location", request_location=True),
)

Removing the Keyboard

from pykeyboard import PyReplyKeyboardRemove, PyForceReply

# Remove the keyboard
await message.reply("Keyboard removed", reply_markup=PyReplyKeyboardRemove())

# Force reply with placeholder
await message.reply(
    "Please type your answer:",
    reply_markup=PyForceReply(placeholder="Type here...")
)