@@ -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:: {
@@ -1213,7 +1213,18 @@ impl Context {
1213
1213
. context ( "Self reporting bot vCard does not contain a contact" ) ?;
1214
1214
mark_contact_id_as_verified ( self , contact_id, ContactId :: SELF ) . await ?;
1215
1215
1216
- let chat_id = ChatId :: create_for_contact ( self , contact_id) . await ?;
1216
+ let chat_id = if let Some ( res) = ChatId :: lookup_by_contact ( self , contact_id) . await ? {
1217
+ // Already exists, no need to create.
1218
+ res
1219
+ } else {
1220
+ let chat_id = ChatId :: get_for_contact ( self , contact_id) . await ?;
1221
+ chat_id
1222
+ . set_visibility ( self , ChatVisibility :: Archived )
1223
+ . await ?;
1224
+ chat:: set_muted ( self , chat_id, MuteDuration :: Forever ) . await ?;
1225
+ chat_id
1226
+ } ;
1227
+
1217
1228
chat_id
1218
1229
. set_protection ( self , ProtectionStatus :: Protected , time ( ) , Some ( contact_id) )
1219
1230
. await ?;
0 commit comments