Автор: Mr X, 2 лет назад, написана на языке Python.
Встраивание на сайт
  1. import requests
  2. import datetime
  3. from config import TOKEN, appid
  4. from aiogram import Bot, types
  5. from aiogram.dispatcher import Dispatcher
  6. from aiogram.utils import executor
  7.  
  8. bot = Bot(token=TOKEN)
  9. dp = Dispatcher(bot)
  10.  
  11.  
  12. @dp.message_handler(commands=["weather"])
  13. async def start_command(message: types.Message):
  14.     await message.reply("Привет, Напиши название города, и я пришлю сводку погоды!")
  15.  
  16.  
  17. @dp.message_handler()
  18. async def get_weather(message: types.Message):
  19.     code_to_smile = {
  20.         "Clear": "Ясно \U00002600",
  21.         "Clouds": "Облачно \U00002601",
  22.         "Rain": "Дождь \U00002614",
  23.         "Drizzle": "Дождь \U00002614",
  24.         "Thunderstorm": "Гроза \U000026A1",
  25.         "Snow": "Снег \U0001F328",
  26.         "Mist": "Туман \U0001F32B",
  27.     }
  28.  
  29.     try:
  30.         r = requests.get(
  31.             f"https://api.openweathermap.org/data/2.5/weather?q={message.text}&appid={appid}&lang=ru&units=metric"
  32.         )
  33.         data = r.json()
  34.         city = data["name"]
  35.         wheather_description = data["weather"][0]["main"]
  36.         if wheather_description in code_to_smile:
  37.             wd = code_to_smile[wheather_description]
  38.         else:
  39.             wd = "Посмотри в окно, там что-то страшное!"
  40.  
  41.         cur_wheather = data["main"]["temp"]
  42.         humidity = data["main"]["humidity"]
  43.         temp_max = data["main"]["temp_max"]
  44.         temp_min = data["main"]["temp_min"]
  45.         pressure = data["main"]["pressure"]
  46.         wind = data["wind"]["speed"]
  47.         lenght_of_the_day = datetime.datetime.fromtimestamp(data["sys"]["sunset"]) - datetime.datetime.fromtimestamp(
  48.             data["sys"]["sunrise"])
  49.  
  50.         await message.reply(f"Сегодня {datetime.datetime.now().strftime('%Y-%M-%d %H:%M')}\n"
  51.               f"Погода в городе {city}\nТекущая температура {cur_wheather} C°{wd}\nМинимальная температура {temp_min} C°\n"
  52.               f"Максимальная температура {temp_max} C°\nВлажность {humidity} %\nДавление {pressure} мм.рт.ст."
  53.               f"\nСкорость ветра {wind} м/c\n"
  54.               f"Продолжительность светового дня {lenght_of_the_day}")
  55.     except:
  56.         await message.reply("\U00002620 Проверьте правильность написания города\U00002620")
  57.  
  58.  
  59. def main():
  60.     city = input("Введите название города: ")
  61.     get_weather(city, appid)
  62.  
  63.  
  64. if __name__ == '__main__':
  65.     executor.start_polling(dp)