WeatherTelegramBot
Описание
Telegram-бот для получения текущей погоды и прогноза на ближайшие часы с помощью библиотеки pywttr.
Языки
- Python100%
WeatherTelegramBot
Telegram-бот для получения текущей погоды и прогноза на ближайшие часы с помощью библиотеки pywttr. Бот позволяет пользователям вводить название города и получать подробную информацию о погодных условиях, включая температуру, скорость ветра и количества осадков.
Функциональность
- Получение погоды в указанном городе:
- Температура воздуха.
- Погодные условия.
- Скорость ветра (в м/с).
- Количество осадков (в мм).
- Прогноз погоды на ближайшие часы:
- Через 1 час
- Через 3 часа
- Через 5 часов
- Через 7 часов
- Автоматическое форматирование ввода города:
- Название города отображается с заглавной буквы, даже если пользователь ввёл его с маленькой буквы.
Используемые библиотеки
Этот проект разработан на Python и использует следующие библиотеки:
- python-telegram-bot: Для работы с API Telegram.
- pywttr: Для получения данных о погоде из API wttr.in.
- logging: Для ведения логов работы бота.
Установка и запуск
- Убедитесь, что установлен Python 3.8 или выше.
- Установите зависимости:
- Склонируйте репозиторий:
- Замените
в файлеYOUR_TELEGRAM_BOT_TOKENна токен вашего бота, полученный через BotFather.config.py - При необходимости настройте количество запросов
. По умолчанию установлено значение 5.MAX_REQUESTS_PER_MINUTE - Запустите бота:
Пример работы бота
- Пользователь вводит команду
./start - Бот просит ввести название города.
- Пользователь вводит название города (например, "Москва").
- Бот отвечает:
Погода в городе Москва (данные на 18:30):
Температура воздуха: 8°C
Погодные условия: Небольшой дождь
Скорость ветра: 10.6 м/с
Количество осадков: 1.2 мм
Прогноз погоды на 19:30:
Температура воздуха: 13°C
Погодные условия: Ясно
Скорость ветра: 6.9 м/с
Количество осадков: 0.0 мм
Прогноз погоды на 21:30:
Температура воздуха: 14°C
Погодные условия: Солнечно
Скорость ветра: 10.8 м/с
Количество осадков: 0.0 мм
Прогноз погоды на 23:30:
Температура воздуха: 15°C
Погодные условия: Переменная облачность
Скорость ветра: 13.3 м/с
Количество осадков: 0.0 мм
Прогноз погоды на 01:30:
Температура воздуха: 8°C
Погодные условия: Небольшой дождь
Скорость ветра: 10.6 м/с
Количество осадков: 1.2 мм
- Что бы узнать погоду в другом городе повторно вводить команду
уже не нужно./start
Внесённые изменения
В процессе разработки были внесены следующие улучшения:
- Добавлен прогноз погоды на ближайшие часы:
- Использованы данные API
для получения прогноза на 1, 3, 5 и 7 часов.pywttr
- Использованы данные API
- Автоматическое преобразование скорости ветра в м/с:
- Скорость ветра из API предоставляется в км/ч, поэтому она конвертируется в м/с с округлением до первого знака после запятой.
- Обработка ввода пользователя:
- Название города автоматически форматируется с заглавной буквы, даже если пользователь ввёл его с маленькой.
- Удаляются лишние пробелы в начале и конце строки.
- Добавлена проверка корректности города
- Ограничено количество запросов для защиты от спама (максимум 5 запросов в минуту от одного пользователя). При превышении лимита выдается предупреждение.
- Обработка ошибок:
- Если данные о погоде недоступны или введено некорректное название города, бот возвращает сообщение об ошибке.
Add-on
Описание файла weather_desc_list_RU.py
Этот скрипт служит дополнением к основному коду телеграм-бота с погодой. Его цель — выявить описания погодных условий, которые API возвращает на английском языке, даже если в запросе указан русский язык.
Зачем это нужно?
В процессе работы телеграм-бота может возникать ситуация, когда описание погодных условий выводится на английском языке (например, Patchy rain nearby, Clear), хотя API настроен на возврат данных на русском языке. Это связано с тем, что не все погодные условия в самом API имеют переводы на русский язык.
Что делает этот файл?
- Извлекает уникальные описания погодных условий:
- Работает с городами, указанными в файле
.cities_list.txt - Собирает описания погодных условий (на русском языке) из текущей погоды и почасового прогноза.
- Выявляет непереведённые описания:
- Если какие-либо описания остаются на английском языке, их можно легко найти и добавить перевод в словарь, используемый основным кодом бота.
- Сохраняет результаты в файл:
- Уникальные описания сохраняются в файл
.weather_descriptions_list_RU.txt
Как использовать скрипт?
- Подготовьте файл
:cities_list.txt
- Укажите список городов для анализа (по одному городу на строку).
- Пример содержимого:
Москва
Лондон
Токио
Сидней
Кейптаун
- Запустите скрипт:
- Убедитесь, что у вас установлен модуль
:pywttr
pip install pywttr
- Выполните файл:
python weather_desc_list_RU.py
- Проверьте результаты:
- Откройте файл
.weather_descriptions_list_RU.txt - Если файл содержит английские описания (например, Patchy rain nearby), добавьте их переводы в файл со словарём, используемым ботом.
Пример использования в основном коде телеграм-бота
После добавления перевода в словарь:
WEATHER_TRANSLATIONS = {
"Patchy rain nearby": "Местами дождь поблизости",
"Clear": "Ясно",
...
}
Телеграм-бот сможет корректно отображать данные на русском языке.
Заключение
Этот скрипт помогает поддерживать корректность и полноту переводов описаний погодных условий для телеграм-бота. Он полезен для регулярной проверки и обновления словаря переводов, обеспечивая пользователям удобный вывод данных на русском языке.
Описание файла weather_desc_list_EN.py
Для файла действует тот же принцип, только на выходе мы имеем файл с именем в котором будут погодные условия на английском языке.
Лицензия
Этот проект распространяется под лицензией MIT.