@@ -59,6 +59,10 @@ pub enum SyncCommand {
5959 Msgs {
6060 #[ command( flatten) ]
6161 common : CommonSyncArgs ,
62+
63+ /// Sync only this specific chat (by chat ID)
64+ #[ arg( long, value_name = "CHAT_ID" ) ]
65+ chat : Option < i64 > ,
6266 } ,
6367}
6468
@@ -97,6 +101,7 @@ fn build_sync_options(common: &CommonSyncArgs) -> crate::app::sync::SyncOptions
97101 incremental : true , // Always incremental
98102 messages_per_chat : common. messages_per_chat ,
99103 concurrency : common. concurrency ,
104+ chat_filter : None ,
100105 }
101106}
102107
@@ -188,10 +193,11 @@ pub async fn run(cli: &Cli, args: &SyncArgs) -> Result<()> {
188193 let result = app. sync_chats ( opts) . await ?;
189194 print_sync_result ( common, & result, "chats-only" ) ;
190195 }
191- Some ( SyncCommand :: Msgs { common } ) => {
196+ Some ( SyncCommand :: Msgs { common, chat } ) => {
192197 // Sync messages only from local chats (uses stored access_hash, no iter_dialogs)
193198 let mut app = App :: new ( cli) . await ?;
194- let opts = build_sync_options ( common) ;
199+ let mut opts = build_sync_options ( common) ;
200+ opts. chat_filter = * chat;
195201 let result = app. sync_msgs ( opts) . await ?;
196202 print_sync_result ( common, & result, "msgs-only" ) ;
197203 }
0 commit comments