@@ -1888,6 +1888,16 @@ func (lc *LineClient) handleOperation(ctx context.Context, op line.Operation) {
18881888 case OpDeleteOtherFromChat :
18891889 lc .handleMemberLeave (op .Param1 , op .Param2 )
18901890
1891+ case OpNotifiedDeleteOtherFromChat :
1892+ removal , ok := lc .makeNotifiedMemberRemovalEvent (op )
1893+ if ! ok {
1894+ lc .UserLogin .Bridge .Log .Warn ().
1895+ Int ("op_type" , op .Type ).
1896+ Msg ("Ignoring malformed notified member removal" )
1897+ return
1898+ }
1899+ lc .UserLogin .Bridge .QueueRemoteEvent (lc .UserLogin , removal )
1900+
18911901 case OpNotifiedLeaveChat :
18921902 lower1 := strings .ToLower (op .Param1 )
18931903 if strings .HasPrefix (lower1 , "c" ) || strings .HasPrefix (lower1 , "r" ) {
@@ -2281,6 +2291,30 @@ func (lc *LineClient) handleMemberLeft(chatMid, leaverMid string) {
22812291 lc .handleMemberLeaveWithSender (chatMid , leaverMid , lc .eventSenderForMID (leaverMid ))
22822292}
22832293
2294+ func (lc * LineClient ) makeNotifiedMemberRemovalEvent (op line.Operation ) (* simplevent.ChatInfoChange , bool ) {
2295+ if OperationType (op .Type ) != OpNotifiedDeleteOtherFromChat ||
2296+ ! isChatMID (op .Param1 ) ||
2297+ ! isUserMID (op .Param2 ) ||
2298+ ! isUserMID (op .Param3 ) ||
2299+ op .Param2 == op .Param3 {
2300+ return nil , false
2301+ }
2302+
2303+ ts := time .Now ()
2304+ if timestamp , err := op .CreatedTime .Int64 (); err == nil && timestamp > 0 {
2305+ ts = time .UnixMilli (timestamp )
2306+ }
2307+ lc .removeGroupMemberFromCache (op .Param1 , op .Param3 )
2308+ return makeMemberChangeEvent (
2309+ networkid.PortalKey {ID : makePortalID (op .Param1 ), Receiver : lc .UserLogin .ID },
2310+ lc .eventSenderForMID (op .Param3 ),
2311+ lc .eventSenderForMID (op .Param2 ),
2312+ event .MembershipLeave ,
2313+ ts ,
2314+ false ,
2315+ ), true
2316+ }
2317+
22842318func (lc * LineClient ) handleMemberLeaveWithSender (chatMid , leaverMid string , changeSender bridgev2.EventSender ) {
22852319 lower := strings .ToLower (chatMid )
22862320 if ! strings .HasPrefix (lower , "c" ) && ! strings .HasPrefix (lower , "r" ) {
0 commit comments