From 896ef4e84cc1d0c897bfd0cfea21a9041b55e1a9 Mon Sep 17 00:00:00 2001 From: Laurynas Karvelis Date: Mon, 24 Dec 2018 11:43:57 +0200 Subject: [PATCH] feature: add event listeners to get answers from Base.send method only when explicitly asked --- src/types/Base.js | 10 +++++++++- src/types/Question.js | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/types/Base.js b/src/types/Base.js index d8ba44d..6e62dd6 100644 --- a/src/types/Base.js +++ b/src/types/Base.js @@ -25,9 +25,10 @@ export default class Base extends EventEmitter { * gets the Update object containing message * * @param {object} bot + * @param {boolean} expectAnswer whether a sent message expects an answer from a contact(s) * @return {Promise} returns a promise, resolved with message:answer */ - send(bot) { + send(bot, expectAnswer = false) { if (this._keyboard) { const replyMarkup = JSON.stringify(this._keyboard.getProperties()); this.properties.reply_markup = replyMarkup; @@ -40,6 +41,11 @@ export default class Base extends EventEmitter { return response.result.message_id; }) .then(messageId => { + if (!expectAnswer) { + // no need to add more event callbacks for the messages that don't need expect an answer + return resolve(); + } + const chat = this.properties.chat_id; let answers = 0; @@ -67,6 +73,8 @@ export default class Base extends EventEmitter { bot.removeListener('update', listener); } }); + + return void 0; }) .catch(reject) .finally(() => { diff --git a/src/types/Question.js b/src/types/Question.js index 93b92ea..51fb69d 100644 --- a/src/types/Question.js +++ b/src/types/Question.js @@ -44,8 +44,9 @@ export default class Question extends Message { */ send(bot) { const answers = this._answers; + const expectAnswer = true; - return super.send(bot).then(message => { + return super.send(bot, expectAnswer).then(message => { let answer; answers.forEach(function find(a) {