mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-06-01 04:03:18 +03:00
Fix iter_dialogs missing dialogs once and for all
This commit is contained in:
parent
b8a38baaf6
commit
31a26c0a0a
|
@ -77,15 +77,19 @@ class _DialogsIter(RequestIter):
|
||||||
# we didn't get a DialogsSlice which means we got all.
|
# we didn't get a DialogsSlice which means we got all.
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# Don't set `request.offset_id` to the last message ID.
|
# We can't use `messages[-1]` as the offset ID / date.
|
||||||
# Why? It seems to cause plenty of dialogs to be skipped.
|
# Why? Because pinned dialogs will mess with the order
|
||||||
#
|
# in this list. Instead, we find the last dialog which
|
||||||
# By leaving it to 0 after the first iteration, even if
|
# has a message, and use it as an offset.
|
||||||
# the user originally passed another ID, we ensure that
|
last_message = next((
|
||||||
# it will work correctly.
|
messages[d.top_message]
|
||||||
self.request.offset_id = 0
|
for d in reversed(r.dialogs)
|
||||||
|
if d.top_message in messages
|
||||||
|
), None)
|
||||||
|
|
||||||
self.request.exclude_pinned = True
|
self.request.exclude_pinned = True
|
||||||
self.request.offset_date = r.messages[-1].date
|
self.request.offset_id = last_message.id if last_message else 0
|
||||||
|
self.request.offset_date = last_message.date if last_message else None
|
||||||
self.request.offset_peer =\
|
self.request.offset_peer =\
|
||||||
entities[utils.get_peer_id(r.dialogs[-1].peer)]
|
entities[utils.get_peer_id(r.dialogs[-1].peer)]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user