Skip to main content

Built and signed on GitHub Actions

Framework-agnostic Telegram bot keyboard builder with many cool features!

This package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers
This package works with Cloudflare Workers
This package works with Node.js
This package works with Deno
This package works with Bun
This package works with Browsers
JSR Score
100%
Published
3 months ago (1.1.0)
class InlineKeyboard
extends BaseKeyboardConstructor<TelegramInlineKeyboardButton>

InlineKeyboardMarkup builder

This object represents an inline keyboard that appears right next to the message it belongs to.

[Documentation]

Methods

build(): TelegramInlineKeyboardMarkupFix

Return TelegramInlineKeyboardMarkup as JSON

combine(keyboard:
TelegramInlineKeyboardButton[][]
| TelegramInlineKeyboardMarkup
| { toJSON: () => TelegramInlineKeyboardMarkup; }
): this

Allows you to combine keyboards. Only keyboards are combined. You need to call the .row() method to line-break after combine.

copy(
text: string,
textToCopy: string | TelegramCopyTextButton,
): this
game(
text: string,
gameOptions?: TelegramCallbackGame,
): this

Description of the game that will be launched when the user presses the button.

NOTE: This type of button must always be the first button in the first row.

login(
text: string,
url: string | TelegramLoginUrl,
): this

An HTTPS URL used to automatically authorize the user. Can be used as a replacement for the Telegram Login Widget.

pay(text: string): this

Send a Pay button.

NOTE: This type of button must always be the first button in the first row and can only be used in invoice messages.

switchToChat(
text: string,
query?: string,
): this

Pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field.

By default empty, in which case just the bot's username will be inserted.

switchToChosenChat(
text: string,
query?: string | TelegramSwitchInlineQueryChosenChat,
): this

Pressing the button will prompt the user to select one of their chats of the specified type, open that chat and insert the bot's username and the specified inline query in the input field

switchToCurrentChat(
text: string,
query?: string,
): this

Pressing the button will insert the bot's username and the specified inline query in the current chat's input field. May be empty, in which case only the bot's username will be inserted.

This offers a quick way for the user to open your bot in inline mode in the same chat - good for selecting something from multiple options.

text(
text: string,
payload: string | Record<string, unknown>,
): this

Text button with data to be sent in a callback query to the bot when button is pressed, 1-64 bytes

toJSON(): TelegramInlineKeyboardMarkupFix

Serializing a class into an TelegramInlineKeyboardMarkupFix object (used by JSON.stringify)

url(
text: string,
url: string,
): this

HTTP or tg:// URL to be opened when the button is pressed. Links tg://user?id=<user_id> can be used to mention a user by their identifier without using a username, if this is allowed by their privacy settings.

webApp(
text: string,
url: string,
): this

Description of the Web App that will be launched when the user presses the button. The Web App will be able to send an arbitrary message on behalf of the user using the method answerWebAppQuery. Available only in private chats between a user and the bot.

Static Methods

copy(
text: string,
textToCopy: string | TelegramCopyTextButton,
): TelegramInlineKeyboardButton
game(
text: string,
gameOptions?: TelegramCallbackGame,
): TelegramInlineKeyboardButton

Description of the game that will be launched when the user presses the button.

NOTE: This type of button must always be the first button in the first row.

login(
text: string,
url: string | TelegramLoginUrl,
): TelegramInlineKeyboardButton

An HTTPS URL used to automatically authorize the user. Can be used as a replacement for the Telegram Login Widget.

pay(text: string): TelegramInlineKeyboardButton

Send a Pay button.

NOTE: This type of button must always be the first button in the first row and can only be used in invoice messages.

switchToChat(
text: string,
query?: string,
): TelegramInlineKeyboardButton

If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field.

By default empty, in which case just the bot's username will be inserted.

switchToChosenChat(
text: string,
query?: string | TelegramSwitchInlineQueryChosenChat,
): TelegramInlineKeyboardButton

Pressing the button will prompt the user to select one of their chats of the specified type, open that chat and insert the bot's username and the specified inline query in the input field

switchToCurrentChat(
text: string,
query?: string,
): TelegramInlineKeyboardButton

Pressing the button will insert the bot's username and the specified inline query in the current chat's input field. May be empty, in which case only the bot's username will be inserted.

This offers a quick way for the user to open your bot in inline mode in the same chat - good for selecting something from multiple options.

text(
text: string,
payload: string | Record<string, unknown>,
): TelegramInlineKeyboardButton

Text button with data to be sent in a callback query to the bot when button is pressed, 1-64 bytes

url(
text: string,
url: string,
): TelegramInlineKeyboardButton

HTTP or tg:// URL to be opened when the button is pressed. Links tg://user?id=<user_id> can be used to mention a user by their identifier without using a username, if this is allowed by their privacy settings.

webApp(
text: string,
url: string,
): TelegramInlineKeyboardButton

Description of the Web App that will be launched when the user presses the button. The Web App will be able to send an arbitrary message on behalf of the user using the method answerWebAppQuery. Available only in private chats between a user and the bot.

Add Package

deno add jsr:@gramio/keyboards

Import symbol

import { InlineKeyboard } from "@gramio/keyboards";

---- OR ----

Import directly with a jsr specifier

import { InlineKeyboard } from "jsr:@gramio/keyboards";

Add Package

npx jsr add @gramio/keyboards

Import symbol

import { InlineKeyboard } from "@gramio/keyboards";

Add Package

yarn dlx jsr add @gramio/keyboards

Import symbol

import { InlineKeyboard } from "@gramio/keyboards";

Add Package

pnpm dlx jsr add @gramio/keyboards

Import symbol

import { InlineKeyboard } from "@gramio/keyboards";

Add Package

bunx jsr add @gramio/keyboards

Import symbol

import { InlineKeyboard } from "@gramio/keyboards";