Обзор
@gramio/keyboards - это встроенный пакет GramIO. Вы также можете использовать его вне этого фреймворка, так как он не зависит от него.
Смотрите также API Reference.
Установка (не требуется для пользователей GramIO)
::: pm-add @gramio/keyboards :::
Использование
ts
import { Keyboard } from "gramio";
const keyboard = new Keyboard()
.text("первая строка")
.row()
.text("вторая строка");ts
import { Keyboard } from "@gramio/keyboards";
const keyboard = new Keyboard()
.text("первая строка")
.row()
.text("вторая строка")
.build();Отправка через GramIO
ts
import { Bot, Keyboard } from "gramio"; // импорт из пакета GramIO!!
const bot = new Bot(process.env.BOT_TOKEN as string);
const data = ["Apple", "Realme", "Tesla", "Xiaomi"];
bot.on("message", (ctx) => {
return ctx.send("тест", {
reply_markup: new Keyboard()
.columns(1)
.text("простая клавиатура")
.add(...data.map((x) => Keyboard.text(x)))
.filter(({ button }) => button.text !== "Tesla"),
});
});
bot.start();Отправка через Grammy
ts
import { Keyboard } from "@gramio/keyboards";
import { Bot } from "grammy";
const bot = new Bot(process.env.BOT_TOKEN as string);
const data = ["Apple", "Realme", "Tesla", "Xiaomi"];
bot.on("message", (ctx) => {
return ctx.reply("тест", {
reply_markup: new Keyboard()
.columns(1)
.text("простая клавиатура")
.add(...data.map((x) => Keyboard.text(x)))
.filter(({ button }) => button.text !== "Tesla")
.build(),
});
});
bot.start();Отправка через Telegraf
> `Telegraf` не поддерживает последнюю версию Bot API
ts
import { Keyboard } from "@gramio/keyboards";
import { Telegraf } from "telegraf";
const bot = new Telegraf(process.env.BOT_TOKEN as string);
const data = ["Apple", "Realme", "Tesla", "Xiaomi"];
bot.on("message", (ctx) => {
return ctx.reply("тест", {
reply_markup: new Keyboard()
.columns(1)
.text("простая клавиатура")
.add(...data.map((x) => Keyboard.text(x)))
.filter(({ button }) => button.text !== "Tesla")
.build(),
});
});
bot.launch();Отправка через node-telegram-bot-api
> `node-telegram-bot-api` не поддерживает последнюю версию Bot API, и типы написаны плохо, поэтому типы могут не совпадать
ts
import { Keyboard } from "@gramio/keyboards";
import TelegramBot from "node-telegram-bot-api";
const bot = new TelegramBot(process.env.TOKEN as string, { polling: true });
const data = ["Apple", "Realme", "Tesla", "Xiaomi"];
bot.on("message", (msg) => {
return bot.sendMessage(msg.chat.id, "тест", {
reply_markup: new Keyboard()
.columns(1)
.text("простая клавиатура")
.add(...data.map((x) => Keyboard.text(x)))
.filter(({ button }) => button.text !== "Tesla")
.build(),
});
});Отправка через puregram
> `puregram` не поддерживает последнюю версию Bot API
ts
import { Telegram } from "puregram";
import { Keyboard } from "@gramio/keyboards";
const bot = new Telegram({
token: process.env.TOKEN as string,
});
const data = ["Apple", "Realme", "Tesla", "Xiaomi"];
bot.on("message", (ctx) => {
return ctx.send("тест", {
reply_markup: new Keyboard()
.columns(1)
.text("простая клавиатура")
.add(...data.map((x) => Keyboard.text(x)))
.filter(({ button }) => button.text !== "Tesla")
.build(),
});
});
bot.updates.startPolling();Результат
json
{
"keyboard": [
[
{
"text": "простая клавиатура"
}
],
[
{
"text": "Apple"
}
],
[
{
"text": "Realme"
}
],
[
{
"text": "Xiaomi"
}
]
],
"one_time_keyboard": false,
"is_persistent": false,
"selective": false,
"resize_keyboard": true
}