@thewayofmagic

Как отправить пользователю вопрос и получив на него ответ записать его в переменную?

Библиотека node-telegram-bot-api
spoiler
Нерабочий код:


bot.on('callback_query', async (query) => {
  const chatId = query.message.chat.id
  if(query.data === 'createBTCcheque') {
    await bot.sendMessage(chatId, `На какую сумму вы хотите создать чек?`)
    const sumCheque = query.message.text
      const numberCheque = generationBTCcheque(20)
    cheque.push({
      number: numberCheque,
      sum: sumCheque,
      owner: query.message.chat.id
    })
    bot.sendMessage(chatId, `Чек на сумму ` + sumCheque + ` успешно создан:\n\nt.me/TeleBotOnJs_bot?start=` + numberCheque)
  }
  return
});
  • Вопрос задан
  • 349 просмотров
Решения вопроса 1
alexk111
@alexk111
Автор Ботодрома (автоматизация Telegram, VK и др.)
В приведенном коде по получению оповещения о нажатой кнопке с `createBTCcheque` происходит отправка сообщения `На какую сумму вы хотите создать чек?` и тут же идет попытка получить данные сообщения, которого нет.

Во-первых, нужно запоминать состояние пользователя (сохранять где-то, что юзер находится на таком-то шаге). В данном случае с отправкой сообщения о вводе суммы запоминать, что юзер находится на шаге ввода суммы.

Во-вторых, все то, что идет у вас за отправкой сообщения с вопросом, нужно увести из блока, слушающего нажатие кнопки, в прослушивание отправляемых сообщений. Там проверить, что юзер на шаге ввода суммы, и далее извлекать сумму, вкидывать в `cheque` и отправлять следующее сообщение. И зафиксировать, что юзер ушел на другой шаг.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы