Python Telegram 机器人太慢?

标签 python bots telegram telegram-bot

我刚刚开始用 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/

相关文章:

bots - 在 Telegram Bot 中链接,以便用户可以调用机器人命令

c++ - 使用我的 C++ irc​​ 机器人连接到 Twitch

python - 将开发 django 应用程序导出到生产环境

python - pytest:从 fixture 打印

python - IP 地址的可用性 - Python

c# - Bot Framework 的 context.Wait() 不等待用户输入

c# - 微软的 botframework 是免费的吗?

python - 带有 id 的 Channel 的 Telethon 阅读消息

telegram - 如何在不向其发送消息的情况下获取 Telegram channel ID

python - 理解 Swig 生成的 Python 文件