Skip to content
Public template

About

Telegram-бот погоды: текущая погода, прогноз на 5 дней, геолокация, качество воздуха, inline-режим, фоновые уведомления, кеш (OpenWeather API)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

🌤️ Telegram-бот погоды

Полнофункциональный Telegram-бот для получения информации о погоде через OpenWeather API.

✨ Возможности

  • 🌡️ Текущая погода - по названию города или геолокации
  • 📅 Прогноз на 5 дней - с интерактивным выбором дня
  • 📍 Сохранение геолокации - для быстрого доступа
  • 🌍 Сравнение городов - сравнение температуры в двух городах
  • 💨 Расширенные данные - погода + качество воздуха
  • 🔔 Уведомления - автоматические уведомления о погоде
  • 🔍 Inline-режим - быстрый поиск погоды по городу

📋 Требования

🚀 Установка

1. Клонирование репозитория

git clone <repository-url>
cd "API погода тг бот"

2. Установка зависимостей

pip install -r requirements.txt

3. Настройка переменных окружения

Создайте файл .env на основе .env.example:

cp .env.example .env

Откройте .env и заполните ваши ключи:

OW_API_KEY=ваш_ключ_openweather
BOT_TOKEN=ваш_токен_telegram_бота

Как получить ключи:

  1. OpenWeather API ключ:

    • Зарегистрируйтесь на openweathermap.org
    • Перейдите в раздел API Keys
    • Создайте новый ключ (бесплатный план доступен)
  2. Telegram Bot Token:

    • Напишите @BotFather в Telegram
    • Отправьте команду /newbot
    • Следуйте инструкциям для создания бота
    • Скопируйте полученный токен

4. Запуск бота

python bot.py

Бот должен запуститься и начать отвечать на сообщения!

📁 Структура проекта

.
├── bot.py              # Главный файл бота
├── weather_app.py      # Модуль работы с OpenWeather API
├── storage.py          # Работа с данными пользователей (JSON)
├── utils.py            # Вспомогательные функции
├── requirements.txt    # Зависимости
├── .env.example        # Шаблон переменных окружения
├── .gitignore          # Игнорируемые файлы
├── User_Data.json      # Данные пользователей (создается автоматически)
├── .cache/             # Кэш API запросов (создается автоматически)
└── README.md           # Этот файл

🎮 Использование

Команды бота

  • /start - Главное меню
  • /help - Справка по использованию

Основные функции

  1. Текущая погода

    • Нажмите "🌡️ Текущая погода" или просто введите название города
    • Можно использовать сохраненную геолокацию
  2. Прогноз на 5 дней

    • Нажмите "📅 Прогноз на 5 дней"
    • Выберите день из списка
    • Просмотрите детальный прогноз по часам
  3. Моя геолокация

    • Нажмите "📍 Моя геолокация"
    • Отправьте ваше местоположение
    • Геолокация сохранится для быстрого доступа
  4. Сравнить города

    • Нажмите "🌍 Сравнить города"
    • Введите названия двух городов
    • Получите сравнительную таблицу
  5. Расширенные данные

    • Нажмите "💨 Расширенные данные"
    • Получите погоду + качество воздуха
  6. Уведомления

    • Нажмите "🔔 Уведомления"
    • Включите/выключите уведомления
    • Установите интервал (1-24 часа)

Inline-режим

В любом чате Telegram введите @ваш_бот название_города для быстрого получения погоды.

⚙️ Технические детали

Кэширование

  • Ответы API кэшируются на 10 минут
  • Кэш хранится в папке .cache/
  • Ключ кэша: {lat}_{lon}_{endpoint}

Обработка ошибок

  • Автоматические повторные попытки при ошибках сети (до 3 раз)
  • Graceful обработка невалидных городов
  • Валидация координат и входных данных

Уведомления

  • Проверка каждые 5 минут в отдельном потоке
  • Отправка только если прошло N часов с последнего уведомления
  • Настройка интервала от 1 до 24 часов

🔧 Разработка

Запуск в режиме разработки

# С логированием
python bot.py

Тестирование

Для тестирования используйте pytest (см. файл с примерами тестирования).

📝 Формат данных пользователей

Данные хранятся в User_Data.json:

{
  "123456789": {
    "city": "Москва",
    "lat": 55.7558,
    "lon": 37.6173,
    "notifications": {
      "enabled": true,
      "interval_h": 2,
      "last_sent": "2025-01-15 10:30:00"
    }
  }
}

🐛 Решение проблем

Бот не отвечает

  1. Проверьте, что токен в .env правильный
  2. Убедитесь, что бот запущен (python bot.py)
  3. Проверьте логи на наличие ошибок

"Город не найден"

  • Проверьте правильность написания города
  • Попробуйте использовать английское название
  • Убедитесь, что у вас есть интернет-соединение

Ошибки API

  • Проверьте, что API ключ OpenWeather правильный
  • Убедитесь, что у вас не превышен лимит запросов (бесплатный план: 60 запросов/мин)
  • Проверьте баланс на аккаунте OpenWeather

📄 Лицензия

Этот проект создан в образовательных целях.

🤝 Вклад

Приветствуются любые улучшения и предложения!

📞 Поддержка

Если у вас возникли вопросы или проблемы, создайте issue в репозитории.


Приятного использования! 🌤️

About

Telegram-бот погоды: текущая погода, прогноз на 5 дней, геолокация, качество воздуха, inline-режим, фоновые уведомления, кеш (OpenWeather API)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages