From b713aa3145702119f870f3df89bbd1c39144954b Mon Sep 17 00:00:00 2001 From: Mnimqa <39854123+Mnimqa@users.noreply.github.com> Date: Thu, 19 Mar 2020 14:40:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20+=20=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=20=D0=B1=D1=83=D0=B4=D0=B8=D0=BB=D1=8C=D0=BD=D0=B8?= =?UTF-8?q?=D0=BA,=20=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0?= =?UTF-8?q?=D0=BD=20=D0=BF=D0=B0=D1=80=D1=81=D0=B5=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Добавлен многопоток будильника для каждого юзера -Отработано исключение "Будильник в прошлое" -Добавлено чтение отправителя,пришедшего письма --- actions.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 9 deletions(-) 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) + # сценарии должны хранить логины и пароль # запилить бота, возврат темы и отправителя в словаре.