Don't merge yet: Keep on listening to Telegram's updates even if requests with telegram server fail #40

Merged
laurynas-karvelis merged 2 commits from master into master 2018-02-18 17:21:07 +00:00
2 changed files with 33 additions and 19 deletions

View File

@ -1,13 +1,18 @@
export default function poll(bot) {
return bot.api.getUpdates(bot.update).then(response => {
if (!response.result.length) {
return poll(bot);
}
bot.emit('update', response.result);
return bot.api.getUpdates(bot.update)
.then(response => {
if (!response.result.length) {
return poll(bot);
}
bot.emit('update', response.result);
if (bot._stop) {
return null;
}
return poll(bot);
});
if (bot._stop) {
return null;
}
return poll(bot);
})
.catch(e => {
bot.emit('error', e);
return poll(bot);
});
}

View File

@ -75,17 +75,22 @@ export default class Bot extends EventEmitter {
if (hook) {
return webhook(hook, this);
}
return this.api.getMe().then(response => {
this.info = response.result;
return this.api.getMe()
.then(response => {
this.info = response.result;
this.on('update', this._update);
this.on('update', this._update);
if (hook) {
return webhook(hook, this);
}
if (hook) {
return webhook(hook, this);
}
return poll(this);
});
return poll(this);
})
.catch(e => {
this.emit('error', e);
throw e;
});
}
/**
@ -138,7 +143,11 @@ export default class Bot extends EventEmitter {
* @return {unknown} returns the result of calling message's send method
*/
send(message) {
return message.send(this);
return message.send(this)
.catch(e => {
this.emit('error', e);
throw e;
});
}
/**