tga

tgapi

Actual Telegram bot API JS implementation

Showing:

Popularity

Downloads/wk

63

GitHub Stars

36

Maintenance

Last Commit

2yrs ago

Contributors

7

Package

Dependencies

5

Size (min+gzip)

14.0KB

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

tgapi

Build Status Greenkeeper badge

Actual Telegram bot API JS implementation

Installation

  • npm: npm install --save tgapi
  • yarn: yarn add tgapi

Usage

Calling bot API methods

In order to send requests to API, we need to create the Bot instance. The Bot is an object that contains all bot API methods. Each bot API method returns a promise, on successful execution of which the result will be the response object of the API server described in the documentation.

In this example, we call getMe and sendPhoto methods:

const { Bot } = require('tgapi')
const fs = require('fs')

const bot = new Bot('<your bot token>')

bot
  .getMe()
  .then(console.log)

  // { ok: true,
  //   result: {
  //     id: 12345,
  //     is_bot: true,
  //     first_name: "My awesome bot",
  //     username: "myawesomebot" } }

const chat_id = 100500
const photo = fs.createReadStream('./path/to/photo.jpg')

bot
  .sendPhoto({ chat_id, photo })
  .then(console.log)

  // { ok: true, result: { Message object } }

bot
  .sendPhoto({
    chat_id,
    photo: fs.createReadStream('./path/to/photo.jpg'),
  })
  .then(console.log)

  // { ok: true, result: { Message object } }

Etc. for all other methods.

Serializable method parameters

Telegram requires serializing some parameters of methods. You do not need to do this, because this is done automatically.

Working with updates

As EventEmitter

// All options are optioal
const polling = bot.polling({
  limit: 50,
  timeout: 60,
  allowedUpdates: [ ... ],
})

polling.on('update', update => { ... })
polling.on('message', message => { ... })
polling.on('error', error => { ... })

As Observable stream

const { from } = require('most')

const updates$ = from(polling)

const messages$ = updates$
  .map(update => update.message)
  .filter(Boolean)

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100