2024-04-24 23:47:14 发布
网友
我想使用Telethon向telegrambot发送消息,并使用事件处理函数处理其响应。有没有办法为传入事件设置超时?例如,如果我向bot发送“Hi”消息,但它在5秒后没有响应,Telethon会再次发送“Hi”消息。在
Telethon
首先,我们需要创建一个处理程序并绑定到telethon客户机的NewMessage事件。在
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_message_received处理程序中,我们需要添加一行来确定bot对我们的响应是datetime。因此我们将处理程序更改为:
on_message_received
datetime
现在我们启动客户端并运行一个循环。我们向机器人发送一条消息,然后检查是否在5秒钟内收到响应。我们继续这个循环,直到在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
此外,您还需要time.sleep()再次发送消息至少1秒,以使事情自然和现实。因为你不希望对方立刻做出反应!在
time.sleep()
首先,我们需要创建一个处理程序并绑定到telethon客户机的
NewMessage
事件。在现在在我们的
^{pr2}$on_message_received
处理程序中,我们需要添加一行来确定bot对我们的响应是datetime
。因此我们将处理程序更改为:现在我们启动客户端并运行一个循环。我们向机器人发送一条消息,然后检查是否在5秒钟内收到响应。我们继续这个循环,直到在5秒内收到响应。我想你现在明白了。在
此外,您还需要
time.sleep()
再次发送消息至少1秒,以使事情自然和现实。因为你不希望对方立刻做出反应!在相关问题 更多 >
编程相关推荐