Эх сурвалжийг харах

Merge pull request #223 from mautrix/sumner/bri-1021

signal kicks: handle being kicked from Signal group
Sumner Evans 3 жил өмнө
parent
commit
011528e657

+ 1 - 0
mausignald/types.py

@@ -163,6 +163,7 @@ class Group(SerializableAttrs):
 class GroupV2ID(SerializableAttrs):
     id: GroupID
     revision: Optional[int] = None
+    removed: Optional[bool] = False
 
 
 class AccessControlMode(SerializableEnum):

+ 4 - 0
mautrix_signal/portal.py

@@ -945,6 +945,10 @@ class Portal(DBPortal, BasePortal):
         else:
             self.log.debug(f"Didn't get event ID for {message.timestamp}")
 
+    async def handle_signal_kicked(self, user: u.User, sender: pu.Puppet) -> None:
+        self.log.debug(f"{user.mxid} was kicked by {sender.number} from {self.mxid}")
+        await self.main_intent.kick_user(self.mxid, user.mxid, f"{sender.name} kicked you")
+
     @staticmethod
     async def _make_media_content(
         attachment: Attachment, data: bytes

+ 7 - 0
mautrix_signal/signal.py

@@ -175,6 +175,13 @@ class SignalHandler(SignaldClient):
                 )
                 return
         assert portal
+
+        # Handle the user being removed from the group.
+        if msg.group_v2 and msg.group_v2.removed:
+            if portal.mxid:
+                await portal.handle_signal_kicked(user, sender)
+            return
+
         if not portal.mxid:
             if not msg.is_message and not msg.group_v2:
                 user.log.debug(