Есть ли лучший способ для NodeJ получать обновления от бота Telegram? - PullRequest
0 голосов
/ 10 мая 2018

Я использую просто, как показано ниже:

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-вызов к API getUpdates

1 Ответ

0 голосов
/ 10 мая 2018

Telegram поддерживает опросы или веб-хуки, поэтому вы можете использовать последние, чтобы избежать опроса getUpdates API

Получение обновлений

Существует два взаимоисключающих способа получения обновлений для вашего bot - метод getUpdates с одной стороны и Webhooks с другой. Входящие обновления хранятся на сервере, пока их не получит бот в любом случае, но они не будут храниться дольше 24 часов.

Независимо от того, какую опцию вы выберете, вы получите в результате JSON-сериализованные объекты обновления.

Подробнее о: https://core.telegram.org/bots/api#getting-updates


Вы можете использовать telegraf , чтобы легко настроить webhook или для обработки запроса с помощью отличного API

...