[docs]asyncdeffill_participants(self):users_ids=set()asyncformemberinself.session.mm_client.get_channel_members(self.legacy_id):member:ChannelMember# type:ignoreusers_ids.add(member.user_id)known=set(awaitself.session.contacts.known_user_ids())self.log.debug("Known %s",known)missing=users_ids-knownifmissing:users={u.id:uforuinawaitself.session.mm_client.get_users_by_ids(list(missing))}self.log.debug("Fetched %s users at once",len(users))else:users={}foruser_idinusers_ids:ifuser_id==awaitself.session.mm_client.mm_id:continuecontact=awaitself.session.contacts.by_mm_user_id(user_id,users.get(user_id))yieldawaitself.get_participant_by_contact(contact)
[docs]asyncdefbackfill(self,after:Optional[HoleBound]=None,before:Optional[HoleBound]=None,):ifnotconfig.BACKFILL_POSTS:returnnow=datetime.now()i=0self.log.info("Backfill request between %s and %s",before,after)before_id=NoneifbeforeisNoneelsebefore.idafter_id=NoneifafterisNoneelseafter.idasyncforpostinself.session.mm_client.get_posts_for_channel(self.legacy_id,before=before_id):ifpost.id==after_id:breakifi==0andnotself.xmpp.cache.msg_id_get(awaitself.session.mm_client.mm_id,self.legacy_id):self.xmpp.cache.msg_id_store(awaitself.session.mm_client.mm_id,self.legacy_id,post.id)ifnow-datetime.fromtimestamp(post.create_at/1000)>timedelta(days=global_config.MAM_MAX_DAYS):breakpart=awaitself.get_participant_by_mm_user_id(post.user_id)awaitpart.send_mm_post(post,archive_only=True)i+=1ifi==config.BACKFILL_POSTS:break