import requests import datetime from config import TOKEN, appid from aiogram import Bot, types from aiogram.dispatcher import Dispatcher from aiogram.utils import executor bot = Bot(token=TOKEN) dp = Dispatcher(bot) @dp.message_handler(commands=["weather"]) async def start_command(message: types.Message): await message.reply("Привет, Напиши название города, и я пришлю сводку погоды!") @dp.message_handler() async def get_weather(message: types.Message): code_to_smile = { "Clear": "Ясно \U00002600", "Clouds": "Облачно \U00002601", "Rain": "Дождь \U00002614", "Drizzle": "Дождь \U00002614", "Thunderstorm": "Гроза \U000026A1", "Snow": "Снег \U0001F328", "Mist": "Туман \U0001F32B", } try: r = requests.get( f"https://api.openweathermap.org/data/2.5/weather?q={message.text}&appid={appid}&lang=ru&units=metric" ) data = r.json() city = data["name"] wheather_description = data["weather"][0]["main"] if wheather_description in code_to_smile: wd = code_to_smile[wheather_description] else: wd = "Посмотри в окно, там что-то страшное!" cur_wheather = data["main"]["temp"] humidity = data["main"]["humidity"] temp_max = data["main"]["temp_max"] temp_min = data["main"]["temp_min"] pressure = data["main"]["pressure"] wind = data["wind"]["speed"] lenght_of_the_day = datetime.datetime.fromtimestamp(data["sys"]["sunset"]) - datetime.datetime.fromtimestamp( data["sys"]["sunrise"]) await message.reply(f"Сегодня {datetime.datetime.now().strftime('%Y-%M-%d %H:%M')}\n" f"Погода в городе {city}\nТекущая температура {cur_wheather} C°{wd}\nМинимальная температура {temp_min} C°\n" f"Максимальная температура {temp_max} C°\nВлажность {humidity} %\nДавление {pressure} мм.рт.ст." f"\nСкорость ветра {wind} м/c\n" f"Продолжительность светового дня {lenght_of_the_day}") except: await message.reply("\U00002620 Проверьте правильность написания города\U00002620") def main(): city = input("Введите название города: ") get_weather(city, appid) if __name__ == '__main__': executor.start_polling(dp)