2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-08-29 05:18:10 +00:00

Handle get_history flood waits

It's likely to get triggered when using iter_history (every ~3k msgs)
This commit is contained in:
Dan 2019-01-27 11:13:10 +01:00
parent 52f2a2b17d
commit 67a35f8c7e

View File

@ -16,12 +16,17 @@
# You should have received a copy of the GNU Lesser General Public License # You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>. # along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
import logging
import time
from typing import Union from typing import Union
import pyrogram import pyrogram
from pyrogram.api import functions from pyrogram.api import functions
from pyrogram.api.errors import FloodWait
from ...ext import BaseClient from ...ext import BaseClient
log = logging.getLogger(__name__)
class GetHistory(BaseClient): class GetHistory(BaseClient):
def get_history(self, def get_history(self,
@ -66,6 +71,8 @@ class GetHistory(BaseClient):
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error. :class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
""" """
while True:
try:
messages = pyrogram.Messages._parse( messages = pyrogram.Messages._parse(
self, self,
self.send( self.send(
@ -81,6 +88,11 @@ class GetHistory(BaseClient):
) )
) )
) )
except FloodWait as e:
log.warning("Sleeping for {}s".format(e.x))
time.sleep(e.x)
else:
break
if reverse: if reverse:
messages.messages.reverse() messages.messages.reverse()