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:
@ -93,16 +93,18 @@ export default class Message extends Base {
|
||||
const update = result.find(({message}) => {
|
||||
// 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);
|
||||
}
|
||||
|
@ -15,9 +15,10 @@ export default class Question extends Message {
|
||||
constructor(options = {}) {
|
||||
super(options);
|
||||
|
||||
let kb = new Keyboard().force().oneTime().selective()
|
||||
.keys(this.properties.answers);
|
||||
let kb = new Keyboard().force().oneTime().selective();
|
||||
this.keyboard(kb);
|
||||
|
||||
this.answers(options.answers);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -27,7 +28,7 @@ export default class Question extends Message {
|
||||
* @return {object} returns the question object
|
||||
*/
|
||||
answers(answers) {
|
||||
this.answers = answers;
|
||||
this._answers = answers;
|
||||
this._keyboard.keys(answers);
|
||||
return this;
|
||||
}
|
||||
@ -42,29 +43,27 @@ export default class Question extends Message {
|
||||
* rejected in case of invalid answer
|
||||
*/
|
||||
send(bot) {
|
||||
const answers = this.answers;
|
||||
const answers = this._answers;
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
super.send(bot).then(message => {
|
||||
let answer;
|
||||
return super.send(bot).then(message => {
|
||||
let answer;
|
||||
|
||||
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