首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重发消息的Telethon超时

重发消息的Telethon超时
EN

Stack Overflow用户
提问于 2018-08-08 18:23:02
回答 1查看 978关注 0票数 0

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

EN

回答 1

Stack Overflow用户

发布于 2018-08-08 19:13:16

首先,我们需要创建一个处理程序,并在telethon客户端的NewMessage事件上进行绑定。

代码语言:javascript
复制
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处理程序中,我们需要添加一行来确定机器人响应我们的datetime是什么。因此,我们将处理程序更改为:

代码语言:javascript
复制
@client.on(events.NewMessage)
def on_message_received(event: events.NewMessage.Event):
    global last_message_received_on
    last_message_received_on = datetime.now()

现在我们启动客户端并运行一个循环。我们向机器人发送一条消息,并检查是否在不到5秒内收到响应。我们继续这个循环,直到在5秒内收到响应。我想你现在明白大意了。

代码语言:javascript
复制
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秒钟,以使事情变得自然和现实。因为你不会期望他们不会立即做出回应!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51744306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档