NodeJs有更好的方法从Telegram机器人获取更新吗?

时间:2018-05-10 15:01:33

标签: node.js telegram telegram-bot

我的使用方式如下:

class Bot {
   constructor(token) {
     let _baseApiURL = `https://api.telegram.org`;
     //code here
   }

   getAPI(apiName) {
    return axios.get(`${this.getApiURL()}/${apiName}`);
   }

   getApiURL() {
     return `${this.getBaseApiUrl()}/bot${this.getToken()}`;
   }

   getUpdates(fn) {
        this.getAPI('getUpdates')
            .then(res => {
                this.storeUpdates(res.data);
                fn(res.data);
                setTimeout(() => {
                    this.getUpdates(fn);
                }, 1000);
            })
            .catch(err => {
                console.log('::: ERROR :::', err);
            });
    }
}
const bot = new Bot('mytoken');
bot.start(); 

我想知道是否有更好的方式来收听Telegram的更新,而不是使用超时和重做Ajax调用来获取' getUpdates' API

1 个答案:

答案 0 :(得分:1)

Telegram支持轮询或webhook,因此您可以使用后者来避免轮询getUpdates API

获取更新

  

有两种互斥方式可以接收您的更新   bot - 一方面是getUpdates方法,另一方面是Webhooks。   传入的更新存储在服务器上,直到机器人收到它们   无论哪种方式,但不会超过24小时。

无论选择哪个选项,您都会收到JSON序列化的Update对象。

有关详情:https://core.telegram.org/bots/api#getting-updates

您可以使用telegraf轻松设置webhook或使用优秀的API处理轮询