mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-07-30 17:59:55 +03:00
More changes for catch_up
- Set default pts limit for channels to 1000 - Correct typos - Remove duplicate code in _catch_up_channel
This commit is contained in:
parent
37fed6dd23
commit
6b82d9b3f5
|
@ -213,17 +213,16 @@ class UpdateMethods:
|
||||||
"""
|
"""
|
||||||
return [(callback, event) for event, callback in self._event_builders]
|
return [(callback, event) for event, callback in self._event_builders]
|
||||||
|
|
||||||
async def _catch_up_channel(self: 'TelegramClient', channel_id: int, pts: int, limit: int = None):
|
async def _catch_up_channel(self: 'TelegramClient', channel_id: int, pts: int, limit: int):
|
||||||
if self._state_cache[channel_id]:
|
if self._state_cache[channel_id]:
|
||||||
pts = self._state_cache[channel_id]
|
pts = self._state_cache[channel_id]
|
||||||
|
|
||||||
if not pts:
|
|
||||||
# First-time, can't get difference. Get pts instead.
|
|
||||||
result = await self(functions.channels.GetFullChannelRequest(channel_id))
|
|
||||||
self._state_cache[channel_id] = result.full_chat.pts
|
|
||||||
self._update_state_for(channel_id)
|
|
||||||
return
|
|
||||||
try:
|
try:
|
||||||
|
if not pts:
|
||||||
|
# Ran first time, get initial pts and return
|
||||||
|
result = await self(functions.channels.GetFullChannelRequest(channel_id))
|
||||||
|
pts = result.full_chat.pts
|
||||||
|
return
|
||||||
while True:
|
while True:
|
||||||
d = await self(functions.updates.GetChannelDifferenceRequest(
|
d = await self(functions.updates.GetChannelDifferenceRequest(
|
||||||
channel=channel_id,
|
channel=channel_id,
|
||||||
|
@ -245,14 +244,14 @@ class UpdateMethods:
|
||||||
))
|
))
|
||||||
elif isinstance(d, (types.updates.ChannelDifferenceTooLong,
|
elif isinstance(d, (types.updates.ChannelDifferenceTooLong,
|
||||||
types.updates.ChannelDifferenceEmpty)):
|
types.updates.ChannelDifferenceEmpty)):
|
||||||
# If there is too much updates (ChannelDifferenceTooLong),
|
# If there are too many updates (ChannelDifferenceTooLong),
|
||||||
# there is no way to get them without raising limit or GetHistoryRequest, so just break
|
# there is no way to get them without raising limit or GetHistoryRequest, so just break
|
||||||
break
|
break
|
||||||
finally:
|
finally:
|
||||||
self._state_cache[channel_id] = pts
|
self._state_cache[channel_id] = pts
|
||||||
self._update_state_for(channel_id)
|
self._update_state_for(channel_id)
|
||||||
|
|
||||||
async def catch_up(self: 'TelegramClient', pts_total_limit=None, limit=None):
|
async def catch_up(self: 'TelegramClient', pts_total_limit=None, limit=1000):
|
||||||
"""
|
"""
|
||||||
"Catches up" on the missed updates while the client was offline.
|
"Catches up" on the missed updates while the client was offline.
|
||||||
You should call this method after registering the event handlers
|
You should call this method after registering the event handlers
|
||||||
|
|
Loading…
Reference in New Issue
Block a user