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)