Как предотвратить вылетание бота?
import pyowm
import telebot
owm = pyowm.OWM('ххххххх', language = "RU")
bot = telebot.TeleBot("aaass:bbbbb")
@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 )
Создал простой телеграм-бот на погоду. При введении в чате с ботом городов, например, "Москва", бот нормально реагирует, выдаёт все данные ( температуру и т.д. ). Но, когда я ввожу слова, которые не относятся к городам, например, "привет", то бот вылетает, и приходится заново запускать скрипт (через клавишу F5 в IDLE). Помогите, пожалуйста, сделать так, чтобы при введении слов, не относящихся к городам, бот отвечал сообщением: "Ошибка ввода". Пытался сам решить проблему, но ничего не вышло, консоль выбивает ошибку: "Reason: Unable to find the resource".
Ответы (1 шт):
Автор решения: Elusha
→ Ссылка
Если я правильно понимаю как работает библиотека owm, то нужно сделать так:
try:
observation = owm.weather_at_place(message.text)
except:
bot.send_message(message.chat.id, 'Извините, я вас не понял')