电报机器人按行内按钮时间太长 [英] Telegram Bot presses Inline button too long

查看:23
本文介绍了电报机器人按行内按钮时间太长的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我制作了一个机器人,它应该可以点击内联按钮。 我的问题是,一次点击按钮需要整整15秒。 如何加快这一进程?

from telethon.sync import TelegramClient
from telethon import functions, types
from telethon import TelegramClient, sync
import time

AllLogs = open('logs.txt')

for logs in AllLogs:
    api_id, api_hash = logs.split(';') 
    client = TelegramClient(f'session_{api_id}', api_id, api_hash)
    client.start()
    messages = client.get_messages(int(ChannelId), ids=int(MessageId))
    start_time1 = time.time()
    messages.click(0)
    print("--- %s seconds ---" % (time.time() - start_time1))
    client.disconnect()

推荐答案

您无法加速此过程。Click方法向Telegram发送请求,Telegram然后向机器人发送更新。机器人必须回复Telegram的更新,然后Telegram会将结果转发回您最初的点击。

在本质上,Click必须等待机器人回答查询,如果它不够快地响应它,它就会变得很慢。可能需要修复机器人以更快地响应(或者根本不修复;如果它不响应,Telegram超时并单击ReturnsNone)。

可以做的是派生一个新的asyncio任务以在后台运行Click";,但是这不是好的做法,因为您应该始终await所有派生的任务,并且如果代码依赖于机器人的响应,您将不得不以某种方式等待它。我不推荐使用这种方法,但它在技术上是可行的。

import asyncio
...
asyncio.create_task(messages.click(0))

这篇关于电报机器人按行内按钮时间太长的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆