tdlib-native
v3.2.0
Published
๐ Telegram TDLib native nodejs wrapper
Downloads
147
Maintainers
Readme
TDLib Native
Cross platform TDLib wrapper
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. - Better DX. Easy, well documented API. Instant type completion
/** * Sends a message. Returns the sent message * * @throws {TDError} * @param {sendMessage$DirectInput} parameters {@link sendMessage$Input} * @returns {Promise<Message>} Promise<{@link Message}> */ async sendMessage(parameters: sendMessage$DirectInput): Promise<Message>
- Secure.
- Only 3 dependencies:
node-addon-api
,debug
,detect-libc
- Built on CI with provenance
- Only 3 dependencies:
- Multi-Platform. Supported platforms:
- Linux: x64, arm64 (glibc, musl)
- Android: arm64 (glibc, musl)
- MacOS: x64, Apple Silicon (arm64)
- Windows: x64, x32
๐ฆ Installation
- Using
npm
npm i tdlib-native
- Using
Yarn
yarn add tdlib-native
- Using
pnpm
pnpm add tdlib-native
3.0 Changelog
- Made builds for linux arm64
- Made builds for musl libc
- Made builds for windows x32 (since tg desktop supports it)
- Fixed client thread safety, fixed disposal of tdlib clients
- Made
client.start()
,client.pause()
andclient.destroy()
- async - Upgraded TDLib to 1.8.37
โ๏ธ 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.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
// And authenticate bot
// THIS SHOULD BE USED via Promise.all
// OR ELSE .authenticate() skips an update and hangs
await Promise.all([
client.start(),
authenticator.authenticate()
]);
// client authorized as bot
// Call any tdlib method
await client.api.getOption({ name: "version" });
// => Promise { _: "optionValueString", value: "1.8.37" }
// 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
// await client.pause();
// Resume pause
// await client.start();
// Destroy
await client.api.close({});
await client.destroy();
}
Usage with RxJS
// Observable will complete after client.destroy() call
const updates = new Observable(client.updates.toRxObserver());
Projects built with tdlib-native
Credits
This package is based on eilvelia/tdl
Licenses:
- C++ addon - MIT
- Ci pipeline - Blue Oak Model License 1.0.0