@@ -15,7 +15,7 @@ use ratelimit::Ratelimit;
1515use serde:: Serialize ;
1616use tokio:: sync:: { Mutex , Notify , RwLock } ;
1717
18- use crate :: chat:: { get_chat_cnt, ChatId , ProtectionStatus } ;
18+ use crate :: chat:: { self , get_chat_cnt, ChatId , ChatVisibility , MuteDuration , ProtectionStatus } ;
1919use crate :: chatlist_events;
2020use crate :: config:: Config ;
2121use crate :: constants:: {
@@ -1215,7 +1215,18 @@ impl Context {
12151215 . context ( "Self reporting bot vCard does not contain a contact" ) ?;
12161216 mark_contact_id_as_verified ( self , contact_id, ContactId :: SELF ) . await ?;
12171217
1218- let chat_id = ChatId :: create_for_contact ( self , contact_id) . await ?;
1218+ let chat_id = if let Some ( res) = ChatId :: lookup_by_contact ( self , contact_id) . await ? {
1219+ // Already exists, no need to create.
1220+ res
1221+ } else {
1222+ let chat_id = ChatId :: get_for_contact ( self , contact_id) . await ?;
1223+ chat_id
1224+ . set_visibility ( self , ChatVisibility :: Archived )
1225+ . await ?;
1226+ chat:: set_muted ( self , chat_id, MuteDuration :: Forever ) . await ?;
1227+ chat_id
1228+ } ;
1229+
12191230 chat_id
12201231 . set_protection ( self , ProtectionStatus :: Protected , time ( ) , Some ( contact_id) )
12211232 . await ?;
0 commit comments