name: build-inline-keyboard description: Builds inline keyboards for messages using the telegram-bot DSL. Use when adding buttons under messages, creating callback buttons, URL buttons, or inline keyboard markup for user interaction.
Build Inline Keyboard
Quick Start
Use inlineKeyboardMarkup { } or inlineKeyboardMarkup(block) to create inline keyboards. Attach via markup() or inlineKeyboardMarkup { } on send actions.
message("Choose an option:")
.inlineKeyboardMarkup {
"Option A" callback "opt_a"
"Option B" callback "opt_b"
newLine()
"Open link" url "https://example.com"
}
.send(user, bot)
Button Types
| Type | Syntax | Use case |
|---|---|---|
| Callback | "Label" callback "data" or callbackData("Label") { "data" } |
Button press sends callback to bot (1-64 bytes) |
| URL | "Label" url "https://..." |
Opens URL when pressed |
| Web App | "Label" webAppInfo "https://..." |
Opens Web App |
| Switch inline | "Label" switchInlineQuery "query" |
Opens inline mode in another chat |
| Switch inline (current) | "Label" switchInlineQueryCurrentChat "query" |
Inserts bot + query in current chat |
| Pay | "Pay" pay() |
Payment button |
| Copy text | "Label" copyText "text" |
Copies text to clipboard |
Rows
- Each
url(),callbackData(), etc. adds a button to the current row - Use
newLine()orbr()to start a new row
inlineKeyboardMarkup {
"Yes" callback "yes"
"No" callback "no"
newLine()
"Cancel" callback "cancel"
}
Attaching to Messages
Actions with MarkupFeature (e.g. message, sendPhoto, editMessageText) support:
inlineKeyboardMarkup { ... }— builder blockmarkup(inlineKeyboardMarkup { ... })— explicit markup
Callback Data Limits
- 1-64 bytes for
callbackData - Use prefixes for routing:
"action:id","vote:123"