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。