Introduction
Lightweight and simple library that helps manage callback data
when using inline buttons in messages
Installation
$ npm install telegraf-callback-data
or using yarn
:
$ yarn add telegraf-callback-data
Example
const Telegraf = require('telegraf');
const Markup = require('telegraf/markup');
const { CallbackData } = require('telegraf-callback-data');
const bot = new Telegraf(process.env.BOT_TOKEN);
greetingCD = new CallbackData('greeting', ['type']);
bot.start(({ reply }) =>
reply('How to greet?', {
...Markup.inlineKeyboard([
Markup.callbackButton(
'oldschool',
greetingCD.new({
type: 'oldschool',
})
),
Markup.callbackButton(
'modern',
greetingCD.new({
type: 'modern',
})
),
]).extra(),
})
);
bot.action(
greetingCD.filter({
type: 'oldschool',
}),
({ answerCbQuery }) => answerCbQuery('Hello')
);
bot.action(
greetingCD.filter({
type: 'modern',
}),
({ answerCbQuery }) => answerCbQuery('Yo')
);
bot.launch();
There's some more complex examples: counter and menu.
API Usage Example
exampleCallbackData = new CallbackData(
'namespace-prefix',
['id', 'action' ]
);
const callbackData = exampleCallbackData.new({
id: '1337',
action: 'show',
});
console.log(callbackData);
const parsedCallbackData = exampleCallbackData.parse(callbackData);
console.log(parsedCallbackData);
const regexpCallbackDataFilter = exampleCallbackData.filter({
action: 'show',
});
console.log(regexpCallbackDataFilter);
Credits
Thanks to @JrooTJunior, author of AIOGram! This library highly inspired by alternative feature in aiogram framework.