2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-08-28 21:07:59 +00:00

Handle get_messages flood wait

This commit is contained in:
Dan 2018-05-09 19:50:57 +02:00
parent a1c3e40800
commit 781edda56a

View File

@ -16,14 +16,19 @@
# 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 base64 import b64decode, b64encode from base64 import b64decode, b64encode
from struct import pack from struct import pack
from weakref import proxy from weakref import proxy
from pyrogram.api.errors import FloodWait
from pyrogram.client import types as pyrogram_types from pyrogram.client import types as pyrogram_types
from ...api import types, functions from ...api import types, functions
from ...api.errors import StickersetInvalid from ...api.errors import StickersetInvalid
log = logging.getLogger(__name__)
# TODO: Organize the code better? # TODO: Organize the code better?
ENTITIES = { ENTITIES = {
@ -545,7 +550,18 @@ def parse_messages(
) )
if message.reply_to_msg_id and replies: if message.reply_to_msg_id and replies:
m.reply_to_message = client.get_messages(m.chat.id, message.reply_to_msg_id, replies=replies - 1) while True:
try:
m.reply_to_message = client.get_messages(
m.chat.id, message.reply_to_msg_id,
replies=replies - 1
)
except FloodWait as e:
log.warning("get_messages flood: waiting {} seconds".format(e.x))
time.sleep(e.x)
continue
else:
break
elif isinstance(message, types.MessageService): elif isinstance(message, types.MessageService):
action = message.action action = message.action
@ -636,7 +652,18 @@ def parse_messages(
) )
if isinstance(action, types.MessageActionPinMessage): if isinstance(action, types.MessageActionPinMessage):
m.pinned_message = client.get_messages(m.chat.id, message.reply_to_msg_id, replies=0) while True:
try:
m.pinned_message = client.get_messages(
m.chat.id, message.reply_to_msg_id,
replies=0
)
except FloodWait as e:
log.warning("get_messages flood: waiting {} seconds".format(e.x))
time.sleep(e.x)
continue
else:
break
else: else:
m = pyrogram_types.Message(message_id=message.id, client=proxy(client)) m = pyrogram_types.Message(message_id=message.id, client=proxy(client))