【问题标题】:How to run multiple sessions using telethon?如何使用 Telethon 运行多个会话?
【发布时间】:2021-10-18 21:01:06
【问题描述】:

我需要使用 Telethon 运行多个 Telegram 帐户(都使用相同的消息处理程序)。 没错,我需要:

  • 运行一项功能(每个帐户一次)
  • 运行处理程序(永远)

这是现在的代码,我只需要在多个客户端上运行它。我有一个帐户列表,我必须使用它。

async def main(client):
    me = await client.get_me()
    print("Working with", me.first_name)
    await client.send_message("@example", "example")

client = TelegramClient(f'telegram_session', account["API_ID"], account["API_HASH"])
client.add_event_handler(handler, events.NewMessage())

with client:
    client.start()
    client.loop.run_until_complete(main(client))
    client.run_until_disconnected()

【问题讨论】:

    标签: python telegram telethon


    【解决方案1】:

    你可以这样做。

    def get_or_create_eventloop():
        try:
            return asyncio.get_event_loop()
        except RuntimeError as ex:
            if "There is no current event loop in thread" in str(ex):
                loop = asyncio.new_event_loop()
                asyncio.set_event_loop(loop)
                return asyncio.get_event_loop()
    
    def run(account): 
        loop = get_or_create_eventloop()
        future = asyncio.ensure_future(work(account))
        loop.run_until_complete(future)
    
    accounts= [dict(session = 'user1', api_id=api_id, api_hash=api_hash)]
    for account in accounts:
        threading.Thread(target = run, args = [account ]).start() 
    

    【讨论】:

    • 非常感谢,这似乎是一条可行的道路。我会尝试并在这里发布会发生什么。
    • 我试过了,得到这个错误:ConnectionError: Cannot send requests while disconnected
    • 您似乎忘记使用connectstart 方法。 @GitJorgo
    • work()函数中,先从TelegramClient创建一个对象,然后用connect开启,然后使用get_me()等方法
    • 谢谢,我设法解决了。我必须创建另一个脚本来登录,以避免同时获取所有代码。然后,在工作功能中等待 client.connect() 效果很好。
    【解决方案2】:

    我快速浏览了您正在使用的库,它基于 asynio。我认为你应该这样做

      asyncio.wait([one_task(), two_task()])
    

    P.S 我在这里找到了答案 stackoverflow

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 2018-03-24
      相关资源
      最近更新 更多