Телеграмм-бот, рассказывающий о погоде. Написан на python.
Применяются техники NLP для извлечения городов в их начальной форме и дат из текстов пользователя (пакет natasha для NLP на русском языке).
Для получения координат города по его названию используется
Yandex API для перевода географических координат в адрес и наоборот.
Для получения прогноза погоды по полученным координатам используется Open Weather API.
- Что умеет бот
- Используемые библиотеки
- Запуск бота
- Полезные ссылочки с tutorial по написанию бота
- Почему выбрана python-telegram-bot библиотека
- Умеет говорить погоду в ЛЮБОМ городе России (за исключением каких-то мелких городов, о которых не знает API яндекса или open weather).
- Бот умеет извлекать названия городов и приводить их названия в начальную форму (чтобы потом получить координаты данного города).
- Бот умеет извлекать даты и приводит их единому формату (далеко не идеально, но справляется с многими кейсами).
- На основе извлеченного названия города бот умеет давать прогноз погоды на нужную дату (в пределах 5 дней вперед).
- Бот умеет реагировать на непонятные высказывания.
- Бот умеет здороваться, прощаться.
Перед запуском проекта необходимо установить следующие пакеты:
- python-telegram-bot - библиотека-обертка для работы с api телеграмма (подробнее здесь)
- natasha - библиотека для nlp при работе с русским текстом (подробнее здесь)
- emoji - пригодится для работы со смайликами
- requests - для работы с Api Yandex и API Open Weather
-
Иметь установленный python версии >= 3.8
-
Загрузи все используемые библиотеки командой:
pip3 install python-telegram-bot natasha emoji requests
-
В файле
constants/global_env_variables.py
нужно задать токены для работы с апишками.
Рекомендуемый вариант: ничего не менять в коде, а задать каждую переменную в глобальном окружении своего компьютера (как создавать глобальные переменные окружения для bash/zsh здесь).
Легкий и быстрый вариант (только для локального запуска!): Ты можешь просто заменить каждую переменную в духеBOT_TOKEN = os.environ.get('BOT_TOKEN')
наBOT_TOKEN="your token"
.
Список всех констант-токенов, которые нужно задать:- в константе
BOT_TOKEN
подставь токен своего бота (как создать бота и получить токен можно почитать здесь) - в константе
YANDEX_GEOCODER_API_TOKEN
подставь токен для API для перевода географических координат в адрес и наоборот. - в константе
OPEN_WEATHER_API_TOKEN
подставь токен для Open Weather API.
- в константе
-
Запусти скрипт в корне репозитория
weather_bot.py
- Полное руководство Python по созданию Telegram Bot с использованием python-telegram-bot (статья от 7 мая 2020)
- Telegram-бот для получения адреса по локации или координатам с использованием python-telegram-bot (статья от 9 сентября 2020)
- Telegram-бот на python-telegram-bot + flask + heroku deploy
- Статья на TProger по созданию телеграмм чат бота и его deploy на Heroku
- Пакет natasha для nlp на русском языке
- Как отправлять смайлики через telegram bot и emoji cheat sheet
На момент создания бота для Python имелось 2 крупных библиотеки согласно странице на официальном сайте телеграмма в разделе "Bot Code Examples":
Обе либы разрабатывали с 2015 (согласно статистике релизов) и активно разрабатываются до сих пор. Выбор в пользу python-telegram-bot был сделан крайне примитивно: с 2015 года по 2020 он собрал в 3 раза больше звезд и форков, чем его конкурент (была цель научиться пользоваться инструментом, которое широко одобрило сообщество).