TDLib Native
Why use this package?
-
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)
๐ฆ Installation
-
Using
npm
npm i tdlib-native
-
Using
Yarn
yarn add tdlib-native
-
Using
pnpm
pnpm add tdlib-native
โ๏ธ Usage
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.execute(adapter, "setLogVerbosityLevel", {
new_verbosity_level: 0
});
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());