MCPcopy Index your code
hub / github.com/yagop/node-telegram-bot-api

github.com/yagop/node-telegram-bot-api @v1.1.2 sqlite

repository ↗ · DeepWiki ↗ · release v1.1.2 ↗
354 symbols 975 edges 32 files 32 documented · 9% 2 cross-repo links
README

Node.js Telegram Bot API

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

Bot API npm package Coverage Status

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

📦 Install

npm i node-telegram-bot-api

🚀 Usage

import TelegramBot from 'node-telegram-bot-api';
// For CommonJS use:
// 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]" - the leading ^ anchors the command to the start of
// the message, so it won't match "/echo" embedded in a URL or mid-sentence.
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');
});

More runnable examples live in the examples/ directory.

🌐 Proxy / custom transport

Requests use the built-in fetch. To route a single bot instance through a proxy (without affecting the rest of the process), pass an undici dispatcher via request.fetchOptions:

import TelegramBot from 'node-telegram-bot-api';
import { ProxyAgent } from 'undici';

const bot = new TelegramBot(token, {
  polling: true,
  request: { fetchOptions: { dispatcher: new ProxyAgent('http://127.0.0.1:8080') } },
});

For full control you can supply your own fetch implementation instead via request.fetch (useful for custom proxying, instrumentation, or tests). Both are scoped to that bot instance, so different bots can use different proxies.

📚 Documentation

Note: Code for the latest release resides on the master branch, and pull requests should target master.

💭 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.
  • @toptl/node-telegram-bot-api: Plugin for TOP.TL, the Telegram directory. Auto-tracks bot stats and enables vote checking.

👥 Contributors

License

The MIT License (MIT)

Copyright © 2019 Yago

Extension points exported contracts — how you extend this code

CapturedRequest (Interface)
(no doc)
test/unit/telegram.test.ts
RequestOptions (Interface)
(no doc)
src/http.ts
BotOptionsBase (Interface)
(no doc)
src/telegram.ts
FileMeta (Interface)
(no doc)
src/utils.ts
TelegramErrorResponse (Interface)
(no doc)
src/errors.ts
PollingOptions (Interface)
(no doc)
src/polling.ts
WebHookOptions (Interface)
(no doc)
src/webhook.ts
DetectedType (Interface)
(no doc)
src/internal/file-type.ts

Core symbols most depended-on inside this repo

_form
called by 159
src/telegram.ts
get
called by 87
examples/express.d.ts
sendMessage
called by 50
src/telegram.ts
stringify
called by 46
src/utils.ts
on
called by 27
src/telegram.ts
prepareFile
called by 19
src/utils.ts
startsWith
called by 16
src/internal/file-type.ts
sendPoll
called by 15
src/telegram.ts

Shape

Method 245
Function 62
Interface 31
Class 16

Languages

TypeScript100%

Modules by API surface

src/telegram.ts220 symbols
scripts/api-parser.ts18 symbols
scripts/api-doc.ts17 symbols
src/polling.ts15 symbols
src/http.ts15 symbols
src/errors.ts14 symbols
examples/express.d.ts11 symbols
src/webhook.ts10 symbols
src/utils.ts8 symbols
test/unit/webhook.test.ts5 symbols
test/unit/http.test.ts4 symbols
test/integration/telegram.test.ts3 symbols

Used by 2 indexed graphs manifest dependencies, hub-wide

Dependencies from manifests, versioned

@types/node25.6.2 · 1×
tsx4.22.3 · 1×
typescript5.7.0 · 1×
zshy0.7.3 · 1×

For agents

$ claude mcp add node-telegram-bot-api \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact