Не удаётся поставить бота на хостинг
Пытаюсь поставить на pythonAnyWhere. выдаёт ошибку:
File "/home/ezhik/bot/botchat.py", line 16, in async def get_weather(city: str) -> python_weather.Weather | None: AttributeError: module 'python_weather' has no attribute 'Weather'
import asyncio
import logging
import python_weather
import telebot
from telebot import types
TOKEN = "мой токен"
logging.basicConfig(level=logging.INFO)
bot = telebot.TeleBot(TOKEN)
async def get_weather(city: str) -> python_weather | None:
try:
async with python_weather.Client(unit=python_weather.IMPERIAL) as client:
weather = await client.get(city)
return weather
except Exception as e:
logging.error(f"Ошибка при получении погоды: {e}")
return None
async def process_weather(message: types.Message, city: str) -> None:
try:
weather = await get_weather(city)
if weather:
celsius = round((weather.current.temperature - 32) * 5 / 9)
text = f"Погода в городе {city}:\n{celsius}°C, {weather.current.description}"
await message.reply(text)
else:
await message.reply(f"Не удалось получить погоду для города {city}. Попробуйте другой город.")
except Exception as e:
logging.error(f"Ошибка при обработке запроса погоды: {e}")
await message.reply(f"Произошла ошибка: {e}")
@bot.message_handler(commands=['start', 'help'])
async def send_welcome(message: types.Message):
await message.reply("Привет! Я бот, который показывает погоду.\n/start - Показывает это сообщение\n[город] - Узнать погоду в городе")
@bot.message_handler(func=lambda message: True)
async def handle_text(message: types.Message):
city = message.text
asyncio.create_task(process_weather(message, city))
async def main():
try:
print("Бот запущен...")
await bot.infinity_polling()
except Exception as e:
logging.exception("Ошибка при запуске бота:")
print(f"Ошибка при запуске бота: {e}")
if __name__ == '__main__':
asyncio.run(main())
Писал чатом gpt, так как всё время выдавало ошибку при запуске не на хостинге (в пайчарме).
Помогите пожалуйста, очень срочно.