Advertisement
object_254

Untitled

Feb 23rd, 2021
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.70 KB | None | 0 0
  1. import os
  2. import time
  3.  
  4. import requests
  5. import telegram
  6. import logging
  7. from dotenv import load_dotenv
  8.  
  9. load_dotenv()
  10.  
  11. logging.basicConfig(
  12.     level=logging.DEBUG,
  13.     filename='program.log',
  14.     filemode='a',
  15. )
  16.  
  17. PRAKTIKUM_TOKEN = os.getenv('PRAKTIKUM_TOKEN')
  18. TELEGRAM_TOKEN = os.getenv('TELEGRAM_TOKEN')
  19. TELEGRAM_CHAT_ID = os.getenv('TELEGRAM_CHAT_ID')
  20. HEADERS = {
  21.     'Authorization': f'OAuth {PRAKTIKUM_TOKEN}'
  22. }
  23.  
  24.  
  25. def parse_homework_status(homework):
  26.     homework_name = homework.get('homework_name')
  27.     homework_status = homework.get('status')
  28.     if homework_name is None:
  29.         return 'Невозможно определить имя работы'
  30.     if homework_status is None:
  31.         return 'Невозможно определить статус работы'
  32.     if homework_status != 'approved':
  33.         verdict = 'К сожалению в работе нашлись ошибки.'
  34.     else:
  35.         verdict = ('Ревьюеру всё понравилось, '
  36.                    'можно приступать к следующему уроку.')
  37.     return f'У вас проверили работу "{homework_name}"!\n\n{verdict}'
  38.  
  39.  
  40. def get_homework_statuses(current_timestamp):
  41.     if current_timestamp is None:
  42.         current_timestamp = int(time.time())
  43.     params = {
  44.         'from_date': current_timestamp
  45.     }
  46.     try:
  47.         homework_statuses = requests.get(
  48.             'https://praktikum.yandex.ru/api/user_api/homework_statuses/',
  49.             params=params,
  50.             headers=HEADERS,
  51.         )
  52.     except requests.RequestException as e:
  53.         logging.error('Error at %s', 'status', exc_info=e)
  54.     return homework_statuses.json()
  55.  
  56.  
  57. def send_message(message, bot_client):
  58.     logging.info('Отправлено сообщение')
  59.     try:
  60.         return bot_client.send_message(chat_id=TELEGRAM_CHAT_ID, text=message,)
  61.     except Exception as e:
  62.         logging.error('Error at %s', 'send_message', exc_info=e)
  63.  
  64.  
  65. def main():
  66.     bot = telegram.Bot(token=TELEGRAM_TOKEN)
  67.     current_timestamp = int(time.time())
  68.     while True:
  69.         try:
  70.             new_homework = get_homework_statuses(current_timestamp)
  71.             if new_homework.get('homeworks'):
  72.                 send_message(parse_homework_status(
  73.                     new_homework.get('homeworks')[0]),
  74.                     bot
  75.                 )
  76.             current_timestamp = new_homework.get(
  77.                 'current_date',
  78.                 current_timestamp,
  79.             )
  80.             time.sleep(900)
  81.  
  82.         except Exception as e:
  83.             print(f'Бот столкнулся с ошибкой: {e}')
  84.             time.sleep(5)
  85.  
  86.  
  87. if __name__ == '__main__':
  88.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement