我刚刚开始用 python 制作一个 Telegram Bot ,我注意到我所做的一小段代码发现了一件事:机器人需要很长时间才能响应。一旦我向我的机器人发送消息,大约需要 6-8 秒才能得到回复,这在现实情况下太长了。我确信不是我的网速太慢。该机器人从我的笔记本电脑运行。这是我的代码:
from urllib.request import urlopen
import json
import time
token="xxxxxxx:9999999999999999999999999999999"
site="https://api.telegram.org/bot"+token
offset=110000001
while 1:
time.sleep(0.1)
content=(urlopen(site+"/getupdates?offset="+str(offset)).read()).decode('utf-8')
info=json.loads(content)
if(info['result']):
incoming=info['result'][0]['message']['text']
print(incoming)
if(incoming=='Hi'):
msg=(urlopen(site+"/sendmessage?chat_id=184044173&text=HI THERE").read()).decode('utf-8')
offset=info['result'][0]['update_id']+1
是什么原因导致此问题以及如何解决此问题?我想继续使用 python 来制作机器人,并且我也想从头开始制作一个机器人,所以请不要告诉我使用现有的框架或切换语言。
我经常听说“webhooks”,但从未真正理解它们。如果与此问题的解决方案相关,请详细解释 webhooks 以及如何在 python 中使用它们。
谢谢。
最佳答案
我尝试为您解释一下 Webhook:
Webhook 是您服务器上的脚本。您告诉 telegram,使用此脚本发布任何消息。
setwebhook 调用 telegram 后,将通过 POST 将所有消息发送到您的脚本。 您只需要处理传入 webhook 的消息即可。
我在 php 上编写 webhook,也许一些 php 代码行将帮助您理解 webhook 概念:
$update_json = file_get_contents('php://input');
$update = json_decode($update_json, true);
// get variable;
$chatId = $update["message"]["chat"]["id"];
$userId = $update["message"]["from"]["id"];
$message = $update["message"]["text"];
在第一行中,我读取了所有数据( Telegram 仅使用帖子发送消息) 接下来我从用户、chatId 和 userId 中获取消息。
接下来你可以用它来发送新消息
关于Python Telegram 机器人太慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36808696/