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
|
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):
|
def ack_message(uid, message, client):
|
||||||
msg = email.message_from_bytes(message[b"RFC822"])
|
msg = email.message_from_bytes(message[b"RFC822"])
|
||||||
if msg.is_multipart():
|
if msg.is_multipart():
|
||||||
|
|
@ -40,23 +53,22 @@ def ack_message(uid, message, client):
|
||||||
reply.set_content(help_text)
|
reply.set_content(help_text)
|
||||||
return reply, True
|
return reply, True
|
||||||
|
|
||||||
if payload.startswith("list"):
|
reply = empty_reply(msg)
|
||||||
persons_messages = client.fetch(
|
reply.set_content(list_reminders(msg["From"], client))
|
||||||
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"):
|
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:
|
try:
|
||||||
print(get_description(payload))
|
print(get_description(payload))
|
||||||
it = croniter(payload, datetime.now())
|
it = croniter(payload, datetime.now())
|
||||||
|
|
@ -65,11 +77,6 @@ def ack_message(uid, message, client):
|
||||||
print("Invalid Cron: ", e)
|
print("Invalid Cron: ", e)
|
||||||
return None, False
|
return None, False
|
||||||
|
|
||||||
date = d_parse(payload)
|
|
||||||
print(date)
|
|
||||||
|
|
||||||
return None, False
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
mhost = "mail.friedersdorff.com"
|
mhost = "mail.friedersdorff.com"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue