tdlib-native
v2.2.1
Published
π Telegram TDLib native nodejs wrapper
Downloads
118
Maintainers
Readme
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());