Погода pyowm в TelegramBot по нажатию кнопки!

Как в TelegramBot вывести погоду pyowm, чтобы после нажатия на одну из 8 кнопок был запрос города и далее выводились метеоданные. Но чтобы при этом работали и остальные кнопки! Ошибка: UnboundLocalError: local variable 'answer' referenced before assignment Кусок кода на Python:

    elif message.text == 'Метеоданные':
        bot.send_message(message.chat.id, '☑️Введите город для поиска: ')
        try:
            observation = mgr.weather_at_place(message.text)
            w = observation.weather
            oblaka = w.clouds
            temp = w.temperature('celsius')["temp"]
            vlazhnost = w.humidity

            answer = 'В городе ' + message.text + ' сейчас ' + w.detailed_status + '\n'
            answer += 'Температура ' + ' - ' + str(temp) + ' градусов' + '\n'

            if temp < 10:
                answer += 'Сейчас на улице очень холодно.Лучше сиди дома!'
            if temp < 20:
                answer += 'Воздух снаружи холодный.Одевайся теплее!'
            else:
                answer += 'Температура норм.Ходи в чем хочешь!'
        
            bot.send_message(message.chat.id, answer)
        except:
            bot.send_message(message.chat.id, answer)

bot.polling(none_stop = True)


Ответы (1 шт):

Автор решения: farkon00

Вы берёте текст сообщения команды, то есть метеоданные Метеоданные. Воспользуйтесь bot.register_next_step_handler(сообщение с вопросом, функция с кодом внизу)

Этот код надо будет переместить в ту функцию(внимание есть изменение) :

        try:
            observation = mgr.weather_at_place(message.text)
            w = observation.weather
            oblaka = w.clouds
            temp = w.temperature('celsius')["temp"]
            vlazhnost = w.humidity

            answer = 'В городе ' + message.text + ' сейчас ' + w.detailed_status + '\n'
            answer += 'Температура ' + ' - ' + str(temp) + ' градусов' + '\n'

            if temp < 10:
                answer += 'Сейчас на улице очень холодно.Лучше сиди дома!'
            if temp < 20:
                answer += 'Воздух снаружи холодный.Одевайся теплее!'
            else:
                answer += 'Температура норм.Ходи в чем хочешь!'
        
            bot.send_message(message.chat.id, answer)
        except:
            bot.send_message(message.chat.id, "Такого города не существует.")
→ Ссылка