Clean up iter_messages with reverse=True

This commit is contained in:
Lonami Exo 2019-02-26 09:42:28 +01:00
parent 5b098a909a
commit 1e4a12d2f7

View File

@ -254,7 +254,8 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods):
# We don't need to fetch 100 if the limit is less. # We don't need to fetch 100 if the limit is less.
batch_size = min(max(batch_size, 1), min(100, limit)) batch_size = min(max(batch_size, 1), min(100, limit))
# Use a negative offset to work around reversing the results # When going in reverse we need an offset of `-limit`, but we
# also want to respect what the user passed, so add them together.
if reverse: if reverse:
request.add_offset -= batch_size request.add_offset -= batch_size
@ -263,8 +264,8 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods):
request.limit = min(limit - have, batch_size) request.limit = min(limit - have, batch_size)
if reverse and request.limit != batch_size: if reverse and request.limit != batch_size:
# Last batch needs special care if we're on reverse # Remember that we need -limit when going in reverse
request.add_offset += batch_size - request.limit + 1 request.add_offset = add_offset - request.limit
r = await self(request) r = await self(request)
if _total: if _total:
@ -330,7 +331,7 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods):
request.offset_peer = last_message.input_chat request.offset_peer = last_message.input_chat
elif reverse: elif reverse:
# We want to skip the one we already have # We want to skip the one we already have
request.add_offset -= 1 request.offset_id += 1
await asyncio.sleep( await asyncio.sleep(
max(wait_time - (time.time() - start), 0), loop=self._loop) max(wait_time - (time.time() - start), 0), loop=self._loop)