Skip to content

Commit 2718343

Browse files
committed
fix chat message count in search_messages_count & get_chat_history_count
1 parent 5f5bb83 commit 2718343

2 files changed

Lines changed: 58 additions & 39 deletions

File tree

pyrogram/methods/messages/get_chat_history_count.py

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,20 +53,31 @@ async def get_chat_history_count(
5353
await app.get_chat_history_count(chat_id)
5454
"""
5555

56-
r = await self.invoke(
57-
raw.functions.messages.GetHistory(
58-
peer=await self.resolve_peer(chat_id),
59-
offset_id=0,
60-
offset_date=0,
61-
add_offset=0,
62-
limit=1,
63-
max_id=0,
64-
min_id=0,
65-
hash=0
56+
peer = await self.resolve_peer(chat_id)
57+
58+
# https://t.me/tdlibchat/189410
59+
ranges = await self.invoke(raw.functions.messages.GetSplitRanges())
60+
total = 0
61+
62+
for split_range in ranges:
63+
r = await self.invoke(
64+
raw.functions.InvokeWithMessagesRange(
65+
range=split_range,
66+
query=raw.functions.messages.GetHistory(
67+
peer=peer,
68+
offset_id=0,
69+
offset_date=0,
70+
add_offset=0,
71+
limit=1,
72+
max_id=0,
73+
min_id=0,
74+
hash=0
75+
)
76+
)
6677
)
67-
)
78+
if isinstance(r, raw.types.messages.Messages):
79+
total += len(r.messages)
80+
else:
81+
total += r.count
6882

69-
if isinstance(r, raw.types.messages.Messages):
70-
return len(r.messages)
71-
else:
72-
return r.count
83+
return total

pyrogram/methods/messages/search_messages_count.py

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -62,29 +62,37 @@ async def search_messages_count(
6262
Returns:
6363
``int``: On success, the messages count is returned.
6464
"""
65-
r = await self.invoke(
66-
raw.functions.messages.Search(
67-
peer=await self.resolve_peer(chat_id),
68-
q=query,
69-
filter=filter.value(),
70-
min_date=0,
71-
max_date=0,
72-
offset_id=0,
73-
add_offset=0,
74-
limit=1,
75-
min_id=0,
76-
max_id=0,
77-
from_id=(
78-
await self.resolve_peer(from_user)
79-
if from_user
80-
else None
81-
),
82-
top_msg_id=message_thread_id,
83-
hash=0
65+
peer = await self.resolve_peer(chat_id)
66+
from_id = await self.resolve_peer(from_user) if from_user else None
67+
68+
# https://t.me/tdlibchat/189410
69+
ranges = await self.invoke(raw.functions.messages.GetSplitRanges())
70+
total = 0
71+
72+
for split_range in ranges:
73+
r = await self.invoke(
74+
raw.functions.InvokeWithMessagesRange(
75+
range=split_range,
76+
query=raw.functions.messages.Search(
77+
peer=peer,
78+
q=query,
79+
filter=filter.value(),
80+
min_date=0,
81+
max_date=0,
82+
offset_id=0,
83+
add_offset=0,
84+
limit=1,
85+
min_id=0,
86+
max_id=0,
87+
from_id=from_id,
88+
top_msg_id=message_thread_id,
89+
hash=0
90+
)
91+
)
8492
)
85-
)
93+
if hasattr(r, "count"):
94+
total += r.count
95+
else:
96+
total += len(r.messages)
8697

87-
if hasattr(r, "count"):
88-
return r.count
89-
else:
90-
return len(r.messages)
98+
return total

0 commit comments

Comments
 (0)