def parse_status(homework):
    """Извлекает статус конкретной домашней работы."""
    if 'homework_name' not in homework:
        message = 'В ответе API отсутствует ключ "homework_name"'
        logger.error(message)
        send_message(telegram.Bot(token=TELEGRAM_TOKEN), message)
        raise KeyError(message)
    else:
        homework_name = homework['homework_name']
        status = homework['status']
        if status in HOMEWORK_VERDICTS:
            try:
                verdict = HOMEWORK_VERDICTS[status]
            except KeyError as error:
                message = f'Не получено значение verdict {str(error)}'
                logger.error(message)
                send_message(telegram.Bot(token=TELEGRAM_TOKEN), message)
            else:
                return (
                    f'Изменился статус проверки работы '
                    f'"{homework_name}". {verdict}'
                )
        else:
            message = f'Неожиданный статус домашней работы: {status}'
            logger.error(message)
            send_message(telegram.Bot(token=TELEGRAM_TOKEN), message)
            raise ValueError(message)
def main():
    """Основная логика работы бота."""
    global last_check
    if not check_tokens():
        exit()
    bot = telegram.Bot(token=TELEGRAM_TOKEN)
    timestamp = int(time.time())
    last_check = {}
    while True:
        try:
            response = get_api_answer(timestamp)
            homework = check_response(response)
            if len(last_check) == 0:
                last_check = homework
            if len(homework) > 0 and len(last_check) > 0:
                if homework[0]['status'] != last_check[0]['status']:
                    send_message(bot, parse_status(homework[0]))
                    last_check = homework
                else:
                    message = 'Статус проверки работы не изменился'
                    send_message(bot, message)
        except Exception as error:
            message = f'Сбой в работе программы: {str(error)}'
            logger.error(message)
            send_message(bot, message)
        finally:
            time.sleep(RETRY_PERIOD)