Always reply with list of active reminders
This commit is contained in:
parent
a048526722
commit
d97754876a
1 changed files with 28 additions and 21 deletions
49
remindme.py
49
remindme.py
|
|
@ -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,23 +53,22 @@ 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)]
|
||||
))
|
||||
return reply, True
|
||||
reply = empty_reply(msg)
|
||||
reply.set_content(list_reminders(msg["From"], client))
|
||||
|
||||
if payload.startswith("repeat"):
|
||||
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:
|
||||
print(get_description(payload))
|
||||
it = croniter(payload, datetime.now())
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue