Telegram-бот, который обращается к API сервиса Практикум.Домашка и узнает статус домашней работы: взята ли в ревью, проверена ли она, а если проверена — то принял её ревьюер или вернул на доработку.
- раз в 10 минут опрашивает API сервиса Практикум.Домашка и проверяет статус отправленной на ревью домашней работы;
- при обновлении статуса анализирует ответ API и отправляет соответствующее уведомление в Telegram;
- логирет свою работу и сообщает о важных проблемах сообщением в Telegram.
Клонировать репозиторий и перейти в него в командной строке:
git clone git@github.com:artemkms/homework_bot.gitСкопировать .env.example и назвать его .env:
cp .env.example .envЗаполнить переменные окружения в .env:
PRACTICUM_TOKEN = токен_к_api_практикум.домашка
TELEGRAM_TOKEN = токен_вашего_тг_бота
TELEGRAM_CHAT_ID = ваш_telegram_IDУстановить и активировать виртуальное окружение:
python -m venv venv
source venv/Scripts/activate
python -m pip install --upgrade pipУстановить зависимости из файла requirements.txt
pip install -r requirements.txtВ папке с файлом homework.py выполните команду:
python homework.pycheck_tokens()- проверяет доступность переменных окружения. Должны присутствовать все переменные окружения;get_api_answer()- запрос к эндпоинту API-сервиса. В случае успешного запроса возвращается ответ API, преобразованный из формата JSON к типам данных Python;check_response()- проверка ответа API на корректность. Если ответ API соответствует ожиданиям, то функция возвращает список домашних работ (он может быть и пустым), доступный в ответе API по ключуhomeworks;parse_status()- извлекает из информации о конкретной домашней работе статус этой работы. В случае успеха, функция возвращает подготовленную для отправки в Telegram строку, содержащую один из вердиктов словаря HOMEWORK_STATUSES;send_message()- отправляет сообщение в Telegram чат, определяемый переменной окружения TELEGRAM_CHAT_ID.
Каждое сообщение в журнале логов состоит как минимум из:
- даты и времени события;
- уровня важности события;
- описания события.
Примеры:
2022-05-09 15:34:45,150 [ERROR] Сбой в работе программы: Эндпоинт https://practicum.yandex.ru/api/user_api/homework_statuses/111 недоступен. Код ответа API: 404
2022-05-09 15:34:45,355 [INFO] Бот отправил сообщение "Сбой в работе программы: Эндпоинт [https://practicum.yandex.ru/api/user_api/homework_statuses/](https://practicum.yandex.ru/api/user_api/homework_statuses/) недоступен. Код ответа API: 404"
2022-05-09 16:19:13,149 [CRITICAL] Отсутствует обязательная переменная окружения: 'TELEGRAM_CHAT_ID'
Программа принудительно остановлена.Обязательно логируются события:
- отсутствие обязательных переменных окружения во время запуска бота (уровень
CRITICAL). - удачная отправка любого сообщения в Telegram (уровень
INFO); - сбой при отправке сообщения в Telegram (уровень
ERROR); - недоступность эндпоинта https://practicum.yandex.ru/api/user_api/homework_statuses/ (уровень
ERROR); - любые другие сбои при запросе к эндпоинту (уровень
ERROR); - отсутствие ожидаемых ключей в ответе API (уровень
ERROR); - недокументированный статус домашней работы, обнаруженный в ответе API (уровень
ERROR); - отсутствие в ответе новых статусов (уровень
DEBUG).
События уровня ERROR не только логируются, но и пересылается информация о них в Telegram в тех случаях, когда это технически возможно.