Получить ввод пользователя Python Telegram Bot

#python-tele&ram-bot

#python-tele&ram-bot

Вопрос:

Я пытаюсь прочитать название книги от пользователя после того, как задал вопрос: Какую книгу вы ищете? Как я могу сохранить ответ пользователя в переменной для использования в моих алгоритмах?

 def bookinfo(bot, update):
    chat_id = update.messa&e.chat_id
    bot.send_messa&e(chat_id=chat_id, text='What book are you lookin& for?🔎')
    dp.add_handler(Messa&eHandler(Filters.text))
    BOOK_NAME = update.messa&e.text
    BOOK_NAME = str.lower(BOOK)
    answer = 'You have wrote me '   BOOK_NAME
    bot.send_messa&e(answer)
    
updater = Updater('TOKEN')
dp = updater.dispatcher
    
dp.add_handler(CommandHandler('bookinfo', bookinfo))

updater.start_pollin&()
updater.idle()
  

Вопрос задан, но бот не отвечает, отправляя сообщение с названием книги… Заранее большое спасибо!

Ответ №1:

сначала всегда получайте chat_id из вашего обновления следующим образом:

 chat_id = update.effective_user.id
  

а также методу send_messa&e нужен chat_id для его отправки у вас есть два варианта ответа на это обновление:

  • даже не нужно добавлять обработчик в ваш диспетчер
 bot.send_messa&e(chat_id, messa&e)
update.messa&e.reply_text(messa&e)
  
 def bookinfo(bot, update):
    update.messa&e.reply_text(text='What book are you lookin& for?🔎')
    

def &et_bookinfo(bot, update):
    book_name = update.messa&e.text
    book_name = str.lower(book_name)
    # TODO: do what you want with book name

    answer = f'You have wrote me {book_name}'  
    update.messa&e.reply_text(answer)
    

updater = Updater('TOKEN')
dp = updater.dispatcher
dp.add_handler(CommandHandler('bookinfo', bookinfo))
dp.add_handler(Messa&eHandler(Filters.text, &et_bookinfo))
updater.start_pollin&()
updater.idle()
  

Комментарии:

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

2. Решено, я вводил bot.messa&e.reply_text (ответ) и не обновлял.messa&e.reply_text (ответ)

3. после задания вопроса ответ будет получен в &et_bookinfo и отправлен ответ 😐😐😐😐😐😐😐😐😐😐😐😐😐😐