Strict typed library to create Telegram apps with Typescript/JavaScript (based on TDLib 1.8)


Keywords
javascript, tdlib, tdweb, telegram, typescript
License
GPL-3.0
Install
npm install @airgram-dev/store@0.2.0-next.8

Documentation

Airgram

This is a wrapper for Telegram Database library written in TypeScript.

Airgram

  • Code style. TDLib follows a different coding convention than best practices in TypeScript or JavaScript. Airgram fixes it.
  • Methods. Each API method has convenient wrapper with description and JSDoc documentation.
  • Type checking. Airgram is a true TypeScript library. Everything has strict typings, so take full advantage of type checking and code completion.
  • Flexibility. Airgram relies on middleware. This gives a high degree of freedom. You can modify requests, save responses, perform any actions in the data flow.
  • Data models. You can extend standard TDLib objects and add some computed properties or whatever you want.
  • Use everywhere. Airgram is an environment agnostic library. It will work in the browser as well as in Node.js. You can write Telegram client or use it for a Telegram bot backend.

NPM Version TDLib js-standard-style NPM

Installation

Node.js

  1. Build TDLib library according the instruction.
  2. Install node-gyp
  3. Install Airgram:
# TDLib 1.8.0:
npm install airgram

# TDLib 1.7.2:
npm install airgram@tdlib-1.7.2

Web

# TDLib 1.8.0:
npm install @airgram/web

# TDLib 1.7.2:
npm install @airgram/web@tdlib-1.7.2

Check out webpack config example.

Getting started

import { Airgram, Auth, prompt, toObject } from 'airgram'

const airgram = new Airgram({
  apiId: process.env.APP_ID,
  apiHash: process.env.APP_HASH
})

airgram.use(new Auth({
  code: () => prompt(`Please enter the secret code:\n`),
  phoneNumber: () => prompt(`Please enter your phone number:\n`)
}))

void (async () => {
  const me = toObject(await airgram.api.getMe())
  console.log(`[me]`, me)
})

// Getting all updates
airgram.use((ctx, next) => {
  if ('update' in ctx) {
    console.log(`[all updates][${ctx._}]`, JSON.stringify(ctx.update))
  }
  return next()
})

// Getting new messages
airgram.on('updateNewMessage', async ({ update }, next) => {
  const { message } = update
  console.log('[new message]', message)
  return next()
})

Documentation

Guides and API-reference are available here.

Old version

If you are interested in v1.*, follow to corresponding branch.

License

The source code is licensed under GPL v3. License is available here.