Как в TeleBot добавить переменную с написанным текстом от пользователя после Inline Keyboard
Делаю бота для Telegram, чтобы узнать погоду.
elif message.text == 'Узнать погоду ⛅️':
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("Санкт-Петербург", callback_data='spb')
item2 = types.InlineKeyboardButton("Москва", callback_data='msc')
item3 = types.InlineKeyboardButton("Другой город", callback_data='oth')
markup.add(item1, item2, item3)
Тут добавил InlineKeyboard, человек выбирает СПБ, МСК, или другой город, который сам должен написать боту. Погоду достаю из PyOWM и для СПБ, МСК легко все получилось.
elif call.data == 'oth':
bot.send_message(call.message.chat.id, "Хорошо, напиши город, о котором хочешь узнать. ⛅️")
observation = mgr.weather_at_place(town.text)
w = observation.weather
sky123 = w.detailed_status
sky = translator.translate(sky123, dest = "ru")
temp = w.temperature('celsius')['temp']
tempma = w.temperature('celsius')['temp_max']
tempmi = w.temperature('celsius')['temp_min']
wind = w.wind()['speed']
answer = "В городе "+ town.text + " сейчас " + sky.text + "\n"
answer = answer + 'Температура в районе: ' + str(temp) + '°C' + "\n"
answer += "Самая высокая температура за сегодня: " + str(tempma)+'°C\n'
answer += "Самая низкая температура за сегодня: " + str(tempmi)+'°C\n'
answer += "Скорость ветра: " + str(wind) + " м/с\n"
answer += "Влажность: " + str(w.humidity) + "\n\n"
bot.send_message(town.chat.id, answer)
В этой части кода после нажимания Inline кнопки "Другой город" бот отвечает, все работает, но когда я пишу например Екатеринбург то ничего не происходит. Как мне сделать так, чтобы после нажимания кнопки "Другой город", я мог ввести город и узнать погоду?

Ответы (1 шт):
Нужно через @bot.message_handler(content_types=["text"]) сохранить message.text в переменную. Чтобы убедиться, что это точно город, можно сделать массив с городами и добавить дополнительные условия к обработчику текстовых сообщений