@@ -15,7 +15,7 @@ use ratelimit::Ratelimit;
15
15
use serde:: Serialize ;
16
16
use tokio:: sync:: { Mutex , Notify , RwLock } ;
17
17
18
- use crate :: chat:: { get_chat_cnt, ChatId , ProtectionStatus } ;
18
+ use crate :: chat:: { self , get_chat_cnt, ChatId , ChatVisibility , MuteDuration , ProtectionStatus } ;
19
19
use crate :: chatlist_events;
20
20
use crate :: config:: Config ;
21
21
use crate :: constants:: {
@@ -1215,7 +1215,18 @@ impl Context {
1215
1215
. context ( "Self reporting bot vCard does not contain a contact" ) ?;
1216
1216
mark_contact_id_as_verified ( self , contact_id, ContactId :: SELF ) . await ?;
1217
1217
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
+
1219
1230
chat_id
1220
1231
. set_protection ( self , ProtectionStatus :: Protected , time ( ) , Some ( contact_id) )
1221
1232
. await ?;
0 commit comments