mirror of
https://github.com/Llloooggg/Jarvis.git
synced 2026-03-06 03:56:23 +03:00
Дописал отправку сообщения через телеграм
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
import smtplib
|
import smtplib
|
||||||
from email.mime.text import MIMEText
|
from email.mime.text import MIMEText
|
||||||
from email.header import Header
|
from email.header import Header
|
||||||
|
from flask_login import current_user
|
||||||
|
import telegram
|
||||||
|
|
||||||
|
|
||||||
def send_mail():
|
def send_mail():
|
||||||
mail_sender = '' #отправитель
|
mail_sender = '' #отправитель
|
||||||
@@ -21,3 +24,8 @@ def send_mail():
|
|||||||
server.login(username, password)
|
server.login(username, password)
|
||||||
server.sendmail(mail_sender, mail_receiver, msg.as_string())
|
server.sendmail(mail_sender, mail_receiver, msg.as_string())
|
||||||
server.quit()
|
server.quit()
|
||||||
|
|
||||||
|
|
||||||
|
def send_message_tg(text, user_id=current_user.get_tg_id()):
|
||||||
|
telegram.send_message(user_id, text)
|
||||||
|
|
||||||
|
|||||||
@@ -7,3 +7,5 @@ def db_fill():
|
|||||||
add_trigger('Проверить почту', 'check_email')
|
add_trigger('Проверить почту', 'check_email')
|
||||||
|
|
||||||
add_action('Тест', 'test_action')
|
add_action('Тест', 'test_action')
|
||||||
|
add_action('Отправить письмо', 'send_mail')
|
||||||
|
add_action('Отправить сообщение в ТГ', 'send_message_tg')
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class User(db.Model):
|
|||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
username = db.Column(db.String(80), unique=True, nullable=False)
|
username = db.Column(db.String(80), unique=True, nullable=False)
|
||||||
password = db.Column(db.String(120), nullable=False)
|
password = db.Column(db.String(120), nullable=False)
|
||||||
tg_username = db.Column(db.String(80), unique=True)
|
tg_id = db.Column(db.String(80), unique=True)
|
||||||
|
|
||||||
def __init__(self, username, password, tg_username=None):
|
def __init__(self, username, password, tg_username=None):
|
||||||
self.username = username
|
self.username = username
|
||||||
@@ -29,6 +29,9 @@ class User(db.Model):
|
|||||||
def get_id(self):
|
def get_id(self):
|
||||||
return self.id
|
return self.id
|
||||||
|
|
||||||
|
def get_tg_id(self):
|
||||||
|
return self.tg_id
|
||||||
|
|
||||||
|
|
||||||
class Trigger(db.Model):
|
class Trigger(db.Model):
|
||||||
__tablename__ = 'Triggers'
|
__tablename__ = 'Triggers'
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
from threading import Thread
|
from threading import Thread
|
||||||
import triggers
|
import triggers
|
||||||
|
import actions
|
||||||
import db_routing
|
import db_routing
|
||||||
|
|
||||||
|
|
||||||
@@ -15,7 +16,7 @@ class Executor(Thread):
|
|||||||
def execute(self):
|
def execute(self):
|
||||||
trigger = getattr(triggers, self.trigger_def)
|
trigger = getattr(triggers, self.trigger_def)
|
||||||
trigger(self.trigger_args)
|
trigger(self.trigger_args)
|
||||||
action = getattr(triggers, self.action_def)
|
action = getattr(actions, self.action_def)
|
||||||
action(self.action_args)
|
action(self.action_args)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
|||||||
38
triggers.py
38
triggers.py
@@ -1,22 +1,24 @@
|
|||||||
# Парсер почты
|
|
||||||
import datetime
|
import datetime
|
||||||
import email
|
import email
|
||||||
import imaplib
|
import imaplib
|
||||||
# будильник
|
|
||||||
import threading
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
def test_trigger(var):
|
||||||
|
time.sleep(int(var))
|
||||||
|
|
||||||
|
|
||||||
# Будильник
|
# Будильник
|
||||||
# Формат строки (год месяц день час минута секунда)
|
# Формат строки (год месяц день час минута секунда)
|
||||||
#Config_time='2020 3 22 15 20 0'
|
# Config_time='2020#3#22#15#20#0'
|
||||||
def alarm_clock(Config_time):
|
def alarm_clock(config_time):
|
||||||
Config_list=Config_time.split()
|
config_list = config_time.split('#')
|
||||||
dt = datetime.datetime(int(Config_list[0]), int(Config_list[1]), int(Config_list[2]), int(Config_list[3]), int(Config_list[4]),
|
dt = datetime.datetime(int(config_list[0]), int(config_list[1]), int(config_list[2]), int(config_list[3]),
|
||||||
int(Config_list[5]))
|
int(config_list[4]),
|
||||||
|
int(config_list[5]))
|
||||||
diff = (dt - datetime.datetime.now()).total_seconds()
|
diff = (dt - datetime.datetime.now()).total_seconds()
|
||||||
try:
|
try:
|
||||||
time.sleep(diff)
|
time.sleep(diff)
|
||||||
print('сообщение в телегу текст')
|
|
||||||
except:
|
except:
|
||||||
print('Нельзя поставить будильник в прошлое')
|
print('Нельзя поставить будильник в прошлое')
|
||||||
return
|
return
|
||||||
@@ -24,11 +26,10 @@ def alarm_clock(Config_time):
|
|||||||
|
|
||||||
# проверка почты на новое письмо gmail
|
# проверка почты на новое письмо gmail
|
||||||
# Нужно включить https://myaccount.google.com/lesssecureapps и https://mail.google.com/mail/u/2/#settings/fwdandpop
|
# Нужно включить https://myaccount.google.com/lesssecureapps и https://mail.google.com/mail/u/2/#settings/fwdandpop
|
||||||
# Формат строки (логин пароль )
|
# Формат строки (логин#пароль)
|
||||||
# check_mail_config='login@gmail.com Password123'
|
# check_mail_config='login@gmail.com Password123'
|
||||||
|
|
||||||
def check_email(check_mail_config):
|
def check_email(check_mail_config):
|
||||||
mail_config_list=check_mail_config.split()
|
mail_config_list = check_mail_config.split('#')
|
||||||
mail = imaplib.IMAP4_SSL('imap.gmail.com', 993)
|
mail = imaplib.IMAP4_SSL('imap.gmail.com', 993)
|
||||||
mail.login(mail_config_list[0], mail_config_list[1])
|
mail.login(mail_config_list[0], mail_config_list[1])
|
||||||
mail.list()
|
mail.list()
|
||||||
@@ -47,15 +48,6 @@ def check_email(check_mail_config):
|
|||||||
email_message_From = email_message['From']
|
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[email_message_From.index('<'):email_message_From.index('>')]
|
||||||
email_message_From = email_message_From[1:]
|
email_message_From = email_message_From[1:]
|
||||||
print('Отправить сообщение в телегу о том, что занят')
|
return
|
||||||
print('Отправить "от кого" ', email_message_From)
|
# count_Email_Start = count_Email_Current
|
||||||
count_Email_Start = count_Email_Current
|
|
||||||
time.sleep(15) # частота проверки нового письма
|
time.sleep(15) # частота проверки нового письма
|
||||||
|
|
||||||
def test_trigger(var):
|
|
||||||
time.sleep(int(var))
|
|
||||||
|
|
||||||
|
|
||||||
def test_action(var):
|
|
||||||
print("Я пишу", var)
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user