Telegram-бот с погодой

Материал из Поле цифровой дидактики
Параметр Описание
Описание Telegram-бот «Погода» — это чат-бот, который по запросу пользователя предоставляет актуальную информацию о погоде в выбранном городе. Пользователь отправляет название города или использует команду, а бот с помощью OpenWeather API получает данные о температуре, ощущаемой температуре и описании погоды, после чего отправляет их в удобном виде.
Область знаний Программирование на Python, Разработка чат-ботов, Работа с API, Веб-технологии
Среда разработки Telegram Bot API, Python, aiogram, requests

Шаги разработки:


Логика работы бота:

Шаг первый - Создание Telegram бота


Шаг второй - Регистрация на сайте OpenWeather и получение API ключа

Шаг третий - Написание Python-скрипта для работы бота

import requests
from aiogram import Bot, Dispatcher, types
from aiogram.types import Message
from aiogram.utils import executor

BOT_TOKEN = "8788708468:AAGZvdJejGPsjgTO-hj-6EqcU22y9OmsMek"
WEATHER_API_KEY = "769f58cdb59103b232299f65d5e06709"

bot = Bot(token=BOT_TOKEN)
dp = Dispatcher(bot)


@dp.message_handler(commands=['start'])
async def start(message: Message):
    await message.answer("Напиши название города 🌍")


@dp.message_handler()
async def get_weather(message: Message):
    city = message.text

    url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={WEATHER_API_KEY}&units=metric&lang=ru"

    response = requests.get(url)
    data = response.json()

    if data.get("cod") != 200:
        await message.answer("❌ Город не найден")
        return

    temp = data["main"]["temp"]
    feels = data["main"]["feels_like"]
    desc = data["weather"][0]["description"]

    answer = (
        f"🌆 Город: {city}\n"
        f"🌡 Температура: {temp}°C\n"
        f"🤔 Ощущается как: {feels}°C\n"
        f"☁️ Погода: {desc}"
    )

    await message.answer(answer)


if __name__ == "__main__":
    executor.start_polling(dp)

Шаг четвертый - Осуществление запросов к боту