diff --git a/actions.py b/actions.py index d1f1164..934fe0c 100644 --- a/actions.py +++ b/actions.py @@ -1,20 +1,42 @@ -# будильник +# Парсер почты import datetime import imaplib import time +import email +# будильник +import threading +#То, что нужно будет передавать функциям -def alarm_clock(): - dt = datetime.datetime(2020, 3, 18, 18, 6, 15) # дата срабатывания будильника (год,месяц,день,час,минута,секунда) +#Инициализация будильника +userName='Denis' +year_Alarm_Clock=2020 +month_Alarm_Clock=3 +day_Alarm_Clock=19 +hour_Alarm_Clock=12 +min_Alarm_Clock=49 +sec_Alarm_Clock=0 +#Инициализация парсера почты +gmail_user=''#Login +gmail_pass=''#Password + +#Сами функции + +#Будильник +def alarm_clock(year_Alarm_Clock, month_Alarm_Clock, day_Alarm_Clock, hour_Alarm_Clock, min_Alarm_Clock, sec_Alarm_Clock): + dt = datetime.datetime(year_Alarm_Clock, month_Alarm_Clock, day_Alarm_Clock, hour_Alarm_Clock, min_Alarm_Clock, sec_Alarm_Clock) diff = (dt - datetime.datetime.now()).total_seconds() - print(diff) - time.sleep(diff) - print('сообщение в телегу текст') + try: + time.sleep(diff) + print('сообщение в телегу текст') + except: + print('Нельзя поставить будильник в прошлое') + return # проверка почты на новое письмо gmail # Нужно включить https://myaccount.google.com/lesssecureapps и https://mail.google.com/mail/u/2/#settings/fwdandpop -# + def check_email(gmail_user, gmail_pass): mail = imaplib.IMAP4_SSL('imap.gmail.com', 993) mail.login(gmail_user, gmail_pass) @@ -24,13 +46,41 @@ def check_email(gmail_user, gmail_pass): mail.list() count_Email_Current = (mail.select("inbox")[1][0]).decode('utf-8') if count_Email_Current > count_Email_Start: - print('Отправить сообщение в телегу о том, а) занят б)текст') + result, data = mail.search(None, "ALL") + ids = data[0] # Получаем сроку номеров писем + id_list = ids.split() # Разделяем ID писем + latest_email_id = id_list[-1] # Берем последний ID + result, data = mail.fetch(latest_email_id, "(RFC822)") # Получаем тело письма (RFC822) для данного ID + raw_email = data[0][1] + email_message = email.message_from_bytes(raw_email) + email_message_From = email_message['From'] + email_message_From = email_message_From[email_message_From.index('<'):email_message_From.index('>')] + email_message_From = email_message_From[1:] + print('Отправить сообщение в телегу о том, что занят') + print('Отправить "от кого" ', email_message_From) count_Email_Start = count_Email_Current time.sleep(15) # частота проверки нового письма + +#Чтобы запустить будильник 1, Парсер 2 +Mode=2 + +#Для создания потока будильника передаются: +# Id юзера который поставил будильник, и значения времени которые он поставил. Поток создаётся с именем(id) юзера if __name__ == '__main__': - alarm_clock() + if Mode==1: + Clock_Thread = threading.Thread( + target = alarm_clock, name = userName, args=(year_Alarm_Clock, + month_Alarm_Clock, + day_Alarm_Clock, + hour_Alarm_Clock, + min_Alarm_Clock, + sec_Alarm_Clock)) + Clock_Thread.start() + if Mode==2: + check_email(gmail_user, gmail_pass) + # сценарии должны хранить логины и пароль # запилить бота, возврат темы и отправителя в словаре.