build-reply-keyboard
Builds reply keyboards for messages using the telegram-bot DSL. Use when adding persistent or one-time keyboards, request contact/location buttons, or Web App buttons for user input.
Works with
---
name: build-reply-keyboard
description: Builds reply keyboards for messages using the telegram-bot DSL. Use when adding persistent or one-time keyboards, request contact/location buttons, or Web App buttons for user input.
license: Apache-2.0
---
# Build Reply Keyboard
## Quick Start
Use `replyKeyboardMarkup { }` or `replyKeyboardMarkup(block)`. Attach via `markup()` or `replyKeyboardMarkup { }` on send actions.
```kotlin
message("Choose an option:")
.replyKeyboardMarkup {
+"Option A"
+"Option B"
newLine()
"Share contact" requestContact true
options { resizeKeyboard = true; oneTimeKeyboard = true }
}
.send(user, bot)
```
## Simple Buttons
Use unary plus to add plain text buttons:
```kotlin
+"Button 1"
+"Button 2"
newLine()
+"Next row"
```
## Special Buttons
| Type | Syntax | Availability |
|------|--------|--------------|
| Request contact | `"Share contact" requestContact true` | Private chats only |
| Request location | `"Share location" requestLocation true` | Private chats only |
| Request user | `"Select user" requestUser KeyboardButtonRequestUsers(...)` | Private chats only |
| Request chat | `"Select chat" requestChat KeyboardButtonRequestChat(...)` | Private chats only |
| Request poll | `"Create poll" requestPoll KeyboardButtonPollType(...)` | Private chats only |
| Web App | `"Open app" webApp "https://..."` | Private chats only |
## Options
Configure via `options { }`:
- `resizeKeyboard = true` — keyboard resizes to fit screen
- `oneTimeKeyboard = true` — keyboard hides after one use
- `inputFieldPlaceholder = "Type here..."` — placeholder in input field (1-64 chars)
- `selective = true` — show only to @mentioned users or reply target
- `isPersistent = true` — keyboard stays visible (for oneTimeKeyboard)
## Rows
Use `newLine()` or `br()` to start a new row, same as inline keyboards.
## Removing the Keyboard
When done, send a message with `replyKeyboardRemove()`:
```kotlin
message("Keyboard removed")
.replyKeyboardRemove()
.send(user, bot)
```
Or `replyKeyboardRemove(selective = true)` for selective removal.
## Reference
- [ReplyKeyboardMarkupBuilder.kt](telegram-bot/src/commonMain/kotlin/eu/vendeli/tgbot/utils/builders/ReplyKeyboardMarkupBuilder.kt)
- [ReplyKeyboardMarkupOptions.kt](telegram-bot/src/commonMain/kotlin/eu/vendeli/tgbot/types/options/ReplyKeyboardMarkupOptions.kt)
- [MarkupFeature.kt](telegram-bot/src/commonMain/kotlin/eu/vendeli/tgbot/interfaces/features/MarkupFeature.kt)More Accessibility skills
skill-creator
anthropics/skills
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
hyperframes-core
heygen-com/hyperframes
The HyperFrames composition contract — build one renderable project. Use for composition structure, the `data-*` timing attributes, `class="clip"`, tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Also covers Tailwind projects and the STORYBOARD.md / SCRIPT.md plan formats. Read before writing composition HTML.
ui-ux-pro-max
nextlevelbuilder/ui-ux-pro-max-skill
UI/UX design intelligence for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation. Searchable local data: 79 searchable styles (50 active), 192 product palettes and reasoning profiles, 74 font pairings, 119 UX guidelines, 105 icons, 17 GSAP presets, 25 chart types, and 22 stacks.

