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 opaque type Keyboard
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 button(text: String) -> model.KeyboardButton

Create a new keyboard button

pub fn filter_inline_keyboard_query(
  keyboard: InlineKeyboard,
) -> bot.CallbackQueryFilter

Filter for inline keyboard queries

pub fn hear(keyboard: Keyboard) -> bot.Hears
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(buttons: List(List(model.KeyboardButton))) -> Keyboard

Create a new keyboard

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 one_time(keyboard: Keyboard) -> Keyboard

Make the keyboard one-time

pub fn pack_callback(
  callback_data callback_data: KeyboardCallbackData(data),
  data data: data,
) -> KeyboardCallback(data)

Pack callback data into a callback

pub fn persistent(keyboard: Keyboard) -> Keyboard

Make the keyboard persistent

pub fn placeholder(keyboard: Keyboard, text: String) -> Keyboard

Set the placeholder for the input field

pub fn resized(keyboard: Keyboard) -> Keyboard

Make the keyboard resizable

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

Search Document