@jA8a

Aiogram. Как сделать так, что бы на мой запрос бот отправлял текущую температуру воздуха?

Хочу, что бы я вводил название города и бот отправлял текущую температуру в этом городе.
Для создания бота использую aiogram
Для запроса погоды python-weather
Код написан таким оразом:

import asyncio
import logging
import python_weather

from config import TOKEN2
from aiogram import Bot, Dispatcher
from aiogram.filters import CommandStart
from aiogram.types import Message


bot = Bot(TOKEN2)
dp = Dispatcher()

async def main():
    await dp.start_polling(bot)

@dp.message()
async def get_weather(message: Message):
    async with python_weather.Client(unit=python_weather.METRIC) as client:
        weather = await client.get(message.text)
        await message.answer(weather.temperature)

if __name__ == '__main__':
    asyncio.run(main())

В этом виде он выдает ошибку.
ERROR:aiogram.event:Cause exception while process update id=372549765 by bot id=6876247750
ValidationError: 1 validation error for SendMessage
text

При чем если вместо вызова
await message.answer(weather.temperature)
я напишу
print(weather.temperature)
ошибок не будет, и температура будет выведена в терминал

Я так понимаю проблема именно в этом вызове. Если да, то как будет правильно его написать?
  • Вопрос задан
  • 30 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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