Files
Jarvis/triggers.py

97 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Парсер почты
import datetime
import email
import imaplib
# будильник
import threading
import time
# То, что нужно будет передавать функциям
# Инициализация будильника
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()
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)
mail.list()
count_Email_Start = (mail.select("inbox")[1][0]).decode('utf-8')
while True:
mail.list()
count_Email_Current = (mail.select("inbox")[1][0]).decode('utf-8')
if count_Email_Current > count_Email_Start:
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
def test_trigger(var):
time.sleep(int(var))
def test_action(var):
print("Я пишу", var)
# Для создания потока будильника передаются:
# Id юзера который поставил будильник, и значения времени которые он поставил. Поток создаётся с именем(id) юзера
if __name__ == '__main__':
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)
# сценарии должны хранить логины и пароль
# запилить бота, возврат темы и отправителя в словаре.