Always reply with list of active reminders

This commit is contained in:
Maximilian Friedersdorff 2019-12-12 20:41:42 +00:00
parent a048526722
commit d97754876a

View file

@ -27,6 +27,19 @@ def empty_reply(msg):
return reply
def list_reminders(person, client):
persons_messages = client.fetch(
client.search(["FROM", person]), "RFC822"
)
reminders = []
for uid, reminder in persons_messages.items():
reminder = email.message_from_bytes(reminder[b"RFC822"])
reminders.append(
f"({uid}) {reminder['Subject']}: {reminder.get_payload().strip()}"
)
return "\n".join(reminders)
def ack_message(uid, message, client):
msg = email.message_from_bytes(message[b"RFC822"])
if msg.is_multipart():
@ -40,21 +53,20 @@ def ack_message(uid, message, client):
reply.set_content(help_text)
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)]
))
reply.set_content(list_reminders(msg["From"], client))
if payload.startswith("list"):
reply["Subject"] = (
f"List of active reminders (was: {reply['Subject']})"
)
return reply, True
else:
msg.replace_header("Subject", f"Set reminder: {reply['Subject']}")
prefix = (f"Successfully set reminder: {payload}.\n\n"
"Your reminders are:")
reply.set_content(f"{prefix}\n{reply.get_content()}")
return reply, False
if payload.startswith("repeat"):
try:
@ -65,11 +77,6 @@ def ack_message(uid, message, client):
print("Invalid Cron: ", e)
return None, False
date = d_parse(payload)
print(date)
return None, False
def main():
mhost = "mail.friedersdorff.com"