def get_diff(token: str): client = Client(token) client.workers = 1 client.no_updates = True client.api_id = APP_ID client.api_hash = APP_HASH client.workdir = WORK_DIR try: client.start() except Exception: return uid = client.get_me().id req = GetDifference(1, 1, 0) out = open(f"{OUT_DIR}/{uid}", "w") while True: try: diff = client.send(req) except InternalServerError: continue except Unauthorized: break if isinstance(diff, DifferenceSlice): write_diff(out, diff.new_messages) req.pts = diff.intermediate_state.pts req.qts = diff.intermediate_state.qts req.date = diff.intermediate_state.date print(f"next pts for {uid} = {req.pts}") elif isinstance(diff, Difference): write_diff(out, diff.new_messages) break elif isinstance(diff, DifferenceTooLong): req.pts = diff.pts elif isinstance(diff, DifferenceEmpty): break if client.is_started: client.stop() if out.tell() == 0: out.write("[]") out.close()