bigslycat / tgapi

Actual Telegram bot API JS implementation
https://npmjs.com/tgapi
MIT License
37 stars 6 forks source link

tgapi

Build Status Greenkeeper badge

Actual Telegram bot API JS implementation

Installation

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)