Fix promises getting rejected silently - Thanks to @joepie91
Fix bot not working properly in groups Fix bot not answering properly Bump to version 0.2.2
This commit is contained in:
@ -47,7 +47,7 @@ function fetch(path, data) {
|
||||
req.write(post);
|
||||
}
|
||||
req.end();
|
||||
});
|
||||
})['catch'](console.error);
|
||||
}
|
||||
|
||||
module.exports = exports['default'];
|
||||
|
@ -30,6 +30,10 @@ var DEFAULTS = {
|
||||
}
|
||||
};
|
||||
|
||||
process.on('uncaughtException', function (err) {
|
||||
console.error(err.stack);
|
||||
});
|
||||
|
||||
/**
|
||||
* Bot class used to connect to a new bot
|
||||
* Bots have an api property which gives access to all Telegram API methods,
|
||||
@ -83,12 +87,12 @@ var Bot = (function (_EventEmitter) {
|
||||
var poll = (function () {
|
||||
var _this = this;
|
||||
|
||||
this.api.getUpdates(this.update).then(function (response) {
|
||||
setTimeout(poll, _this.update.timeout * 1000);
|
||||
return this.api.getUpdates(this.update).then(function (response) {
|
||||
var again = wait(_this.update.timeout * 1000).then(poll);
|
||||
|
||||
var result = response.result;
|
||||
if (!result.length) {
|
||||
return;
|
||||
return again;
|
||||
}
|
||||
|
||||
if (!_this.update.offset) {
|
||||
@ -99,6 +103,8 @@ var Bot = (function (_EventEmitter) {
|
||||
_this.update.offset += 1;
|
||||
}
|
||||
|
||||
_this.emit('update', result);
|
||||
|
||||
result.forEach(function (res) {
|
||||
var text = res.message.text;
|
||||
if (text.startsWith('/')) {
|
||||
@ -111,16 +117,20 @@ var Bot = (function (_EventEmitter) {
|
||||
var pattern = _ref.pattern;
|
||||
return pattern.test(text);
|
||||
});
|
||||
|
||||
if (!ev) {
|
||||
return;
|
||||
}
|
||||
ev.listener(res.message);
|
||||
});
|
||||
|
||||
_this.emit('update', result);
|
||||
return again;
|
||||
});
|
||||
}).bind(this);
|
||||
|
||||
return this.api.getMe().then(function (response) {
|
||||
_this2.info = response.result;
|
||||
poll();
|
||||
return poll();
|
||||
});
|
||||
}
|
||||
}, {
|
||||
@ -174,7 +184,7 @@ var Bot = (function (_EventEmitter) {
|
||||
* @return {unknown} returns the result of calling message's send method
|
||||
*/
|
||||
value: function send(message) {
|
||||
return message.send(this);
|
||||
return message.send(this)['catch'](console.error);
|
||||
}
|
||||
}]);
|
||||
|
||||
@ -182,4 +192,10 @@ var Bot = (function (_EventEmitter) {
|
||||
})(_events.EventEmitter);
|
||||
|
||||
exports['default'] = Bot;
|
||||
|
||||
var wait = function wait(miliseconds) {
|
||||
return new Promise(function (resolve) {
|
||||
setTimeout(resolve, miliseconds);
|
||||
});
|
||||
};
|
||||
module.exports = exports['default'];
|
||||
|
@ -134,20 +134,21 @@ var Message = (function (_Base) {
|
||||
|
||||
// if in a group, there will be a reply to this message
|
||||
if (chat < 0) {
|
||||
return message.chat.id === chat && message.reply_to_message.message_id === messageId;
|
||||
return message.chat.id === chat && message.reply_to_message && message.reply_to_message.message_id === messageId;
|
||||
} else {
|
||||
return message.chat.id === chat;
|
||||
}
|
||||
});
|
||||
|
||||
if (update) {
|
||||
resolve(update);
|
||||
this.emit('message:answer', update);
|
||||
resolve(update.message);
|
||||
|
||||
this.emit('message:answer', update.message);
|
||||
|
||||
bot.removeListener('update', listener);
|
||||
}
|
||||
});
|
||||
});
|
||||
})['catch'](console.error);
|
||||
}
|
||||
}]);
|
||||
|
||||
|
@ -42,8 +42,10 @@ var Question = (function (_Message) {
|
||||
|
||||
_get(Object.getPrototypeOf(Question.prototype), 'constructor', this).call(this, options);
|
||||
|
||||
var kb = new _Keyboard2['default']().force().oneTime().selective().keys(this.properties.answers);
|
||||
var kb = new _Keyboard2['default']().force().oneTime().selective();
|
||||
this.keyboard(kb);
|
||||
|
||||
this.answers(options.answers);
|
||||
}
|
||||
|
||||
_inherits(Question, _Message);
|
||||
@ -58,7 +60,7 @@ var Question = (function (_Message) {
|
||||
* @return {object} returns the question object
|
||||
*/
|
||||
value: function answers(_answers) {
|
||||
this.answers = _answers;
|
||||
this._answers = _answers;
|
||||
this._keyboard.keys(_answers);
|
||||
return this;
|
||||
}
|
||||
@ -77,29 +79,27 @@ var Question = (function (_Message) {
|
||||
value: function send(bot) {
|
||||
var _this = this;
|
||||
|
||||
var answers = this.answers;
|
||||
var answers = this._answers;
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
_get(Object.getPrototypeOf(Question.prototype), 'send', _this).call(_this, bot).then(function (message) {
|
||||
var answer = undefined;
|
||||
return _get(Object.getPrototypeOf(Question.prototype), 'send', this).call(this, bot).then(function (message) {
|
||||
var answer = undefined;
|
||||
|
||||
answers.forEach(function find(a) {
|
||||
if (Array.isArray(a)) {
|
||||
a.forEach(find);
|
||||
}
|
||||
if (a === message.text) {
|
||||
answer = a;
|
||||
}
|
||||
});
|
||||
|
||||
if (answer) {
|
||||
resolve(answer, update);
|
||||
_this.emit('question:answer', answer, update);
|
||||
} else {
|
||||
reject(update);
|
||||
_this.emit('question:invalid', update);
|
||||
answers.forEach(function find(a) {
|
||||
if (Array.isArray(a)) {
|
||||
a.forEach(find);
|
||||
}
|
||||
if (a === message.text) {
|
||||
answer = a;
|
||||
}
|
||||
});
|
||||
|
||||
if (answer) {
|
||||
_this.emit('question:answer', answer, message);
|
||||
return message;
|
||||
} else {
|
||||
_this.emit('question:invalid', message);
|
||||
throw update;
|
||||
}
|
||||
});
|
||||
}
|
||||
}]);
|
||||
|
Reference in New Issue
Block a user