diff --git a/examples/get_history.py b/examples/get_history.py index 2afef42f..d53bed96 100644 --- a/examples/get_history.py +++ b/examples/get_history.py @@ -19,7 +19,6 @@ import time from pyrogram import Client -from pyrogram.api import functions from pyrogram.api.errors import FloodWait """This example shows how to retrieve the full message history of a chat""" @@ -28,30 +27,27 @@ app = Client("my_account") app.start() target = "me" # "me" refers to your own chat (Saved Messages) -history = [] # List that will contain all the messages of the target chat -limit = 100 # Amount of messages to retrieve for each API call -offset = 0 # Offset starts at 0 +messages = [] # List that will contain all the messages of the target chat +offset_id = 0 # ID of the last message of the chunk while True: try: - messages = app.send( - functions.messages.GetHistory( - app.resolve_peer(target), - 0, 0, offset, limit, 0, 0, 0 - ) - ) + m = app.get_history(target, offset_id=offset_id) except FloodWait as e: # For very large chats the method call can raise a FloodWait + print("waiting {}".format(e.x)) time.sleep(e.x) # Sleep X seconds before continuing continue - if not messages.messages: - break # No more messages left + if not m.messages: + break - history.extend(messages.messages) - offset += limit + messages += m.messages + offset_id = m.messages[-1].message_id + + print("Messages: {}".format(len(messages))) app.stop() -# Now the "history" list contains all the messages sorted by date in +# Now the "messages" list contains all the messages sorted by date in # descending order (from the most recent to the oldest one)