https://github.com/alexxandergrib/node-tdlib
TDLib cross platform API
https://github.com/alexxandergrib/node-tdlib
tdlib telegram typescript
Last synced: about 1 year ago
JSON representation
TDLib cross platform API
- Host: GitHub
- URL: https://github.com/alexxandergrib/node-tdlib
- Owner: AlexXanderGrib
- License: mit
- Created: 2022-11-23T15:45:20.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-29T08:52:11.000Z (about 1 year ago)
- Last Synced: 2025-04-14T00:13:14.579Z (about 1 year ago)
- Topics: tdlib, telegram, typescript
- Language: TypeScript
- Homepage:
- Size: 814 MB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# TDLib Native
> Cross platform TDLib wrapper

[](https://github.com/AlexXanderGrib/node-tdlib)
[](https://npmjs.com/package/tdlib-native)
[](https://github.com/AlexXanderGrib/node-tdlib)
[](https://codecov.io/gh/AlexXanderGrib/node-tdlib)
[](https://github.com/AlexXanderGrib/node-tdlib)
[](https://snyk.io/advisor/npm-package/tdlib-native)
[](https://snyk.io/test/npm/tdlib-native)
[](https://npmjs.com/package/tdlib-native)
[](https://github.com/AlexXanderGrib/node-tdlib/blob/main/LICENSE.txt)
[](https://bundlephobia.com/package/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.
- **Better DX.** Easy, well documented API. Instant type completion
```typescript
/**
* Sends a message. Returns the sent message
*
* @throws {TDError}
* @param {sendMessage$DirectInput} parameters {@link sendMessage$Input}
* @returns {Promise} Promise<{@link Message}>
*/
async sendMessage(parameters: sendMessage$DirectInput): Promise
```
- **Secure.**
- Only 3 dependencies: `node-addon-api`, `debug`, `detect-libc`
- Built on CI with provenance
- **Multi-Platform.** Supported platforms:
- Linux: x64, arm64 (glibc, musl)
- Android: arm64 (glibc, musl)
- MacOS: x64, Apple Silicon (arm64)
- Windows: x64, x32
## 📦 Installation
- **Using `npm`**
```shell
npm i tdlib-native
```
- **Using `Yarn`**
```shell
yarn add tdlib-native
```
- **Using `pnpm`**
```shell
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()` and `client.destroy()` - async
- Upgraded TDLib to 1.8.37
## ⚙️ Usage
This is raw wrapper of TDLib
```typescript
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**
```typescript
// 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](https://github.com/eilvelia/tdl)
Licenses:
- C++ addon - [MIT](./docs/licenses/addon.license.txt)
- Ci pipeline - [Blue Oak Model License 1.0.0](./docs/licenses/ci.license.md)