diff --git a/pyrogram/client/methods/messages/get_history.py b/pyrogram/client/methods/messages/get_history.py
index d45623f4..73923b44 100644
--- a/pyrogram/client/methods/messages/get_history.py
+++ b/pyrogram/client/methods/messages/get_history.py
@@ -16,12 +16,17 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import logging
+import time
from typing import Union
import pyrogram
from pyrogram.api import functions
+from pyrogram.api.errors import FloodWait
from ...ext import BaseClient
+log = logging.getLogger(__name__)
+
class GetHistory(BaseClient):
def get_history(self,
@@ -66,21 +71,28 @@ class GetHistory(BaseClient):
:class:`Error ` in case of a Telegram RPC error.
"""
- messages = pyrogram.Messages._parse(
- self,
- self.send(
- functions.messages.GetHistory(
- peer=self.resolve_peer(chat_id),
- offset_id=offset_id,
- offset_date=offset_date,
- add_offset=offset * (-1 if reverse else 1) - (limit if reverse else 0),
- limit=limit,
- max_id=0,
- min_id=0,
- hash=0
+ while True:
+ try:
+ messages = pyrogram.Messages._parse(
+ self,
+ self.send(
+ functions.messages.GetHistory(
+ peer=self.resolve_peer(chat_id),
+ offset_id=offset_id,
+ offset_date=offset_date,
+ add_offset=offset * (-1 if reverse else 1) - (limit if reverse else 0),
+ limit=limit,
+ max_id=0,
+ min_id=0,
+ hash=0
+ )
+ )
)
- )
- )
+ except FloodWait as e:
+ log.warning("Sleeping for {}s".format(e.x))
+ time.sleep(e.x)
+ else:
+ break
if reverse:
messages.messages.reverse()