Wednesday, May 9, 2018

How to proceed to the next cycle?

Leave a Comment

This code sends a message to the Telegram Supergroup if a new member has joined. When an error occurs when sending a message, I want to change my account to continue. It is possible to go to the next "item". How do I go to the next account in a loop when I receive an error?

from pyrogram import Client, Filters  list_account = ['001', '002']  for item in list_account:     app = Client(item)     @app.on_message(Filters.chat("public_link_chat") & Filters.new_chat_members)     def welcome(client, message):         try:             client.send_message(                 message.chat.id, 'Test',                 reply_to_message_id=message.message_id,                 disable_web_page_preview=True             )         except Exception as e:             print(e)             # How do I go to the next account in a loop when I receive an error?      app.start()     app.join_chat("public_link_chat")     app.idle() 

Function "continue" does not work in this case.

Description of function here: https://docs.pyrogram.ml/resources/UpdateHandling

1 Answers

Answers 1

Just add app.is_idle = False:

from pyrogram import Client, Filters  list_account = ['001', '002']  for item in list_account:     app = Client(item)     @app.on_message(Filters.chat("public_link_chat") & Filters.new_chat_members)     def welcome(client, message):         try:             client.send_message(                 message.chat.id, 'Test',                 reply_to_message_id=message.message_id,                 disable_web_page_preview=True             )         except Exception as e:             print(e)             # How do I go to the next account in a loop when I receive an error?             app.is_idle = False      app.start()     app.join_chat("public_link_chat")     app.idle() 

You should definitely check out these lines of the idle logic at the pyrogram source code:

while self.is_idle:     time.sleep(1) 

If you want an infinite loop, check out the itertools.cycle, it may be used like:

for item in itertools.cycle(list_account):     do_something() 
If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment