2022-05-18 21:34:57
grammy-markupСделал плагин для grammY (typescript-фреймворк для телеграм-ботов), упрощающий создание обычных и инлайн-клавиатур.
Официальный плагин предоставляет императивный API, который мне не совсем нравится. Я же вдохновился telegraf и написал декларативные функции-помощники.
Сравните сами:
new InlineKeyboard([
[IButton.text("Get random music", "random")],
[IButton.switchInline("Send music to friends")],
])
вместо
new InlineKeyboard()
.text("Get random music", "random").row()
.switchInline("Send music to friends")
А особенно удобен декларативный подход тогда, когда нужно представить в меню динамические данные (например, полученные из базы данных):
const inlineKeyboard = new InlineKeyboard(items.map(
(item) => [IButton.text(item.name, item.id)],
))
вместо
const inlineKeyboard = new InlineKeyboard()
for (const item of items) {
inlineKeyboard.text(item.name, item.id).row()
}
Кроме того, с декларативным подходом легко использовать всякие утилиты для работы с массивами, например chunk:
const inlineKeyboard = new InlineKeyboard(chunk(
items.map((item) => IButton.text(item.name, item.id)),
3,
))
Плагин доступен как для nodejs, так и для deno. В readme можно найти инструкции по установке и использованию.
Это нестабильный релиз, API может меняться в минорных апдейтах. В npm стоит версия 0.1.0, а для deno плагин доступен только по прямой ссылке на Github.
В общем, приглашаю попробовать и поделиться своими мыслями в комментариях.
566 viewsedited 18:34