mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-06-18 11:06:39 +00:00
Fix .get_dialogs to never return more than limit
This commit is contained in:
parent
427a6aabaa
commit
7aa21dbd07
@ -256,11 +256,12 @@ class TelegramClient(TelegramBareClient):
|
|||||||
messages = {} # Used later for sorting TODO also return these?
|
messages = {} # Used later for sorting TODO also return these?
|
||||||
entities = {}
|
entities = {}
|
||||||
while len(dialogs) < limit:
|
while len(dialogs) < limit:
|
||||||
|
need = limit - len(dialogs)
|
||||||
r = self(GetDialogsRequest(
|
r = self(GetDialogsRequest(
|
||||||
offset_date=offset_date,
|
offset_date=offset_date,
|
||||||
offset_id=offset_id,
|
offset_id=offset_id,
|
||||||
offset_peer=offset_peer,
|
offset_peer=offset_peer,
|
||||||
limit=0 # limit 0 often means "as much as possible"
|
limit=need if need < float('inf') else 0
|
||||||
))
|
))
|
||||||
if not r.dialogs:
|
if not r.dialogs:
|
||||||
break
|
break
|
||||||
@ -290,10 +291,12 @@ class TelegramClient(TelegramBareClient):
|
|||||||
# so we need to set at least one day ahead while still being
|
# so we need to set at least one day ahead while still being
|
||||||
# the smallest date possible.
|
# the smallest date possible.
|
||||||
no_date = datetime.fromtimestamp(86400)
|
no_date = datetime.fromtimestamp(86400)
|
||||||
ds = sorted(
|
ds = list(sorted(
|
||||||
list(dialogs.values()),
|
dialogs.values(),
|
||||||
key=lambda d: getattr(messages[d.top_message], 'date', no_date)
|
key=lambda d: getattr(messages[d.top_message], 'date', no_date)
|
||||||
)
|
))
|
||||||
|
if limit < float('inf'):
|
||||||
|
ds = ds[:limit]
|
||||||
return (
|
return (
|
||||||
ds,
|
ds,
|
||||||
[utils.find_user_or_chat(d.peer, entities, entities) for d in ds]
|
[utils.find_user_or_chat(d.peer, entities, entities) for d in ds]
|
||||||
|
Loading…
Reference in New Issue
Block a user