Здравствуйте, пишу бота на nodeJs, и возник вопрос, как хранить и обрабатывать цепочку сообщений, например пользователь нажимает кнопку собрать машину и я ему задаю выберите цвет, выберите тип и тд. Где правильнее хранить ответ на каждый вопрос и как это всё обрабатывать?
Я сделал вот так, но это как я понимаю совершенно не правильно. Спасибо.
bot.on("callback_query", function (msg) {
if (callback === 'startSearch') {
bot.sendMessage(id, "Первый вопрос: ", {
reply_markup: {
one_time_keyboard: true,
resize_keyboard: true,
keyboard: servises.telegram.keyboard(CITY, 3, false)
}
})
.then(res => {
servises.redis.updateObject(`user_${id}`, [
{
field: 'search',
value: {
level: 'startSearch'
}
}
])
.catch(error => {
console.log(error)
})
bot.answerCallbackQuery({
callback_query_id: msg.id,
text: "Поиск начался",
});
})
}
})
И после когда пользователь пишет сообщение, я смотрю есть ли пометка в редисе что сейчас нужно принять от пользователя какой либо ответ на вопрос
bot.on('message', (msg) => {
const message = msg.text;
if (message === 'roomType') {
if (ROOM_TYPE.indexOf(message) != -1) {
bot.sendMessage(id, "Второй вопрос: ", {
reply_markup: {
resize_keyboard: true,
one_time_keyboard: true,
keyboard: servises.telegram.keyboard(LEASE_TERM, 2, false)
}
})
.then(res => {
user.level = 'leaseTerm';
user.roomType = message;
servises.redis.updateObject(`user_${id}`, [
{
field: 'search',
value: user
}
])
.catch(error => {
console.log(error)
})
})
} else {
bot.sendMessage(id, "Такого варианта нет, выберите из предложеных:")
}
}
})
Может есть примеры реализации?