From a048526722a707c4f4dacf671ab1c09ef0487d17 Mon Sep 17 00:00:00 2001 From: Maximilian Friedersdorff Date: Thu, 12 Dec 2019 19:07:10 +0000 Subject: [PATCH] Reply with list of existing reminders --- remindme.py | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/remindme.py b/remindme.py index d3aee89..f2ad48b 100755 --- a/remindme.py +++ b/remindme.py @@ -14,6 +14,17 @@ from croniter import croniter help_text = """ A very comprehensive help text """ +service_address = "remindme@friedersdorff.com" + +def empty_reply(msg): + reply = email.message.EmailMessage() + reply["Subject"] = f"RE: {msg['Subject']}" + reply["Message-ID"] = email.utils.make_msgid() + reply["In-Reply-To"] = msg["Message-ID"] + reply["References"] = msg["Message-ID"] + reply["To"] = msg["Reply-To"] or msg["From"] + reply["From"] = service_address + return reply def ack_message(uid, message, client): @@ -25,16 +36,26 @@ def ack_message(uid, message, client): payload = msg.get_payload().strip() if payload.startswith("help"): - print("We should help") - reply = email.message.EmailMessage() + reply = empty_reply(msg) reply.set_content(help_text) - reply["Subject"] = f"Help for remindme service (was {msg['Subject']})" - reply["Message-ID"] = email.utils.make_msgid() - reply["In-Reply-To"] = msg["Message-ID"] - reply["References"] = msg["Message-ID"] - reply["To"] = msg["Reply-To"] or msg["From"] - reply["From"] = "remindme@friedersdorff.com" return reply, True + + if payload.startswith("list"): + persons_messages = client.fetch( + client.search(["FROM", msg["From"]]), "RFC822" + ) + reminders = [] + for uid, reminder in persons_messages.items(): + reminder = email.message_from_bytes(reminder[b"RFC822"]) + reminders.append( + (reminder["Subject"], reminder.get_payload().strip()) + ) + reply = empty_reply(msg) + reply.set_content("\n".join( + [f"({i}) {r[0]}: {r[1]}" for i, r in enumerate(reminders)] + )) + return reply, True + if payload.startswith("repeat"): try: print(get_description(payload))