Skip to content

Repository files navigation

TDLib Native

Cross platform TDLib wrapper

Logo

Test StatusDownloadslast commitcodecovGitHubtdlib-nativeKnown Vulnerabilitiesnpmlicense MITSize

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}> */asyncsendMessage(parameters: sendMessage$DirectInput): Promise<Message>
  • 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
    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() and client.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";asyncfunctioninit(){// Loading addonconstadapter=awaitTDLibAddon.create();// Make TDLib shut up. ImmediatelyClient.disableLogs(adapter);constclient=newClient(adapter);constauthenticator=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 hangsawaitPromise.all([client.start(),authenticator.authenticate()]);// client authorized as bot// Call any tdlib methodawaitclient.api.getOption({name: "version"});// => Promise { _: "optionValueString", value: "1.8.37" }// or use a wrapperawaitclient.tdlibOptions.get("version");// => Promise "1.8.22"// Subscribe to updatesclient.updates.subscribe(console.log);// Pause receiving updates. Will freeze method all running API calls// await client.pause();// Resume pause// await client.start();// Destroyawaitclient.api.close({});awaitclient.destroy();}

Usage with RxJS

// Observable will complete after client.destroy() callconstupdates=newObservable(client.updates.toRxObserver());

Projects built with tdlib-native

GuardCore Bot's Avatar
GuardCore Bot
Твоя Статья УК РФ's Avatar
Твоя Статья УК РФ

Add your project

Credits

This package is based on eilvelia/tdl

Licenses:

About

TDLib cross platform API

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

6 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages