Quick Start¶
Get up and running with PyKeyboard in 5 minutes.
Basic Setup¶
First, install PyKeyboard:
Your First Keyboard¶
from pykeyboard import InlineKeyboard, InlineButton
# Create a keyboard
keyboard = InlineKeyboard()
keyboard.add(
InlineButton("đ Like", "action:like"),
InlineButton("đ Dislike", "action:dislike"),
InlineButton("đ Stats", "action:stats")
)
# Use with Kurigram
await message.reply_text("What do you think?", reply_markup=keyboard)
Handling Callbacks¶
from pyrogram import Client, filters
app = Client("my_bot", api_id=API_ID, api_hash=API_HASH, bot_token=BOT_TOKEN)
@app.on_callback_query(filters.regex("action:like"))
async def handle_like(client, callback_query):
await callback_query.answer("You liked it! đ")
# Update your database, etc.
@app.on_callback_query(filters.regex("action:dislike"))
async def handle_dislike(client, callback_query):
await callback_query.answer("You disliked it! đ")
@app.on_callback_query(filters.regex("action:stats"))
async def handle_stats(client, callback_query):
stats = get_stats() # Your stats function
await callback_query.edit_message_text(f"đ Stats: {stats}")
Reply Keyboards¶
from pykeyboard import ReplyKeyboard, ReplyButton
# Create a reply keyboard
keyboard = ReplyKeyboard(resize_keyboard=True, one_time_keyboard=True)
keyboard.add(
ReplyButton("đą Share Phone", request_contact=True),
ReplyButton("đ Share Location", request_location=True),
ReplyButton("â Cancel")
)
await message.reply_text("Please share your contact:", reply_markup=keyboard)
Advanced Features¶
Pagination¶
keyboard = InlineKeyboard()
keyboard.paginate(
count_pages=10,
current_page=1,
callback_pattern="page:{number}"
)
Language Selection¶
keyboard = InlineKeyboard()
keyboard.languages(
callback_pattern="lang:{locale}",
locales=["en_US", "es_ES", "fr_FR"]
)
Builder Pattern¶
from pykeyboard import KeyboardBuilder
builder = KeyboardBuilder(InlineKeyboard())
keyboard = (builder
.add_button("Yes", "yes")
.add_button("No", "no")
.add_row("Maybe", "cancel")
.build())
Complete Example¶
from pyrogram import Client, filters
from pykeyboard import InlineKeyboard, InlineButton
# Bot setup
app = Client("my_bot", api_id=API_ID, api_hash=API_HASH, bot_token=BOT_TOKEN)
@app.on_message(filters.command("start"))
async def start(client, message):
keyboard = InlineKeyboard()
keyboard.add(
InlineButton("đŽ Play Game", "game"),
InlineButton("âšī¸ About", "about"),
InlineButton("âī¸ Settings", "settings")
)
await message.reply_text(
"Welcome to My Bot! Choose an option:",
reply_markup=keyboard
)
@app.on_callback_query(filters.regex("game"))
async def game_callback(client, callback_query):
await callback_query.edit_message_text("đŽ Game starting...")
@app.on_callback_query(filters.regex("about"))
async def about_callback(client, callback_query):
await callback_query.edit_message_text("âšī¸ This is a demo bot using PyKeyboard!")
@app.on_callback_query(filters.regex("settings"))
async def settings_callback(client, callback_query):
keyboard = InlineKeyboard()
keyboard.add(
InlineButton("đ Language", "lang"),
InlineButton("đ Notifications", "notif"),
InlineButton("âŦ
ī¸ Back", "back")
)
await callback_query.edit_message_text(
"âī¸ Settings:",
reply_markup=keyboard
)
if __name__ == "__main__":
app.run()
Next Steps¶
- Check out the examples for more advanced usage
- Read the API documentation for detailed reference
- Explore pagination and language selection features
- Join our GitHub Discussions for community support