Задать вопрос
@jA8a

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

Хочу, чтобы я вводил название города и бот отправлял текущую температуру в этом городе.
Для создания бота использую 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), ошибок не будет, и температура будет выведена в терминал.

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

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

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