Как отловить реакцию клавиатуры в Telegram - PullRequest
0 голосов
/ 01 июня 2018
bot.onText(/Pizza/, (msg) => {
    bot.sendMessage(msg.chat.id, "OK, " + msg.from.first_name + ". What kind of pizza?", {
        "reply_markup": {
            "keyboard": [["Peperoni", "4 cheese", "Vegetarian", "Tomato"]],
            "resize_keyboard": true
        }
    });
});

bot.onText(/Peperoni/, (msg) => {
    console.log(msg.text);
    if (msg.text === "Peperoni") {
        console.log("Entered IF");
        bot.sendMessage(msg.chat.id, "Peperoni is there " + msg.from.first_name + ".Choose the quantity", {
            "reply_markup": {
                "keyboard": [["1", "2", "3"]],
                "resize_keyboard": true
            }
        })
        console.log(msg.text);
    }
});

Используя узел telegram bot api, мой код выше.Я могу поймать Peperoni, когда пользователь нажимает Peperoni, но как я могу поймать количество, которое я спрашиваю позже.Попытка вставить последний console.log во всех местах, но этого никогда не происходит.Любые идеи, пожалуйста;)

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Все входящие сообщения для бота являются объектами ?:
(text, voice, video и ...)

НапримерВыбранный пользователем : 1

bot.on('message', (msg) => {
  console.log(msg.text);
});

Консольный вывод: // 1

0 голосов
/ 01 июня 2018

Для этого вам нужно сохранить последний запрос пользователя в таблицу базы данных или файл для chat_id, а затем получить количество.Вы можете получить тип пиццы в любое время из таблицы или файла для chat_id

enter image description here

На картинке выше вы можете видеть, что я сохраняю chat_id каждого пользователясделать запрос.Я также сохраняю request_type.В вашем случае вы можете иметь request_value и сохранить значение как pepperoni.Затем в следующем запросе получите счет пиццы 1 и извлеките предыдущее значение из поля request_value для того же chat_id

...