New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

telegram-framework

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

telegram-framework

Build scalable telegram bots with NODE.JS

latest
Source
npmnpm
Version
1.0.1
Version published
Maintainers
1
Created
Source

Telegram Framework

Build scalable telegram bots with NODE.JS

Philosophy

Framework handles user message events and identification by itself and provides some functionality called routes similar to web routes we use in browser.

So, in this case we have a bunch of endpoints tha user can navigate. Also, we can easily specify logic behind each endpoint similar to http server apps with express.

Setup

Set up project with create-telegram-app

Usage

Create Bot instance

const { Bot } = require('telegram-framework');
const bot = new Bot(<TELEGRAM_TOKEN>, <STORAGE>, <OPTIONS>);

// TELEGRAM_TOKEN   -> bot token you get from @BotFather
// STORAGE          -> Any javascript object that implements method 'async Get' (returns user data by id) and 'async Set' (set user data to database)
// OPTIONS          -> Constructor options: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/node-telegram-bot-api/index.d.ts#L100

Create and register routers

// main.router.js
const { Router } = require('telegram-framework');

const main = new Router();

main.on(<path>, (reqeust, response) => {
    // ...code
});
module.exports = main;
// index.js
const main = require('/path/main.router.js');
// ... bot init

bot.use(<prefix>, main);
const main = new Router();

main.on("/", (req, res) => {
    // fires when user location: '/'
});

main.on("/foo", (req, res) => {
    // fires when user location: '/foo'
});

main.on("/menu/*", (req, res) => {
    // fires when user location: '/menu/and no matter what text is placed here'
    // req.body = 'and no matter what text is placed here'
});

main.on("/user/:id", (req, res) => {
    // fires when user location: '/user/and no matter what text is placed here'
    // req.body.id = 'and no matter what text is placed here'
});

Middlewares

const main = new Router();
const middleware = (req, res, next) => {
    if (req.message.from.id % 2 === 0) next(); // pass next if userId % 2 === 0
    res.message("No luck :(");
}
main.on("/", middleware, (req, res) => {
    res.reply("Lucky one!");
});

Router middlewares

const main = new Router();

main.useMiddleware((req, res, next) => {
    console.log(`User ${req.message.chat.id} -> ${req.message.text}`) // logger fires every time any route in router is triggered
    next();
})

Handle user input

const main = new Router();

main.on('/', (req, res) => {
    const msg = req.message.text;
    switch (msg) {
        case "Hi!":
        case "Hello!":    
            res.message("Hello");
            break;
        case "Bye!":    
            res.message("See you");
            break;
        default:
            res.message("...");
    }
})

// OR

main.on('/', (req, res) => {
    req.match(
        "Hi!",
        "Hello!",
        () => res.message("Hello"),
        "Bye!",
        () => res.message("See you"),
        "default",
        () => res.message("...")
    
    )
})

Routing

const main = new Router();

main.on('/', (req, res) => {
    res.push('there');
})
main.on('/there', (req, res) => {
    res.redirect('/home');
})

main.on('/404', (req, res) => {
    res.pushBack();
})

Keyboard

const { ReplyKeyboard } = require('telegram-framework');
const main = new Router();


const buttons = [
    ["Home", "User"],
    ["About Us", "Help"]
];

const keyboard = new ReplyKeyboard(buttons);

main.on('/', (req, res) => {
    res.push('Menu:', keyboard);
})

Keywords

telegram

FAQs

Package last updated on 20 Mar 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts