@botol/tg-bot
TypeScript icon, indicating that this package has built-in type declarations

0.0.4 • Public • Published

Botol Telegram Bot

Simple Examples

import { BotolTg } from '@botol/tg-bot';

let bot = new BotolTg('<token>');
bot.on('text', (ctx, next) => {
    ctx.reply('Hello ' + ctx.text);
});
bot.use((ctx, next) => {
    ctx.reply('Enter name');
});
bot.startPolling();

Middlewares

Name Description
Session Adding session to Context
Threads Make bot multithreaded

Events

Pass as first param in on

Name Description
'message' Call when update has param message
'callback_query' Call when update has param callback_query
'text' Call when update has param message.text
'callback_data' Call when update has param callback_query.data

Context

Property Description
telegram TgClient instance with methods
update Received update
message (Optional) Message from update
callback_query (Optional) CallbackQuery from update
chat (Optional) Chat from update
text (Optional) Extracted from message
callbackData (Optional) Extracted from callback_query
chat (Optional) Extracted from one of several params
from (Optional) Extracted from one of several params
Method Arguments Type Description
reply Throw error if the chat property don't exists
text string Text to send
markup Markup or ExtraMarkup (Optional) Extra markup like keyboard or disable preview
answerCbQuery Throw error if the callback_query property don't exists
text string (Optional) Text to send
showAlert boolean (Optional) Show alert

Markup

  • keyboard
        Markup.keyboard(['Option 1', 'Option 2'])
  • inline keyboard
        Markup.inlineKeyboard([
            { text: 'Option 1', callback_data: 'Option1' },
            { text: 'Option 2', callback_data: 'Option2' }
        ])

Examples

Create Middleware

type ContextSystem = {
    getPoints: () => number;
    addPoint: (sum: number) => void;
};
function BotSystem(): Handler<Partial<ContextSystem> & ContextTG> {
    let points = 0;
    return (ctx, next) => {
        ctx.addPoint = (sum) => {
            points += sum;
        };
        ctx.getPoints = () => points;

        return next();
    };
}

Use Middleware

let bot = new BotolTg('<token>');
let botSystem = bot.middleware(BotSystem());

botSystem.on('callback_data', (ctx, next) => {
    switch (ctx.callbackData) {
        case 'show':
            ctx.answerCbQuery(ctx.getPoints().toString());
            return;
        case 'add':
            ctx.addPoint(1);
            ctx.answerCbQuery();
            return;
        case 'sub':
            ctx.addPoint(-1);
            ctx.answerCbQuery();
            return;
    }
    ctx.answerCbQuery();
    return next();
});
botSystem.use((ctx) => {
    ctx.reply(
        `current points: ${ctx.getPoints()}`,
        Markup.inlineKeyboard([
            [
                { text: 'add', callback_data: 'add' },
                { text: 'sub', callback_data: 'sub' },
            ],
            [{ text: 'show', callback_data: 'show' }],
        ]),
    );
});
bot.startPolling();

Readme

Keywords

Package Sidebar

Install

npm i @botol/tg-bot

Weekly Downloads

6

Version

0.0.4

License

MIT

Unpacked Size

7.34 kB

Total Files

9

Last publish

Collaborators

  • botol