pyowm: Ошибка: 'Weather' object is not callable
Попытался написать телеграм бота, который писал бы про погоду в каком-либо городе. Выдаёт ошибку:
Traceback (most recent call last):
File "main.py", line 19, in <module>
bot.polling(none_stop=True)
File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\__init__.py", line 427,
in polling
self.__threaded_polling(none_stop, interval, timeout)
File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\__init__.py", line 451,
in __threaded_polling
self.worker_pool.raise_exceptions()
File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\util.py", line 111, in r
aise_exceptions
six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\six.py", line 703, in reraise
raise value
File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\util.py", line 62, in ru
n
task(*args, **kwargs)
File "main.py", line 12, in weatherzz
w = observation.weather()
TypeError: 'Weather' object is not callable
Пробовал:
- pip3 uninstall telebot, pip3 install pytelegrambotapi.
Мой код:
from pyowm import OWM
import telebot
bot = telebot.TeleBot('token')
owm = OWM('token')
@bot.message_handler(content_types=['text'])
def weatherzz(message):
mgr = owm.weather_manager()
observation = mgr.weather_at_place(message.text)
w = observation.weather()
temp = w.temperature('celsius')["temp"]
answer = "Weather Status: ", w.detailed_status()
answer += "Temperature: " + str(temp)
bot.send_message(message.chat.id, answer)
bot.polling(none_stop=True)
Ответы (3 шт):
Автор решения: nomnoms12
→ Ссылка
У Вас ошибки в этой части кода:
w = observation.weather
temp = w.temperature('celsius')['temp']
answer = f'Weather Status: {w.detailed_status}\n'
answer += f'Temperature: {temp}'
observation.weather— это атрибут классаObservation(не метод)w.detailed_status— это атрибут классаWeather(не метод)answerу Вас является кортежемИспользуйте для формирования ответа формат-строки или соответствующий метод.
Автор решения: Эникейщик
→ Ссылка
observation.weather это не функция, скобки лишние:
w = observation.weather
Автор решения: Аликс Плисов
→ Ссылка
Вместо observation.weather() попробуйте использовать эти две команды:
w = observation.weather
w.wind()