README
Airgram
This is a wrapper for Telegram Database library written in TypeScript.
- 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.
Installation
Node.js
- Build TDLib library according the instruction.
- Install node-gyp
- Install Airgram:
npm install airgram
Web
npm install @airgram/web
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.