diff --git a/pyrogram/methods/chats/leave_chat.py b/pyrogram/methods/chats/leave_chat.py index f0feaa04..938c515b 100644 --- a/pyrogram/methods/chats/leave_chat.py +++ b/pyrogram/methods/chats/leave_chat.py @@ -53,6 +53,8 @@ class LeaveChat: 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 60e45f63..4f4bce22 100644 --- a/pyrogram/storage/mongo_storage.py +++ b/pyrogram/storage/mongo_storage.py @@ -178,6 +178,9 @@ class MongoStorage(Storage): 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 162ef0fd..a1542818 100644 --- a/pyrogram/storage/sqlite_storage.py +++ b/pyrogram/storage/sqlite_storage.py @@ -194,6 +194,12 @@ class SQLiteStorage(Storage): 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 = ?",