Skip to content

Repository files navigation

Homework Bot

Проект "Homework Bot"

1. Общее описание:

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

2. Как запустить проект Homework Bot:

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

git clone 
cd homework-bot

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

python3 -m venv venv
  • Если у вас Linux/macOS

    source venv/bin/activate
    
  • Если у вас windows

    source venv/scripts/activate
    

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

python3 -m pip install --upgrade pip
pip install -r requirements.txt

Создать в директории проекта файл .env с тремя переменными окружения:

TOKEN=api_token
TG_TOKEN=your_bot_token
TG_CHAT_ID=your_chat_id

Запустить проект:

python homework.py

3. Функционал:

Функциональная составляющая проекта реализуется посредство отправки запросов на эндпоинты. Функционал бота:

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

Логируются следующие события:

  • отсутствие обязательных переменных окружения во время запуска бота (уровень CRITICAL);
  • удачная отправка любого сообщения в Telegram (уровень DEBUG);
  • сбой при отправке сообщения в Telegram (уровень ERROR);
  • недоступность эндпоинта (уровень ERROR);
  • любые другие сбои при запросе к эндпоинту (уровень ERROR);
  • отсутствие ожидаемых ключей в ответе API (уровень ERROR);
  • неожиданный статус работы, обнаруженный в ответе API (уровень ERROR);
  • отсутствие в ответе новых статусов (уровень DEBUG).

4. Структура проекта:

Вся логика проекта реализована в файле homework.py:

  • Функция main() — в ней описана основная логика работы программы.
  • Функция check_tokens() проверяет доступность переменных окружения, которые необходимы для работы программы.
  • Функция get_api_answer() делает запрос к эндпоинту API-сервиса. В качестве параметра в функцию передаётся временная метка. В случае успешного запроса функция возвращает ответ API, приведя его из формата JSON к типам данных Python.
  • Функция check_response() проверяет ответ API на соответствие документации внешнего API. В качестве параметра функция получает ответ API, приведённый к типам данных Python.
  • Функция parse_status() извлекает из информации о конкретной работе её статус. В качестве параметра функция получает только один элемент из списка работ. В случае успеха функция возвращает подготовленную для отправки в Telegram строку, содержащую один из вердиктов словаря HOMEWORK_VERDICTS.
  • Функция send_message() отправляет сообщение в Telegram-чат, определяемый переменной окружения TELEGRAM_CHAT_ID. Принимает на вход два параметра: экземпляр класса TeleBot и строку с текстом сообщения.
  • Логирование. Каждое сообщение в журнале логов состоит из: даты и времени события, уровня важности события, описания события.

5. Технологии:

Проект построен для взаимодействия с внешним API посредством HTTP-запросов. Для работы проекта используются сторонние библиотеки. Логика проекта реализована на Python v3.12.7.

6. Лицензирование:

Данный проект лицензирован образовательной платформой Yandex Практикум в 2025 г. Реализацию проекта выполнил студент вышеупомянутой платформы Евгений Агаджанов.

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages