WeatherTelegramBot

0

Описание

Telegram-бот для получения текущей погоды и прогноза на ближайшие часы с помощью библиотеки pywttr.

Языки

  • Python100%
README.md

WeatherTelegramBot

Telegram-бот для получения текущей погоды и прогноза на ближайшие часы с помощью библиотеки pywttr. Бот позволяет пользователям вводить название города и получать подробную информацию о погодных условиях, включая температуру, скорость ветра и количества осадков.

Функциональность

  • Получение погоды в указанном городе:
    • Температура воздуха.
    • Погодные условия.
    • Скорость ветра (в м/с).
    • Количество осадков (в мм).
  • Прогноз погоды на ближайшие часы:
    • Через 1 час
    • Через 3 часа
    • Через 5 часов
    • Через 7 часов
  • Автоматическое форматирование ввода города:
    • Название города отображается с заглавной буквы, даже если пользователь ввёл его с маленькой буквы.

Используемые библиотеки

Этот проект разработан на Python и использует следующие библиотеки:

  • python-telegram-bot: Для работы с API Telegram.
  • pywttr: Для получения данных о погоде из API wttr.in.
  • logging: Для ведения логов работы бота.

Установка и запуск

  1. Убедитесь, что установлен Python 3.8 или выше.
  2. Установите зависимости:

pip install python-telegram-bot pywttr

  1. Склонируйте репозиторий:

git clone https://gitverse.ru/WhenYouAreStrange/WeatherTelegramBot.git

cd WeatherTelegramBot

  1. Замените
    YOUR_TELEGRAM_BOT_TOKEN
    в файле
    config.py
    на токен вашего бота, полученный через BotFather.
  2. При необходимости настройте количество запросов
    MAX_REQUESTS_PER_MINUTE
    . По умолчанию установлено значение 5.
  3. Запустите бота:

python main.py

Пример работы бота

  1. Пользователь вводит команду
    /start
    .
  2. Бот просит ввести название города.
  3. Пользователь вводит название города (например, "Москва").
  4. Бот отвечает:
Погода в городе Москва (данные на 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 мм
  1. Что бы узнать погоду в другом городе повторно вводить команду
    /start
    уже не нужно.

Внесённые изменения

В процессе разработки были внесены следующие улучшения:

  1. Добавлен прогноз погоды на ближайшие часы:
    • Использованы данные API
      pywttr
      для получения прогноза на 1, 3, 5 и 7 часов.
  2. Автоматическое преобразование скорости ветра в м/с:
    • Скорость ветра из API предоставляется в км/ч, поэтому она конвертируется в м/с с округлением до первого знака после запятой.
  3. Обработка ввода пользователя:
    • Название города автоматически форматируется с заглавной буквы, даже если пользователь ввёл его с маленькой.
    • Удаляются лишние пробелы в начале и конце строки.
    • Добавлена проверка корректности города
    • Ограничено количество запросов для защиты от спама (максимум 5 запросов в минуту от одного пользователя). При превышении лимита выдается предупреждение.
  4. Обработка ошибок:
    • Если данные о погоде недоступны или введено некорректное название города, бот возвращает сообщение об ошибке.

Add-on

Описание файла
weather_desc_list_RU.py

Этот скрипт служит дополнением к основному коду телеграм-бота с погодой. Его цель — выявить описания погодных условий, которые API

wttr.in
возвращает на английском языке, даже если в запросе указан русский язык.

Зачем это нужно?

В процессе работы телеграм-бота может возникать ситуация, когда описание погодных условий выводится на английском языке (например, Patchy rain nearby, Clear), хотя API настроен на возврат данных на русском языке. Это связано с тем, что не все погодные условия в самом API имеют переводы на русский язык.

Что делает этот файл?

  1. Извлекает уникальные описания погодных условий:
  • Работает с городами, указанными в файле
    cities_list.txt
    .
  • Собирает описания погодных условий (на русском языке) из текущей погоды и почасового прогноза.
  1. Выявляет непереведённые описания:
  • Если какие-либо описания остаются на английском языке, их можно легко найти и добавить перевод в словарь, используемый основным кодом бота.
  1. Сохраняет результаты в файл:
  • Уникальные описания сохраняются в файл
    weather_descriptions_list_RU.txt
    .

Как использовать скрипт?

  1. Подготовьте файл
    cities_list.txt
    :
  • Укажите список городов для анализа (по одному городу на строку).
  • Пример содержимого:
Москва Лондон Токио Сидней Кейптаун
  1. Запустите скрипт:
  • Убедитесь, что у вас установлен модуль
    pywttr
    :
pip install pywttr
  • Выполните файл:
python weather_desc_list_RU.py
  1. Проверьте результаты:
  • Откройте файл
    weather_descriptions_list_RU.txt
    .
  • Если файл содержит английские описания (например, Patchy rain nearby), добавьте их переводы в файл со словарём, используемым ботом.

Пример использования в основном коде телеграм-бота

После добавления перевода в словарь:

WEATHER_TRANSLATIONS = { "Patchy rain nearby": "Местами дождь поблизости", "Clear": "Ясно", ... }

Телеграм-бот сможет корректно отображать данные на русском языке.

Заключение

Этот скрипт помогает поддерживать корректность и полноту переводов описаний погодных условий для телеграм-бота. Он полезен для регулярной проверки и обновления словаря переводов, обеспечивая пользователям удобный вывод данных на русском языке.

Описание файла
weather_desc_list_EN.py

Для файла

weather_desc_list_EN.py
действует тот же принцип, только на выходе мы имеем файл с именем
weather_descriptions_list_EN.txt
в котором будут погодные условия на английском языке.


Лицензия

Этот проект распространяется под лицензией MIT.