Как сделать телеграм бот работоспособным?
from pyowm import OWM
from pyowm.utils.config import get_default_config
config_dict = get_default_config()
config_dict['language'] = 'RU'
import telebot

owm = OWM('a91bee44d09a57842353573df6d4e01a')
bot = telebot.TeleBot("1058623246:AAEbGu0nyd681DjRmpWx217WRx2VFi1VJsw")
mgr = owm.weather_manager()

@bot.message_handler(content_types=['text'])
def send_echo(message):
  #bot.reply_to(message, message.text)
    observation = owm.weather_at_place( message.text )
    w = observation.weather
    temp = w.temperature ( 'celsius' )["temp"]

    answer = " В городе " + message.text + " cейчас " + w.detailed_status + "\n"
    answer += " Температура в выбранном городе соответствует " + str(temp) + " градусам по шкале Цельсия" +"\n"

    if temp < 15 :
        answer+=  " На улице холодно, надевай валенки"
    elif 20 > temp > 14 :
        answer+=  " Ну такое"

    elif 19 < temp < 27 :
        answer+=  " Комфортно, сер"
    else :
        answer+=  " Жарко чет"
    bot.send_message(message.chat.id, answer)

bot.polling(none_stop=True)

Нашел различия?

А вот оно:

У тебя так написано:
answer = " В городе " + message.text + " cейчас " + w.detailed_status() + "\n"

А у меня так:
answer = " В городе " + message.text + " cейчас " + w.detailed_status + "\n"

Ты как бы понимай различия между вызовом метода у объекта и получением его свойства.
Конечно не работает, так как очень маленький процент кода скопированного из интернета без базовых знаний, как работает этот код - является рабочим.

Нужно выполнить несколько шагов:
1) Получить базовый знания Python с помощью книг(и);
2) Берем hello world для библиотеки pyTelegramBotAPI и документацию к ней. И читаем доки и попутно что-то меняем в коде, пока не поймете, как работают боты;
3) Берем hello world для библиотеки pyowm и документацию к ней. И читаем доки и попутно что-то меняем в коде, пока не поймете, как работает данная библиотека;
4) Можете совместить 2 эти библиотеки.
Видите, как всё просто.