Python 用于重新发送消息的Telethon超时

Python 用于重新发送消息的Telethon超时,python,telethon,Python,Telethon,我想使用Telethon向电报机器人发送消息,并使用事件处理函数处理其响应。有没有办法为传入事件设置超时?例如,如果我向bot发送“Hi”消息,但它在5秒后没有响应我,Telethon将再次发送“Hi”消息。首先,我们需要创建一个处理程序,并绑定到Telethon客户端的NewMessage事件中 from datetime import datetime from telethon import TelegramClient, events from telethon.tl.types imp

我想使用
Telethon
向电报机器人发送消息,并使用事件处理函数处理其响应。有没有办法为传入事件设置超时?例如,如果我向bot发送“Hi”消息,但它在5秒后没有响应我,Telethon将再次发送“Hi”消息。

首先,我们需要创建一个处理程序,并绑定到Telethon客户端的
NewMessage
事件中

from datetime import datetime
from telethon import TelegramClient, events
from telethon.tl.types import InputPeerUser

client = TelegramClient('session_name', app_id, 'app_token')
last_message_received_on = None


@client.on(events.NewMessage)
def on_message_received(event: events.NewMessage.Event):
    print(event.raw_text)
现在,在我们的
on\u message\u received
处理程序中,我们需要添加一行代码,以确定bot响应了我们的
datetime
。因此,我们将处理程序更改为:

@client.on(events.NewMessage)
def on_message_received(event: events.NewMessage.Event):
    global last_message_received_on
    last_message_received_on = datetime.now()
现在我们启动客户机并运行一个循环。我们向机器人发送一条消息并检查是否在五秒钟内收到响应。我们继续此循环,直到在5秒内收到响应。我想你现在明白要点了

with client.start():
    bot = client.get_entity('https://t.me/some_user_name')

    while True:
        send_message('hi')
        if not last_message_received_on or (last_message_received_on < datetime.now()).seconds > 5:
            send_message('hi')
        else:
            break
使用client.start()执行
:
bot=客户端。获取实体('https://t.me/some_user_name')
尽管如此:
发送消息(“你好”)
如果不是上次收到的消息或(上次收到的消息日期5:
发送消息(“你好”)
其他:
打破

此外,您还需要在再次发送消息至少1秒之间留出
time.sleep()。因为你不指望他们不会立即做出反应

谢谢你的回答。这是唯一的办法吗?有没有办法让Telethon自动为我们做这件事?@SaraFahim,我不这么认为。不过这很容易实现。是的,我知道。这是最简单的方法。再次感谢。你测试过你的代码吗?即使使用time.sleep(),它也是一个无限循环。@SaraFahim它不应该是一个完整的片段。我只是想让你拿到jist。