как обработать ошибку в телеграмм боте?(python)
Написал телеграмм бота, код прилагаю. Когда пишешь ему какую-то лабуду а не город/страну, он выдает ошибку(в консоли а не в боте) и приходится перезагружать бота.
Помогите решить, пожалуйста.
import telebot
import pyowm
owm = pyowm.OWM('Условный токен', language="ru")
bot = telebot.TeleBot("Условный токен")
from telebot import apihelper
apihelper.proxy = {
'https': 'socks5h://geek:[email protected]:7777', # Замените на данные своего proxy
}
@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"]
answer = "В городе " + message.text + " сейчас " + w.get_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 шт):
Через условие if (обработает только первую абракадабру, на второй - выдаст ошибку) или while (более эффективно, чем if в данном случае, поскольку должно обрабатывать неверные названия до тех пор, пока не встретит верное) в коде дописать надо. То есть:
while type(<переменная, в которую записывается город>) != str: #AND <здесь условие на наличие введёного города в базе>
print('ERROR')
else:...#и тут код, который будет выполняться, если и город найден в базе, и значение адекватное
Насколько я понял, данные о температуре бот будет брать с какого-то сайта, если такой город найден не будет, то тоже будет выдавать ошибку. Операнд AND (И) говорит о том, что для успешного выполнения условия должны выполняться оба условия. Надеюсь, что поможет.