2.2.1 • Published 3 months ago

tdlib-native v2.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

TDLib Native

Test Status Downloads last commit codecov GitHub tdlib-native Known Vulnerabilities Quality npm license MIT Size

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());
2.2.1

3 months ago

2.1.0

4 months ago

2.0.0

5 months ago

1.7.0

5 months ago

1.6.0

5 months ago

1.5.0

6 months ago

1.4.0

8 months ago

1.3.3

1 year ago

1.3.2

1 year ago

1.3.1

1 year ago

1.3.0

1 year ago

1.2.7

1 year ago

1.2.6

1 year ago

1.2.5

1 year ago

1.2.4

1 year ago

1.2.3

1 year ago

1.2.2

1 year ago

1.2.1

1 year ago

1.2.0

1 year ago

1.1.2

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago