mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-07-12 17:12:23 +03:00
Properly load and save channel state
This commit is contained in:
parent
f7ccf8d843
commit
f775484172
|
@ -14,7 +14,7 @@ from .._crypto import rsa
|
||||||
from .._misc import markdown, enums, helpers
|
from .._misc import markdown, enums, helpers
|
||||||
from .._network import MTProtoSender, Connection, transports
|
from .._network import MTProtoSender, Connection, transports
|
||||||
from .._sessions import Session, SQLiteSession, MemorySession
|
from .._sessions import Session, SQLiteSession, MemorySession
|
||||||
from .._sessions.types import DataCenter, SessionState
|
from .._sessions.types import DataCenter, SessionState, EntityType, ChannelState
|
||||||
from .._updates import EntityCache, MessageBox
|
from .._updates import EntityCache, MessageBox
|
||||||
|
|
||||||
DEFAULT_DC_ID = 2
|
DEFAULT_DC_ID = 2
|
||||||
|
@ -235,7 +235,12 @@ async def connect(self: 'TelegramClient') -> None:
|
||||||
else:
|
else:
|
||||||
try_fetch_user = self._session_state.user_id == 0
|
try_fetch_user = self._session_state.user_id == 0
|
||||||
if self._catch_up:
|
if self._catch_up:
|
||||||
self._message_box.load(self._session_state, await self._session.get_all_channel_states())
|
channel_states = await self._session.get_all_channel_states()
|
||||||
|
self._message_box.load(self._session_state, channel_states)
|
||||||
|
for state in channel_states:
|
||||||
|
entity = await self._session.get_entity(EntityType.CHANNEL, state.channel_id)
|
||||||
|
if entity:
|
||||||
|
self._entity_cache.put(entity)
|
||||||
|
|
||||||
dc = all_dcs.get(self._session_state.dc_id)
|
dc = all_dcs.get(self._session_state.dc_id)
|
||||||
if dc is None:
|
if dc is None:
|
||||||
|
@ -366,7 +371,7 @@ async def _disconnect(self: 'TelegramClient'):
|
||||||
|
|
||||||
session_state, channel_states = self._message_box.session_state()
|
session_state, channel_states = self._message_box.session_state()
|
||||||
for channel_id, pts in channel_states.items():
|
for channel_id, pts in channel_states.items():
|
||||||
await self._session.insert_channel_state(channel_id, pts)
|
await self._session.insert_channel_state(ChannelState(channel_id=channel_id, pts=pts))
|
||||||
|
|
||||||
await self._replace_session_state(**session_state)
|
await self._replace_session_state(**session_state)
|
||||||
|
|
||||||
|
|
|
@ -98,3 +98,6 @@ class EntityCache:
|
||||||
|
|
||||||
def get_all_entities(self):
|
def get_all_entities(self):
|
||||||
return [Entity(ty, id, hash) for id, (hash, ty) in self.hash_map.items()]
|
return [Entity(ty, id, hash) for id, (hash, ty) in self.hash_map.items()]
|
||||||
|
|
||||||
|
def put(self, entity):
|
||||||
|
self.hash_map[entity.id] = (entity.access_hash, entity.ty)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user