Куда вставить код чтобы телеграм бот не падал после неправильного введение
Я написал телеграм бота отвечающего за погоду, но проблема в том что он каждый раз падает после неправильного введение города. Вот код который по идее должен исправить эту ошибку:
try:
observation = mgr.weather_at_place( message.text )
w = observation.weather
temp = w.temperature('celsius')["temp"]
except NotFoundError:
answer = "город не найден!"
А вот сам код:
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('abcd1234', config_dict)
import telebot
owm = pyowm.OWM('abcd1234')
mgr = owm.weather_manager()
bot = telebot.TeleBot("123:ABC123")
@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)
И теперь вопрос в том что, куда именно необходимо вставить код исправляющий ошибку. И да я совсем чайник, только начинаю обучение языкам
Ответы (1 шт):
Автор решения: Вадим Александру
→ Ссылка
Можно так:
@bot.message_handler(content_types=['text'])
def send_echo(message):
try:
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 += "Температура найс, одевайся как хош"
except NotFoundError:
answer = "город не найден!"
bot.send_message(message.chat.id, answer)
bot.polling( none_stop = True)