Погода 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, "Такого города не существует.")