Skip to content
This repository was archived by the owner on Nov 18, 2019. It is now read-only.
graddotdevPublic archive

About

Lightweight node.js module for easier use telegram bot platform.

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Latest commit

 

History

72 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

npm npm npm npm npm

Getting Started with BotFather

Installing BotFather

$ cd MyBot
$ npm install botfather --save

Using BotFather

// We recommend storing the token as environment variable.
const TOKEN = process.env.TOKEN

const BotFather = require('botfather')
const bf = new BotFather(TOKEN)

Example #1 (Getting basic information about the bot)

bf.api('getMe')
  .then(json => {
    if(json.ok) {
      return json.result
    }
    console.error(json.description)
  })
  .then(bot => {
    console.info(`Your bot is @${bot.username}, right? :)`)
  })
  .catch(exception => {
    console.error(exception.stack)
  })

Example #2 (Sending file)

const fs = require("fs");
// ...
bf.api("sendDocument", {
  chat_id: CHAT_ID,
  document: fs.createReadStream(PATH_TO_FILE)
})
  .then(json => {
    if(json.ok) {
      return json.result
    }
    console.error(json.description)
  })
  .then(result => {
    console.info(result)
  })
  .catch(exception => {
    console.error(exception.stack)
  })

Example #3 (Extending your own class)

class MyBot extends BotFather {

  /**
   * @param {string} token
   * @see https://core.telegram.org/bots#6-botfather
   */
  constructor(token) {
    super(token)
    this.api('getMe')
      .then(json => {
        if(json.ok) {
          return json.result
        }
        console.error(json.description)
      })
      .then(bot => {
        console.info(`Your bot is @${bot.username}, right? :)`)
      })
      .catch(exception => {
        console.error(exception.stack)
      })
  }
}

new MyBot(TOKEN)

Example #4 (Getting updates recursively)

class MyBot extends BotFather {

  /**
   * @constructor
   * @param {string} token
   * @see https://core.telegram.org/bots#6-botfather
   */
  constructor(token) {
    super(token)
    this.getUpdates()
  }

  /**
   * @param {Object} parameters
   * @see https://core.telegram.org/bots/api#getupdates
   */
  getUpdates(parameters = {limit: 100, timeout: 60 * 2}) {
    this.api('getUpdates', parameters)
      .then(json => {
        if(json.ok) {
          return json.result
        }
        console.error(json.description)
        setTimeout(() => this.getUpdates(parameters), 5000)
      })
      .then(updates => {
        for(let update of updates) {
          this.onReceiveUpdate(update)
        }
        // offset = update_id of last processed update + 1
        if(updates.length > 0) {
          const identifiers = updates.map((update) => update.update_id)
          parameters.offset = Math.max.apply(Math, identifiers) + 1
        }
        this.getUpdates(parameters)
      })
      .catch(exception => {
        console.error(exception.stack)
        setTimeout(() => this.getUpdates(parameters), 5000)
      })
  }

  /**
   * @param {Object} update
   * @see https://core.telegram.org/bots/api#update
   */
   onReceiveUpdate(update) {
     console.log(update)
   }
}

new MyBot(TOKEN)

About

Lightweight node.js module for easier use telegram bot platform.

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages