@@ -373,7 +373,7 @@ public override async Task Outgoing(ProtocolEvent e)
373373 }
374374 }
375375
376- private async Task ResolveIncomingChain ( MessageChain chain )
376+ public async Task ResolveIncomingChain ( MessageChain chain )
377377 {
378378 foreach ( var entity in chain )
379379 {
@@ -494,35 +494,42 @@ private async Task ResolveIncomingChain(MessageChain chain)
494494 }
495495 case ForwardEntity forward :
496496 {
497- if ( chain is { GroupUin : not null } )
497+ MessageChain ? newChain = null ;
498+ if ( forward . Sequence != 0 )
498499 {
499- var events = await Collection . Business . SendEvent ( GetGroupMessageEvent . Create (
500- chain . GroupUin . Value ,
501- forward . Sequence ,
502- forward . Sequence
503- ) ) ;
504-
505- if ( events . Count < 1 ) break ;
506- if ( events [ 0 ] is not GetGroupMessageEvent @event ) break ;
507- if ( @event . ResultCode != 0 ) break ;
508- if ( @event . Chains . Count < 1 ) break ;
509-
510- forward . Chain = @event . Chains [ 0 ] ;
500+ if ( chain is { GroupUin : not null } )
501+ {
502+ var events = await Collection . Business . SendEvent ( GetGroupMessageEvent . Create (
503+ chain . GroupUin . Value ,
504+ forward . Sequence ,
505+ forward . Sequence
506+ ) ) ;
507+ if ( events . Count != 0 &&
508+ events [ 0 ] is GetGroupMessageEvent @event &&
509+ @event . ResultCode == 0 )
510+ {
511+ newChain = @event . Chains [ 0 ] ;
512+ }
513+ }
514+ else
515+ {
516+ var events = await Collection . Business . SendEvent ( GetC2cMessageEvent . Create (
517+ chain . Uid ?? "" ,
518+ forward . Sequence ,
519+ forward . Sequence
520+ ) ) ;
521+ if ( events . Count != 0 &&
522+ events [ 0 ] is GetC2cMessageEvent @event &&
523+ @event . ResultCode == 0 )
524+ {
525+ newChain = @event . Chains [ 0 ] ;
526+ }
527+
528+ }
511529 }
512- else
530+ if ( newChain == null || newChain . Count == 0 )
513531 {
514- var events = await Collection . Business . SendEvent ( GetC2cMessageEvent . Create (
515- chain . Uid ?? "" ,
516- forward . Sequence ,
517- forward . Sequence
518- ) ) ;
519-
520- if ( events . Count < 1 ) break ;
521- if ( events [ 0 ] is not GetC2cMessageEvent @event ) break ;
522- if ( @event . ResultCode != 0 ) break ;
523- if ( @event . Chains . Count < 1 ) break ;
524-
525- forward . Chain = @event . Chains [ 0 ] ;
532+ await ResolveIncomingChain ( forward . Chain ) ;
526533 }
527534
528535 break ;
0 commit comments