4

如果有新成员加入,此代码会向 Telegram Supergroup 发送消息。当发送消息时发生错误,我想更改我的帐户以继续。可以转到下一个“项目”。收到错误时如何循环转到下一个帐户?

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

在这种情况下,“继续”功能不起作用。

此处功能说明:https ://docs.pyrogram.ml/resources/UpdateHandling

4

1 回答 1

4

只需添加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()

您绝对应该在 pyrogram 源代码中查看这些空闲逻辑行:

while self.is_idle:
    time.sleep(1)

如果你想要一个无限循环,请查看itertools.cycle它可以像这样使用:

for item in itertools.cycle(list_account):
    do_something()
于 2018-05-07T21:13:29.260 回答