Telegram-бот, который обращаться к внешнему API и узнает статус отправленной на ревью работы. При обновлении статуса бот анализирует ответ API и отправлять соответствующее уведомление в Telegram. Цель проекта - своевременное оповещение пользователя об обновлении статуса ревью.
Клонировать репозиторий и перейти в него в командной строке:
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
Функциональная составляющая проекта реализуется посредство отправки запросов на эндпоинты. Функционал бота:
- раз в 10 минут опрашивает API сервиса Практикум и проверяет статус отправленной на ревью работы;
- при обновлении статуса анализирует ответ API и отправлять соответствующее уведомление в Telegram;
- логирует свою работу и сообщает о важных проблемах сообщением в Telegram.
Логируются следующие события:
- отсутствие обязательных переменных окружения во время запуска бота (уровень CRITICAL);
- удачная отправка любого сообщения в Telegram (уровень DEBUG);
- сбой при отправке сообщения в Telegram (уровень ERROR);
- недоступность эндпоинта (уровень ERROR);
- любые другие сбои при запросе к эндпоинту (уровень ERROR);
- отсутствие ожидаемых ключей в ответе API (уровень ERROR);
- неожиданный статус работы, обнаруженный в ответе API (уровень ERROR);
- отсутствие в ответе новых статусов (уровень DEBUG).
Вся логика проекта реализована в файле 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 и строку с текстом сообщения.
- Логирование. Каждое сообщение в журнале логов состоит из: даты и времени события, уровня важности события, описания события.
Проект построен для взаимодействия с внешним API посредством HTTP-запросов. Для работы проекта используются сторонние библиотеки. Логика проекта реализована на Python v3.12.7.
Данный проект лицензирован образовательной платформой Yandex Практикум в 2025 г. Реализацию проекта выполнил студент вышеупомянутой платформы Евгений Агаджанов.