Telegram Menu Builder - Quick Start Guide¶
Installation¶
Basic Usage¶
1. Create a Simple Menu¶
from telegram_menu_builder import MenuBuilder
menu = (MenuBuilder()
.add_item("Option 1", handler="handle_option1")
.add_item("Option 2", handler="handle_option2")
.add_item("Option 3", handler="handle_option3")
.columns(2)
.build())
2. Setup Router¶
from telegram_menu_builder import MenuRouter
router = MenuRouter()
@router.handler("handle_option1")
async def handle_option1(update, context, params):
await update.callback_query.edit_message_text("You selected Option 1")
@router.handler("handle_option2")
async def handle_option2(update, context, params):
await update.callback_query.edit_message_text("You selected Option 2")
3. Register with python-telegram-bot¶
from telegram.ext import Application, CallbackQueryHandler
app = Application.builder().token("YOUR_TOKEN").build()
app.add_handler(CallbackQueryHandler(router.route))
Advanced Features¶
Parameters¶
Pass unlimited parameters to handlers:
menu = (MenuBuilder()
.add_item(
"Edit User",
handler="edit_user",
user_id=123,
field="email",
breadcrumb=["main", "users"],
metadata={"source": "admin_panel"}
)
.build())
Navigation Buttons¶
menu = (MenuBuilder()
.add_item("Item 1", handler="h1")
.add_item("Item 2", handler="h2")
.add_back_button(handler="go_back", page=1)
.add_next_button(handler="go_next", page=3)
.build())
Nested Menus¶
# Create submenu
submenu = (MenuBuilder()
.add_item("Sub Option 1", handler="sub1")
.add_item("Sub Option 2", handler="sub2")
.add_back_button())
# Add to main menu
main_menu = (MenuBuilder()
.add_item("Main Option", handler="main")
.add_submenu("Open Submenu", submenu)
.build())
Custom Storage¶
from telegram_menu_builder import MenuBuilder
from redis.asyncio import Redis
# Use Redis for storage
redis_client = Redis(host='localhost', port=6379)
storage = RedisStorage(redis_client)
builder = MenuBuilder(storage=storage)
Examples¶
See the examples/ directory for complete working examples:
- simple_menu.py - Basic menu with settings
- advanced_menu.py - Multi-level menu with pagination
Configuration¶
Layout¶
Storage Strategies¶
The library automatically chooses the best storage strategy: - Inline: < 60 bytes → encoded in callback_data - Short-term: 60-500 bytes → temporary storage with TTL - Persistent: > 500 bytes → permanent storage
Testing¶
Next Steps¶
- Read the API Reference
- Check Callback Encoding Internals
- Learn about Storage Backends