Полнофункциональный Telegram-бот для получения информации о погоде через OpenWeather API.
- 🌡️ Текущая погода - по названию города или геолокации
- 📅 Прогноз на 5 дней - с интерактивным выбором дня
- 📍 Сохранение геолокации - для быстрого доступа
- 🌍 Сравнение городов - сравнение температуры в двух городах
- 💨 Расширенные данные - погода + качество воздуха
- 🔔 Уведомления - автоматические уведомления о погоде
- 🔍 Inline-режим - быстрый поиск погоды по городу
- Python 3.8+
- API ключ от OpenWeatherMap
- Токен Telegram-бота от @BotFather
git clone <repository-url>
cd "API погода тг бот"pip install -r requirements.txtСоздайте файл .env на основе .env.example:
cp .env.example .envОткройте .env и заполните ваши ключи:
OW_API_KEY=ваш_ключ_openweather
BOT_TOKEN=ваш_токен_telegram_ботаКак получить ключи:
-
OpenWeather API ключ:
- Зарегистрируйтесь на openweathermap.org
- Перейдите в раздел API Keys
- Создайте новый ключ (бесплатный план доступен)
-
Telegram Bot Token:
- Напишите @BotFather в Telegram
- Отправьте команду
/newbot - Следуйте инструкциям для создания бота
- Скопируйте полученный токен
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- Справка по использованию
-
Текущая погода
- Нажмите "🌡️ Текущая погода" или просто введите название города
- Можно использовать сохраненную геолокацию
-
Прогноз на 5 дней
- Нажмите "📅 Прогноз на 5 дней"
- Выберите день из списка
- Просмотрите детальный прогноз по часам
-
Моя геолокация
- Нажмите "📍 Моя геолокация"
- Отправьте ваше местоположение
- Геолокация сохранится для быстрого доступа
-
Сравнить города
- Нажмите "🌍 Сравнить города"
- Введите названия двух городов
- Получите сравнительную таблицу
-
Расширенные данные
- Нажмите "💨 Расширенные данные"
- Получите погоду + качество воздуха
-
Уведомления
- Нажмите "🔔 Уведомления"
- Включите/выключите уведомления
- Установите интервал (1-24 часа)
В любом чате 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"
}
}
}- Проверьте, что токен в
.envправильный - Убедитесь, что бот запущен (
python bot.py) - Проверьте логи на наличие ошибок
- Проверьте правильность написания города
- Попробуйте использовать английское название
- Убедитесь, что у вас есть интернет-соединение
- Проверьте, что API ключ OpenWeather правильный
- Убедитесь, что у вас не превышен лимит запросов (бесплатный план: 60 запросов/мин)
- Проверьте баланс на аккаунте OpenWeather
Этот проект создан в образовательных целях.
Приветствуются любые улучшения и предложения!
Если у вас возникли вопросы или проблемы, создайте issue в репозитории.
Приятного использования! 🌤️