diff --git a/python/CHANGELOG b/python/CHANGELOG index 611e3c622..19e50f72e 100644 --- a/python/CHANGELOG +++ b/python/CHANGELOG @@ -1,3 +1,10 @@ +1.40.x +--------------- + +- emit "ac_member_removed" event (with 'actor' being the removed contact) + for when a user leaves a group. + + 1.40.0 --------------- diff --git a/python/src/deltachat/message.py b/python/src/deltachat/message.py index 149425bc8..9912d3855 100644 --- a/python/src/deltachat/message.py +++ b/python/src/deltachat/message.py @@ -374,7 +374,7 @@ def extract_addr(text): if m: text = m.group(1) text = text.rstrip(".") - return text + return text.strip() def parse_system_add_remove(text): @@ -386,8 +386,14 @@ def parse_system_add_remove(text): # Member x@y added by a@b # Member With space (tmp1@x.org) removed by tmp2@x.org. # Member With space (tmp1@x.org) removed by Another member (tmp2@x.org).", + # Group left by some one (tmp1@x.org). + # Group left by tmp1@x.org. text = text.lower() m = re.match(r'member (.+) (removed|added) by (.+)', text) if m: affected, action, actor = m.groups() return action, extract_addr(affected), extract_addr(actor) + if text.startswith("group left by "): + addr = extract_addr(text[13:]) + if addr: + return "removed", addr, addr diff --git a/python/tests/test_account.py b/python/tests/test_account.py index 1c8e34f76..8613f813e 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -19,6 +19,10 @@ from datetime import datetime, timedelta ("removed", "tmp1@x.org", "tmp2@x.org")), ("Member With space (tmp1@x.org) removed by me", ("removed", "tmp1@x.org", "me")), + ("Group left by some one (tmp1@x.org).", + ("removed", "tmp1@x.org", "tmp1@x.org")), + ("Group left by tmp1@x.org.", + ("removed", "tmp1@x.org", "tmp1@x.org")), ("Member tmp1@x.org added by tmp2@x.org.", ("added", "tmp1@x.org", "tmp2@x.org")), ("Member nothing bla bla", None), ("Another unknown system message", None),