@@ -504,7 +504,35 @@ impl Message {
504
504
if let Some ( true ) = include_users {
505
505
let user_ids = messages
506
506
. iter ( )
507
- . map ( |m| m. author . clone ( ) )
507
+ . flat_map ( |m| {
508
+ let mut users = vec ! [ m. author. clone( ) ] ;
509
+ if let Some ( system) = & m. system {
510
+ match system {
511
+ v0:: SystemMessage :: ChannelDescriptionChanged { by } => {
512
+ users. push ( by. clone ( ) )
513
+ }
514
+ v0:: SystemMessage :: ChannelIconChanged { by } => users. push ( by. clone ( ) ) ,
515
+ v0:: SystemMessage :: ChannelOwnershipChanged { from, to, .. } => {
516
+ users. push ( from. clone ( ) ) ;
517
+ users. push ( to. clone ( ) )
518
+ }
519
+ v0:: SystemMessage :: ChannelRenamed { by, .. } => users. push ( by. clone ( ) ) ,
520
+ v0:: SystemMessage :: UserAdded { by, id, .. }
521
+ | v0:: SystemMessage :: UserRemove { by, id, .. } => {
522
+ users. push ( by. clone ( ) ) ;
523
+ users. push ( id. clone ( ) ) ;
524
+ }
525
+ v0:: SystemMessage :: UserBanned { id, .. }
526
+ | v0:: SystemMessage :: UserKicked { id, .. }
527
+ | v0:: SystemMessage :: UserJoined { id, .. }
528
+ | v0:: SystemMessage :: UserLeft { id, .. } => {
529
+ users. push ( id. clone ( ) ) ;
530
+ }
531
+ v0:: SystemMessage :: Text { .. } => { }
532
+ }
533
+ }
534
+ users
535
+ } )
508
536
. collect :: < HashSet < String > > ( )
509
537
. into_iter ( )
510
538
. collect :: < Vec < String > > ( ) ;
0 commit comments