def run(self): self.log.info('Starting recovery on channel %s (%s -> %s)', self.channel.id, self.start_dt, self.end_dt) msgs = self.channel.messages_iter( bulk=True, direction=MessageIterator.Direction.DOWN, after=str(from_datetime(self.start_dt)) ) for chunk in msgs: Message.from_disco_message_many(chunk, safe=True) if to_datetime(chunk[-1].id) > self.end_dt: break
def argument_stale_reports(self, params, reports: dict): r = reduce(list.__add__, reports.values()) if params[0] == "all" \ else reports[params[0]] if params[0] in reports.keys() else [] hours = params[1] target = datetime.today() - timedelta(hours=int(hours)) target_snowflake = snowflake.from_datetime(target) stale_reports = [] for report in r: if report.id < target_snowflake: if report.edited_timestamp is not None: if report.edited_timestamp < target: stale_reports.append(report) else: stale_reports.append(report) return str(len(stale_reports))