как исправить ошибку в pyowm NotFoundError
Тут приведён мой код, который работает нормально.
Выводит города, вроде бы всё нормально, но проблема в том, что бот будет работать корректно, если города будут написаны правильно в ином случае он вы даёт ошибку "NotFoundError"
.
Пробовал, через try, но не помогло(
import telebot
import logging
from pyowm import OWM
from pyowm.utils.config import get_default_config
from pyowm.utils import timestamps
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
owm = OWM('api')
mgr = owm.weather_manager()
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = OWM('api', config_dict)
client = telebot.TeleBot("api")
@client.message_handler(commands=['help'])
def start_bot(message):
help_comm = "Для того чтобы узнать погоду в том или ином городе введите его название.\nВАЖНО пиши названия городов правильно, а то я могу отключиться?"
client.send_message(message.chat.id,help_comm)
@client.message_handler(commands=['start'])
def start_bot(message):
start = f"<b>Добро Пожаловать {message.from_user.first_name}!</b>\n Для того чтобы узнать погоду в том или ином городе введите его название:"
client.send_message(message.chat.id,start,parse_mode='html')
@client.message_handler(content_types=['text'])
def send_answer(message):
try:
observation = mgr.weather_at_place(message.text)
w = observation.weather
except NotFoundError:
mute = ("Хм такого города не существует")
w.wind()
w.humidity
temp = w.temperature('celsius')['temp']
answer = "В городе " + message.text + " сейчас " + w.detailed_status + "\n"
answer += "Температура сейчас " + str(temp) + "°C." + "\n\n"
if temp < -5:
answer += "На улице сильный мороз, одевайся тепло ?"
elif temp < 0:
answer+="На улице мороз, одевайся тепло ?."
elif temp < 10:
answer+="Как-то прохладно, одевайся потеплее ?."
elif temp < 17:
answer+= "Температура приемлимая, но одеться стоит ?."
else:
answer+= "Температура отличная одевайся во что хочешь ?."
client.send_message(message.chat.id,answer)
if __name__ == '__main__':
client.polling( none_stop = True )
try:
observation = mgr.weather_at_place("")
except NotFoundError:
print('error NotfoundError')
mute = ()
Ответы (1 шт):
Автор решения: Эникейщик
→ Ссылка
Блок try..except должен быть в том месте, где возникает ошибка, а не просто в каком-то месте, куда пришлось. В вашем коде он должен быть в функции send_answer(message).