Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Бот-ассистент

Python Telegram Pyrogram

О проекте:

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.py

Логика работы бота:

  1. check_tokens() - проверяет доступность переменных окружения. Должны присутствовать все переменные окружения;
  2. get_api_answer() - запрос к эндпоинту API-сервиса. В случае успешного запроса возвращается ответ API, преобразованный из формата JSON к типам данных Python;
  3. check_response() - проверка ответа API на корректность. Если ответ API соответствует ожиданиям, то функция возвращает список домашних работ (он может быть и пустым), доступный в ответе API по ключу homeworks;
  4. parse_status() - извлекает из информации о конкретной домашней работе статус этой работы. В случае успеха, функция возвращает подготовленную для отправки в Telegram строку, содержащую один из вердиктов словаря HOMEWORK_STATUSES;
  5. 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 в тех случаях, когда это технически возможно.

About

Телеграм-бот для отслеживания статуса проверки домашней работы. (Deploy on HEROKU cloud)

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages