создаю телеграм бота на node js
есть массив с объектами Arr, и функция getRandomObj, которая возвращает из этого массива рандомный объект
по идее, бот выводит сообщение, сразу же должен запускаться таймер
далее человек жмет на кнопку либо готово, либо отмена, взависимости от чего будут применяться дальнейшие действия
bot.onText(/\/go/, function(msg, match) {
var obj= getRandomObj();
id = msg.chat.id;
title = obj.title;
time = obj.time;
var message = title + ' for ' + time/1000/60 + ' mitute.';
var options = {
reply_markup: JSON.stringify({
inline_keyboard: [
[{ text: 'Готово!', callback_data: 'done' }],
[{ text: 'Отменить', callback_data: 'reject' }]
]
})
};
bot.sendMessage(id, message, options);
});
вот только есть проблемка. Куда вставить таймер?
var timerId = setTimeout( function(){
bot.sendMessage(id, 'time is over!');
}, time)
дело в том, что time таймер должен получать из того объекта, который приходит после функции getRandomObj. Из него же и формируется сообщение
Если вставить эту функцию в bot.onText, то все работает, но вот только когда дело доходит до коллбэков, а это:
bot.on('callback_query', function(cb) {
if (cb.data === 'done') {
//тут надо остановить таймер
bot.sendMessage(id, 'done');
} else{
//и тут
bot.sendMessage(id, 'отклонено');
}
});
я не могу передать этой функции timerId, чтоб его остановить
А есть вставлять ее в bot.onText, то таймер хоть и останавливается, но сообщение выводится не один раз, а сначала 1 раз, потом 2, за тем 3 раза и тд
помогите разобраться с этой проблемой и предложить варианты ее решения