Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import time
- import requests
- import telegram
- import logging
- from dotenv import load_dotenv
- load_dotenv()
- logging.basicConfig(
- level=logging.DEBUG,
- filename='program.log',
- filemode='a',
- )
- PRAKTIKUM_TOKEN = os.getenv('PRAKTIKUM_TOKEN')
- TELEGRAM_TOKEN = os.getenv('TELEGRAM_TOKEN')
- TELEGRAM_CHAT_ID = os.getenv('TELEGRAM_CHAT_ID')
- HEADERS = {
- 'Authorization': f'OAuth {PRAKTIKUM_TOKEN}'
- }
- def parse_homework_status(homework):
- homework_name = homework.get('homework_name')
- homework_status = homework.get('status')
- if homework_name is None:
- return 'Невозможно определить имя работы'
- if homework_status is None:
- return 'Невозможно определить статус работы'
- if homework_status != 'approved':
- verdict = 'К сожалению в работе нашлись ошибки.'
- else:
- verdict = ('Ревьюеру всё понравилось, '
- 'можно приступать к следующему уроку.')
- return f'У вас проверили работу "{homework_name}"!\n\n{verdict}'
- def get_homework_statuses(current_timestamp):
- if current_timestamp is None:
- current_timestamp = int(time.time())
- params = {
- 'from_date': current_timestamp
- }
- try:
- homework_statuses = requests.get(
- 'https://praktikum.yandex.ru/api/user_api/homework_statuses/',
- params=params,
- headers=HEADERS,
- )
- except requests.RequestException as e:
- logging.error('Error at %s', 'status', exc_info=e)
- return homework_statuses.json()
- def send_message(message, bot_client):
- logging.info('Отправлено сообщение')
- try:
- return bot_client.send_message(chat_id=TELEGRAM_CHAT_ID, text=message,)
- except Exception as e:
- logging.error('Error at %s', 'send_message', exc_info=e)
- def main():
- bot = telegram.Bot(token=TELEGRAM_TOKEN)
- current_timestamp = int(time.time())
- while True:
- try:
- new_homework = get_homework_statuses(current_timestamp)
- if new_homework.get('homeworks'):
- send_message(parse_homework_status(
- new_homework.get('homeworks')[0]),
- bot
- )
- current_timestamp = new_homework.get(
- 'current_date',
- current_timestamp,
- )
- time.sleep(900)
- except Exception as e:
- print(f'Бот столкнулся с ошибкой: {e}')
- time.sleep(5)
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement