/weather-telegram-bot

Телеграмм-бот, рассказывающий о погоде

Primary LanguagePython

weather-telegram-bot

Телеграмм-бот, рассказывающий о погоде. Написан на python.

Применяются техники NLP для извлечения городов в их начальной форме и дат из текстов пользователя (пакет natasha для NLP на русском языке).

Для получения координат города по его названию используется Yandex API для перевода географических координат в адрес и наоборот.
Для получения прогноза погоды по полученным координатам используется Open Weather API.

Навигация

Что умеет бот:

  • Умеет говорить погоду в ЛЮБОМ городе России (за исключением каких-то мелких городов, о которых не знает API яндекса или open weather).
  • Бот умеет извлекать названия городов и приводить их названия в начальную форму (чтобы потом получить координаты данного города).
  • Бот умеет извлекать даты и приводит их единому формату (далеко не идеально, но справляется с многими кейсами).
  • На основе извлеченного названия города бот умеет давать прогноз погоды на нужную дату (в пределах 5 дней вперед).
  • Бот умеет реагировать на непонятные высказывания.
  • Бот умеет здороваться, прощаться.

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

Перед запуском проекта необходимо установить следующие пакеты:

  • python-telegram-bot - библиотека-обертка для работы с api телеграмма (подробнее здесь)
  • natasha - библиотека для nlp при работе с русским текстом (подробнее здесь)
  • emoji - пригодится для работы со смайликами
  • requests - для работы с Api Yandex и API Open Weather

Запуск бота

  1. Иметь установленный python версии >= 3.8

  2. Загрузи все используемые библиотеки командой:
    pip3 install python-telegram-bot natasha emoji requests

  3. В файле constants/global_env_variables.py нужно задать токены для работы с апишками.

    Рекомендуемый вариант: ничего не менять в коде, а задать каждую переменную в глобальном окружении своего компьютера (как создавать глобальные переменные окружения для bash/zsh здесь).
    Легкий и быстрый вариант (только для локального запуска!): Ты можешь просто заменить каждую переменную в духе BOT_TOKEN = os.environ.get('BOT_TOKEN') на BOT_TOKEN="your token".

    Список всех констант-токенов, которые нужно задать:

  4. Запусти скрипт в корне репозитория weather_bot.py

Полезные ссылочки с tutorial по написанию бота

Почему выбрана python-telegram-bot библиотека

На момент создания бота для Python имелось 2 крупных библиотеки согласно странице на официальном сайте телеграмма в разделе "Bot Code Examples":

Обе либы разрабатывали с 2015 (согласно статистике релизов) и активно разрабатываются до сих пор. Выбор в пользу python-telegram-bot был сделан крайне примитивно: с 2015 года по 2020 он собрал в 3 раза больше звезд и форков, чем его конкурент (была цель научиться пользоваться инструментом, которое широко одобрило сообщество).