Телеграм бот отвечающий за погоду падает после неправильного введение города
Телеграм бот отвечающий за погоду падает после неправильного введение города. Что нужно написать чтобы он не падал а отвечал что город введен неправильно? Вот такая ошибка выходит:
ERROR - TeleBot: "NotFoundError occurred, args=('Unable to find the resource',)
вот сам код:
import pyowm
from pyowm.owm import OWM
from pyowm.utils.config import get_default_config
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = OWM('489f45987eb92460dc4955babb3bbeec', config_dict)
import telebot
owm = pyowm.OWM('489f45987eb92460dc4955babb3bbeec')
mgr = owm.weather_manager()
bot = telebot.TeleBot("1317148098:AAFoaJ5MVh-Q6Y2c2fCpRL496CbivpersAg")
@bot.message_handler(content_types=['text'])
def send_echo(message):
observation = mgr.weather_at_place( message.text )
w = observation.weather
temp = w.temperature('celsius')["temp"]
answer = f"В городе {message.text} сейчас {w.detailed_status}\n"
answer += " Температура сейчас примерно градусов "+ str(temp) + "\n\n"
if temp < 10:
answer += "Сейчас жестко холодно, куртку одевай ежже"
elif temp < 20:
answer += "Сейчас прохладно, оденься потеплее"
else:
answer += "Температура найс, одевайся как хош"
bot.send_message(message.chat.id, answer)
bot.polling( none_stop = True)
Ответы (2 шт):
Автор решения: vanynyny
→ Ссылка
добавь это в функцию:
try:
observation = mgr.weather_at_place( message.text )
w = observation.weather
temp = w.temperature('celsius')["temp"]
except NotFoundError:
answer = "город не найден!"
Автор решения: Jogim
→ Ссылка
Ваш бот ловит исключение NotFoundError при введении неправильного либо несуществующего города, поэтому Вам можно попробывать конструкцию с try и except для ловли подобного рода проблем, как у пользователя давшего ответ ниже.
Также можно добавить конструкцию с while которая будет спрашивать у пользователя повторное введение города, до того момента, пока город не будет верный. К примеру:
while True:
try:
observation = mgr.weather_at_place(message.text)
w = observation.weather
temp = w.temperature('celsius')["temp"]
break
# Если всё верно и исключение не возникает, цикл завершается и продолжается работа.
except NotFoundError:
# Запрос на введение города.