node-telegram-bot-api vs telegraf
Telegram Bot Development Comparison
3 Years
node-telegram-bot-apitelegrafSimilar Packages:
What's Telegram Bot Development?

Telegram Bot Development libraries in Node.js provide developers with tools to create bots that can interact with users on the Telegram messaging platform. These libraries offer APIs to send and receive messages, handle user interactions, and integrate with Telegram's features like inline queries, webhooks, and more. They simplify the process of building bots for various purposes, such as automation, customer support, entertainment, and more, by providing easy-to-use interfaces and abstractions over Telegram's Bot API.

Package Weekly Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
node-telegram-bot-api140,893
8,968513 kB129a year agoMIT
telegraf113,856
8,832689 kB73a year agoMIT
Feature Comparison: node-telegram-bot-api vs telegraf

Architecture

  • node-telegram-bot-api:

    node-telegram-bot-api follows a simple and straightforward architecture, allowing developers to quickly set up bots using either polling or webhook methods. It provides a clear and easy-to-understand API for handling messages, commands, and events.

  • telegraf:

    telegraf is built around a middleware architecture, allowing developers to create more complex and scalable bots. This design enables the use of multiple middleware functions to handle different types of events, making it more flexible and powerful for building feature-rich bots.

Middleware Support

  • node-telegram-bot-api:

    node-telegram-bot-api does not have built-in middleware support, but developers can implement their own middleware-like functionality by creating custom handlers for different types of messages and events.

  • telegraf:

    telegraf has first-class middleware support, allowing developers to easily create and use middleware functions to process messages, commands, and other events. This feature makes it easier to organize code and add reusable functionality.

Inline Queries

  • node-telegram-bot-api:

    node-telegram-bot-api supports inline queries, but developers need to implement the handling logic manually. The library provides the necessary methods to send inline query results, but it does not offer any built-in abstractions for managing inline queries.

  • telegraf:

    telegraf provides built-in support for inline queries, making it easier to handle them with less boilerplate code. It offers a more structured way to manage inline queries and send responses, which can simplify the implementation.

File Uploads

  • node-telegram-bot-api:

    node-telegram-bot-api supports file uploads, including photos, videos, documents, and more. Developers can easily send and receive files using the provided methods, and the library handles the necessary API calls.

  • telegraf:

    telegraf also supports file uploads, with additional features for handling files more efficiently. It provides a more modern API for working with file uploads, making it easier to integrate into bots.

Community and Ecosystem

  • node-telegram-bot-api:

    node-telegram-bot-api has a large and active community, with plenty of documentation and examples available. It is a well-established library with a strong user base, making it easy to find support and resources.

  • telegraf:

    telegraf also has a growing community and is known for its modern approach to bot development. It has a rich ecosystem of plugins and middleware, which can help developers extend the functionality of their bots.

Ease of Use: Code Examples

  • node-telegram-bot-api:

    Simple Bot Example with node-telegram-bot-api

    const TelegramBot = require('node-telegram-bot-api');
    const token = 'YOUR_TELEGRAM_BOT_TOKEN';
    const bot = new TelegramBot(token, { polling: true });
    
    bot.on('message', (msg) => {
      const chatId = msg.chat.id;
      bot.sendMessage(chatId, 'Hello, World!');
    });
    
  • telegraf:

    Simple Bot Example with telegraf

    const { Telegraf } = require('telegraf');
    const bot = new Telegraf('YOUR_TELEGRAM_BOT_TOKEN');
    
    bot.on('text', (ctx) => {
      ctx.reply('Hello, World!');
    });
    
    bot.launch();
    
How to Choose: node-telegram-bot-api vs telegraf
  • node-telegram-bot-api:

    Choose node-telegram-bot-api if you need a simple and straightforward library for building Telegram bots with support for both polling and webhooks. It is well-documented and easy to use, making it suitable for beginners and small to medium-sized projects.

  • telegraf:

    Choose telegraf if you need a more feature-rich and modern framework for building Telegram bots. It supports middleware, has a modular architecture, and is designed for scalability, making it ideal for larger projects and bots that require advanced features like inline queries, custom keyboards, and more.

README for node-telegram-bot-api

Node.js Telegram Bot API

Node.js module to interact with the official Telegram Bot API.

Bot API npm package Build Status Coverage Status

https://telegram.me/node_telegram_bot_api https://t.me/+nc3A9Hs1S81mYzdk https://telegram.me/Yago_Perez

📦 Install

npm i node-telegram-bot-api

✍️ Note: If you use Typescript you can install this package that contains type definitions for this library

npm install --save-dev @types/node-telegram-bot-api

🚀 Usage

const TelegramBot = require('node-telegram-bot-api');

// replace the value below with the Telegram token you receive from @BotFather
const token = 'YOUR_TELEGRAM_BOT_TOKEN';

// Create a bot that uses 'polling' to fetch new updates
const bot = new TelegramBot(token, {polling: true});

// Matches "/echo [whatever]"
bot.onText(/\/echo (.+)/, (msg, match) => {
  // 'msg' is the received Message from Telegram
  // 'match' is the result of executing the regexp above on the text content
  // of the message

  const chatId = msg.chat.id;
  const resp = match[1]; // the captured "whatever"

  // send back the matched "whatever" to the chat
  bot.sendMessage(chatId, resp);
});

// Listen for any kind of message. There are different kinds of
// messages.
bot.on('message', (msg) => {
  const chatId = msg.chat.id;

  // send a message to the chat acknowledging receipt of their message
  bot.sendMessage(chatId, 'Received your message');
});

📚 Documentation

Note: Development is done against the development branch. Code for the latest release resides on the master branch. Experimental features reside on the experimental branch.

💭 Community

We thank all the developers in the Open-Source community who continuously take their time and effort in advancing this project. See our list of contributors.

We have a Telegram channel where we post updates on the Project. Head over and subscribe!

We also have a Telegram group to discuss issues related to this library.

Some things built using this library that might interest you:

  • tgfancy: A fancy, higher-level wrapper for Telegram Bot API
  • node-telegram-bot-api-middleware: Middleware for node-telegram-bot-api
  • teleirc: A simple Telegram ↔ IRC gateway
  • bot-brother: Node.js library to help you easily create telegram bots
  • redbot: A Node-RED plugin to create telegram bots visually
  • node-telegram-keyboard-wrapper: A wrapper to improve keyboards structures creation through a more easy-to-see way (supports Inline Keyboards, Reply Keyboard, Remove Keyboard and Force Reply)
  • beetube-bot: A telegram bot for music, videos, movies, EDM tracks, torrent downloads, files and more.
  • telegram-inline-calendar: Date and time picker and inline calendar for Node.js telegram bots.
  • telegram-captcha: Telegram bot to protect Telegram groups from automatic bots.

👥 Contributors

License

The MIT License (MIT)

Copyright © 2019 Yago