@danilst89
Начинающий программист

После ввода неправильного названия в бота погоды на pythone, выскакивает ошибка,что с этим делать?

После ввода неправильного названия города, бот прекращает свою работу, что с этим делать? Буду крайне благодарен за помощь

import pyowm
import telebot

owm = pyowm.OWM('***********', language = "ru")
bot = telebot.TeleBot("***************")

@bot.message_handler(content_types=['text'])
def send_echo(message):
observation = owm.weather_at_place( message.text )
w = observation.get_weather()
temp = w.get_temperature('celsius')["temp"]
hum = w.get_humidity()
time = w.get_reference_time(timeformat='iso')
wind = w.get_wind()["speed"]

answer ="В городе " + message.text + " сейчас " + w.get_detailed_status() + "\n"
answer += "Температура сейчас в районе " + str(temp) + "\n\n" + "\nСкорость ветра: " + str(wind) + "м/с" + "\n" + "\nВлажность: " + str(hum) + "%" + "\n" + "\nВремя: " + str(time) + "\n"

if temp < 11:
answer += "Сейчас очень холодно."
elif temp < 20:
answer += "Сейчас прохладно, лучше одеться потеплее."
else:
answer += "Температура в норме!"

bot.send_message(message.chat.id, answer)
bot.polling( none_stop = True)
input()

После ввода неправильного названия выскакивает такая ошибка: raise api_response_error.NotFoundError('Unable to find the resource')
pyowm.exceptions.api_response_error.NotFoundError: The searched item was not found.
Reason: Unable to find the resource
  • Вопрос задан
  • 2531 просмотр
Решения вопроса 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Использовать конструкцию try - except.
Рабочий код:
import telebot
import pyowm

owm = pyowm.OWM('key', language = "ru")
bot = telebot.TeleBot('token')

@bot.message_handler(content_types=['text'])
def send_echo(message):
	try:
		observation = owm.weather_at_place( message.text )
		w = observation.get_weather()
		temp = w.get_temperature('celsius')["temp"]
		hum = w.get_humidity()
		time = w.get_reference_time(timeformat='iso')
		wind = w.get_wind()["speed"]

		answer ="В городе " + message.text + " сейчас " + w.get_detailed_status() + "\n"
		answer += "Температура сейчас в районе " + str(temp) + "\n\n" + "\nСкорость ветра: " + str(wind) + "м/с" + "\n" + "\nВлажность: " + str(hum) + "%" + "\n" + "\nВремя: " + str(time) + "\n"

		if temp < 11:
			answer += "Сейчас очень холодно."
		elif temp < 20:
			answer += "Сейчас прохладно, лучше одеться потеплее."
		else:
			answer += "Температура в норме!"

		bot.send_message(message.chat.id, answer)
	except:
		bot.send_message(message.chat.id,'Ошибка! Город не найден.')
bot.polling( none_stop = True)
input()

5e494983ac97a904403016.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы