Задать вопрос
@Loper47

Вопросик по бот-погода Телеграм на Python?

Как сделать так, чтобы когда open weather map не находит нужный город или пользователь вводит какую-нибудь абракадабру, бот не слетал, а отвечал сообщением 'Город не найден, повторите попытку'?

import pyowm
import telebot

owm=pyowm.OWM('token', language = 'ru')

bot = telebot.TeleBot('token')

@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(round(temp)) + ' градусов' + '\n\n'

	if temp<10:
		answer += 'Очень холодно, оденься потеплее))'
	elif temp<17:
		answer += 'Прохладно, лучше оденься:)'
	else:
		answer += 'Не холодно, хоть в трусах иди:)'

	bot.send_message(message.chat.id, answer)

bot.polling(none_stop = True)
  • Вопрос задан
  • 5281 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
byxo-cyze
@byxo-cyze
Спасаю мир.
Достаточно добавить except ...

import pyowm
import telebot

# от блокировок
# from telebot import apihelper
# apihelper.proxy = {'https':'socks5://127.0.0.1:9050'}

owm=pyowm.OWM('df1....51', language = 'ru')

bot = telebot.TeleBot('106...ilQ')

@bot.message_handler(content_types=['text'])
def send_echo(message):
  try:
    observation = owm.weather_at_place(message.text)
    w = observation.get_weather()
    temp=w.get_temperature('celsius')['temp']

    answer = f"В городе {message.text} сейчас {w.get_detailed_status()} \n"
    answer += f"Температура в районе {round(temp)} градусов\n\n"

    if temp<10:
      answer += 'Очень холодно, оденься потеплее))'
    elif temp<17:
      answer += 'Прохладно, лучше оденься:)'
    else:
      answer += 'Не холодно, хоть в трусах иди:)'

    bot.send_message(message.chat.id, answer)
  except pyowm.exceptions.api_response_error.NotFoundError:
      bot.send_message(message.chat.id, 'Город не найден :(')
      

bot.polling(none_stop = True)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@LT_BlackCrow
А что если выдает ошибку "город не найден"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы