telega/keyboard
This module contains the keyboard constructors and useful utilities to work with keyboards
You can create a keyboard with new
or new_inline
.
The simplest way to create a keyboard is to use new
and use hear
to listen for button presses:
let keyboard = keyboard.new([
[keyboard.button("Button 1"), keyboard.button("Button 2")],
[keyboard.button("Button 3"), keyboard.button("Button 4")],
])
If you’re using inline keyboard, you can use new_inline
and filter_inline_keyboard_query
to listen for button presses:
let keyboard = keyboard.new_inline([
[keyboard.inline_button("Button 1", keyboard.pack_callback(callback_data, "data"))],
])
// In handler:
let filter = keyboard.filter_inline_keyboard_query(keyboard)
Types
pub opaque type InlineKeyboard
pub type KeyboardCallback(data) {
KeyboardCallback(
data: data,
id: String,
payload: String,
callback_data: KeyboardCallbackData(data),
)
}
Constructors
-
KeyboardCallback( data: data, id: String, payload: String, callback_data: KeyboardCallbackData(data), )
pub opaque type KeyboardCallbackData(data)
Values
pub fn filter_inline_keyboard_query(
keyboard: InlineKeyboard,
) -> bot.CallbackQueryFilter
Filter for inline keyboard queries
pub fn inline_button(
text text: String,
callback_data callback_data: KeyboardCallback(data),
) -> model.InlineKeyboardButton
Create a new inline button
pub fn inline_web_app_button(
text text: String,
url url: String,
) -> model.InlineKeyboardButton
Create a new web app button
pub fn new_callback_data(
id id: String,
serialize serialize: fn(data) -> String,
deserialize deserialize: fn(String) -> data,
) -> KeyboardCallbackData(data)
Create a new callback data for inline keyboard buttons
pub fn new_inline(
buttons: List(List(model.InlineKeyboardButton)),
) -> InlineKeyboard
Create a new inline keyboard
pub fn pack_callback(
callback_data callback_data: KeyboardCallbackData(data),
data data: data,
) -> KeyboardCallback(data)
Pack callback data into a callback
pub fn placeholder(keyboard: Keyboard, text: String) -> Keyboard
Set the placeholder for the input field
pub fn selected(keyboard: Keyboard) -> Keyboard
Make the keyboard selective. Use this parameter if you want to show the keyboard to specific users only.
pub fn set_callback_data_delimiter(
data: KeyboardCallbackData(data),
delimiter: String,
) -> KeyboardCallbackData(data)
Change the delimiter for the callback data, usefull if you need to use :
in the id
pub fn to_inline_markup(
keyboard: InlineKeyboard,
) -> model.SendMessageReplyMarkupParameters
Build a reply markup for Message
from an inline keyboard
pub fn to_markup(
keyboard: Keyboard,
) -> model.SendMessageReplyMarkupParameters
Build a reply markup for Message
from a keyboard
pub fn unpack_callback(
payload payload: String,
callback_data callback_data: KeyboardCallbackData(data),
) -> Result(KeyboardCallback(data), Nil)
Unpack payload into a callback
pub fn web_app_button(
text text: String,
url url: String,
) -> model.KeyboardButton
Create a new web app button