Fast. TDLib is a fastest way to interact with Telegram on NodeJS. It's written in C++ with optimized network stack and caching. |
API Type | Package | Method | Time |
---|---|---|---|---|
TDLib |
tdl |
getChat |
21ms | |
Telegram API |
telegram (gram.js) |
messages.getChats |
40ms | |
Telegram Bot API |
telegraf |
getChat |
30ms |
Better DX. Unlike tdl
this package declarations use dictionary for methods instead of intersection type, making editor hints load almost immediate.
Secure. The library has only 1 dependency - node-addon-api
for building TDLib addon (and platform-dependent prebuilt tdlib)
npm
npm i tdlib-native
Yarn
yarn add tdlib-native
pnpm
pnpm add tdlib-native
This is raw wrapper of TDLib
import { Client, Authenticator } from "tdlib-native";
import { TDLibAddon } from "tdlib-native/addon";
async function init() {
// Loading addon
const adapter = await TDLibAddon.create();
// Make TDLib shut up. Immediately
Client.disableLogs(adapter);
const client = new Client(adapter);
const authenticator = Authenticator.create(client)
.tdlibParameters({
/* options */
})
.token(process.env.TELEGRAM_BOT_TOKEN);
// Start polling responses from TDLib
client.start();
await authenticator.authenticate();
// client authorized as bot
// Call any tdlib method
await client.api.getOption({ name: "version" });
// => Promise { _: "optionValueString", value: "1.8.22" }
// or use a wrapper
await client.tdlibOptions.get("version");
// => Promise "1.8.22"
// Subscribe to updates
client.updates.subscribe(console.log);
// Pause receiving updates. Will freeze method all running API calls
// client.pause();
// Resume pause
// client.start();
// Destroy
await client.api.close({});
client.destroy();
}
Usage with RxJS
// Observable will complete after client.destroy() call
const updates = new Observable(client.updates.toRxObserver());