多线程中的 Telethon 事件未按预期工作

Telethon events in multithreading not working as expected

我想 运行 多线程 Telethon 活动。

对于下面的代码,我期望的是多线程、并发的独立事件。 await asyncio.sleep( 3 ) 会睡 3 秒。因此,如果您通过电报向该帐户发送任何文本,它会等待 3 秒钟,然后回复我“嗨”。我预计,如果我一次发送几次文本,比如 5 次,它应该等待大约 3 秒,然后立即回复我“嗨”,但不像等待 3 秒,发送“嗨”,等待 3 秒,发送“hi”。 .. 5 次,大约需要 15 秒。这不是我所期望的。

那么,我怎样才能将代码修改为 运行 预期的代码?或者在电视节目中不可能?

我阅读了 google、Whosebug、github 问题,但无法自行找到解决方案。所以我在这里需要你的帮助。谢谢。

import time
from pathlib import Path
import re
import random
import asyncio

from telethon import TelegramClient, events
from telethon.sessions import StringSession
from telethon import utils

import logging
logging.basicConfig(level=logging.ERROR)

api_id = ""
api_hash = ''
phone = ''
string = Path('./string').read_text()

message = "hi."

if __name__ == '__main__':

    client = TelegramClient(StringSession(string), api_id, api_hash, sequential_updates=True)

    @client.on(events.NewMessage(incoming=True))
    async def handle_new_message(event):
        print('message:', event.message.message)
        # // not working here, the sleep blocks next events but not only current event. 
        print('wait for 3 seconds...')
        await asyncio.sleep( 3 )
        await event.respond(message)


    print('Auto-replying...')
    client.start(phone)
    client.run_until_disconnected()
    # client.loop.run_forever()

    # string = StringSession.save(client.session)
    # Path('./string').write_text(string)

您正在使用 sequential_updates 因此在第一次更新未完成之前不会移动到其他更新。我猜你需要关闭顺序更新。