SemenovY / homework_bot

Telegram-бот, который будет обращаться к API сервиса Практикум.Домашка

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Python


Телеграмм бот для проверки домашки.

alt text

Технологии

  • Python
  • pytest
  • python-telegram-bot
  • telegram
  • http

Описание

Telegram-бот, который будет обращаться к API сервиса Практикум.Домашка и узнавать статус вашей домашней работы: взята ли ваша домашка в ревью, проверена ли она, а если проверена — то принял её ревьюер или вернул на доработку.

Что должен делать бот: раз в 10 минут опрашивать API сервиса Практикум.Домашка и проверять статус отправленной на ревью домашней работы; при обновлении статуса анализировать ответ API и отправлять вам соответствующее уведомление в Telegram; логировать свою работу и сообщать вам о важных проблемах сообщением в Telegram.

Структура

Функция main(): в ней описана основная логика работы программы. Все остальные функции должны запускаться из неё. Последовательность действий в общем виде должна быть примерно такой:

  • Сделать запрос к API.
  • Проверить ответ.
  • Если есть обновления — получить статус работы из обновления и отправить сообщение в Telegram.
  • Подождать некоторое время и вернуться в пункт 1.
  1. Функция check_tokens() проверяет доступность переменных окружения, которые необходимы для работы программы. Если отсутствует хотя бы одна переменная окружения — продолжать работу бота нет смысла.
  2. Функция get_api_answer() делает запрос к единственному эндпоинту API-сервиса. В качестве параметра в функцию передается временная метка. В случае успешного запроса должна вернуть ответ API, приведя его из формата JSON к типам данных Python.
  3. Функция check_response() проверяет ответ API на соответствие документации из урока API сервиса Практикум.Домашка. В качестве параметра функция получает ответ API, приведенный к типам данных Python.
  4. Функция parse_status() извлекает из информации о конкретной домашней работе статус этой работы. В качестве параметра функция получает только один элемент из списка домашних работ. В случае успеха, функция возвращает подготовленную для отправки в Telegram строку, содержащую один из вердиктов словаря HOMEWORK_VERDICTS.
  5. Функция send_message() отправляет сообщение в Telegram чат, определяемый переменной окружения TELEGRAM_CHAT_ID. Принимает на вход два параметра: экземпляр класса Bot и строку с текстом сообщения.

Логирование

Каждое сообщение в журнале логов должно состоять как минимум из даты и времени события, уровня важности события, описания события.

Инструкция по развёртыванию проекта

Клонировать репозиторий и перейти в него в командной строке:

git clone git@github.com:SemenovY/homework_bot

Создать и активировать виртуальное окружение:

python3 -m venv env

source env/bin/activate

Установить зависимости из файла requirements.txt:

python3 -m pip install --upgrade pip

pip install -r requirements.txt

Зависимости:

  • Python 3.9

Над проектом работал:

  • Семёнов Юрий | GitHub: SemenovY | Python developer.

Free Software, Not for commercial use!

=^..^=______/

About

Telegram-бот, который будет обращаться к API сервиса Практикум.Домашка


Languages

Language:Python 99.9%Language:Procfile 0.1%