• Почему бот не работает?

    @o5a
    Не понятно, зачем бесконечный цикл. Если цель - обработать исключения, лучше делать это для отдельных блоков. Запрос погоды лучше вынести в отдельную функцию, там же обработать исключение на случай проблем с API погоды или неправильного города. Повторяющиеся создания owm удалил. Так должно работать.

    from pyowm.owm import OWM
    from pyowm.utils.config import get_default_config
    import telebot
    
    TOKEN = токен телеграм
    OWM_KEY = API ключ OWM
    
    config_dict = get_default_config()
    config_dict['language'] = 'ru'
    
    bot = telebot.TeleBot(TOKEN)
    
    def get_weather(location):
        try:
            owm = OWM(OWM_KEY, config_dict)
            mgr = owm.weather_manager()
            observation = mgr.weather_at_place(location)
            w = observation.weather
            temp = w.temperature('celsius')["temp"]
    
            answer = answer = f"В городе {location} сейчас {w.detailed_status}\n"
            answer += " Температура сейчас в районе "+ str(temp) + "\n\n"
    
            if temp < 5:
                answer += "Сейчас ОЧЕНЬ ХОЛОДНО!"
            elif temp < 10:
                answer += "Сейчас холодно, одевайся!"
            elif temp < 20:
                answer += "Температура средняя,оденься потеплее!"
            else:
                answer += "Температура нормальная, одевайcя как хочешь!"
        except Exception as e:
            print('Error:', e)
            answer = 'Ошибка такая-то' # или любой другой, на случай неправильного города
    
        return answer
    
    # что под функцией с ошибкой подразумевалось не понятно, но допустим так
    def do_something_erronous():
        1/0
    
    @bot.message_handler(content_types=['text'])
    def send_echo(message):
        # логику работы с OWM переносим в отдельную функцию
    
        # запрашиваем текст о погоде в указанном городе
        answer = get_weather(message.text)
    
        bot.send_message(message.chat.id, answer)
    
    # что осталось от изначального блока исключений, если он Вам еще зачем-то нужен
    try:
        do_something_erronous()
    except Exception as e:
        print('Error:', e)
    
    bot.polling(none_stop=True)
    Ответ написан
    Комментировать