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
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()