From 875a94180d28edc5bbea32cd85cefef612a1da5f Mon Sep 17 00:00:00 2001 From: wulan17 Date: Tue, 23 Jul 2024 22:28:20 +0700 Subject: [PATCH] pyrofork: Remove state when leaving chat Signed-off-by: wulan17 --- pyrogram/methods/chats/leave_chat.py | 2 ++ pyrogram/storage/mongo_storage.py | 3 +++ pyrogram/storage/sqlite_storage.py | 6 ++++++ 3 files changed, 11 insertions(+) diff --git a/pyrogram/methods/chats/leave_chat.py b/pyrogram/methods/chats/leave_chat.py index f0feaa042..938c515ba 100644 --- a/pyrogram/methods/chats/leave_chat.py +++ b/pyrogram/methods/chats/leave_chat.py @@ -53,6 +53,8 @@ async def leave_chat( await app.leave_chat(chat_id, delete=True) """ peer = await self.resolve_peer(chat_id) + if not self.skip_updates: + await self.storage.remove_state(chat_id) if isinstance(peer, raw.types.InputPeerChannel): return await self.invoke( diff --git a/pyrogram/storage/mongo_storage.py b/pyrogram/storage/mongo_storage.py index 60e45f634..4f4bce223 100644 --- a/pyrogram/storage/mongo_storage.py +++ b/pyrogram/storage/mongo_storage.py @@ -178,6 +178,9 @@ async def update_state(self, value: Tuple[int, int, int, int, int] = object): else: await self._states.update_one({'_id': value[0]}, {'$set': {'pts': value[1], 'qts': value[2], 'date': value[3], 'seq': value[4]}}, upsert=True) + async def remove_state(self, chat_id): + await self._states.delete_one({'_id': chat_id}) + async def get_peer_by_id(self, peer_id: int): # id, access_hash, type r = await self._peer.find_one({'_id': peer_id}, {'_id': 1, 'access_hash': 1, 'type': 1}) diff --git a/pyrogram/storage/sqlite_storage.py b/pyrogram/storage/sqlite_storage.py index 162ef0fd5..a1542818a 100644 --- a/pyrogram/storage/sqlite_storage.py +++ b/pyrogram/storage/sqlite_storage.py @@ -194,6 +194,12 @@ async def update_state(self, value: Tuple[int, int, int, int, int] = object): value ) + async def remove_state(self, chat_id): + self.conn.execute( + "DELETE FROM update_state WHERE id = ?", + (chat_id,) + ) + async def get_peer_by_id(self, peer_id: int): r = self.conn.execute( "SELECT id, access_hash, type FROM peers WHERE id = ?",