Node.js module to interact with the official Telegram Bot API.
npm i node-telegram-bot-api
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.
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.
Note: Code for the latest release resides on the master branch, and pull requests should target master.
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:
The MIT License (MIT)
Copyright © 2019 Yago
$ claude mcp add node-telegram-bot-api \
-- python -m otcore.mcp_server <graph>