跳转到主要内容
本指南把 python-telegram-bot(PTB)的 HTTP 后端从默认的 httpx 更换为 aiohttp。两者都是用于发起 HTTP 请求的库。在长时间轮询 Telegram 的机器人中,默认的 httpx 后端可能会频繁抛出 NetworkError 异常,例如 ReadError,而切换到 aiohttp 是消除这些错误的常用方法。如果你的机器人运行时没有出现这些错误,就不需要做这个更换。

安装 ptbcontrib

你需要 Python 和 python-telegram-bot 库:
然后安装 ptbcontrib,它提供了一个用于处理向 Telegram 发起请求的类。它的 aiohttp_request 扩展也会一并安装 aiohttp:
将相同的依赖添加到你的 requirements.txt 中,以便 Square Cloud 在部署时安装它们:
requirements.txt

从 httpx 切换到 aiohttp

在创建机器人客户端的文件中导入 AiohttpRequest:
这个类将处理所有向 Telegram 发起的请求,而不是默认的 httpx。请按照下面的示例把它传给 PTB 客户端。两个示例都从 TELEGRAM_BOT_TOKEN 环境变量读取机器人令牌,因此令牌永远不会出现在你的代码中:

在 Square Cloud 上运行

在项目根目录创建 squarecloud.app 文件。对于主文件为 main.py 的机器人:
squarecloud.app
你的 ZIP 包含 main.py、requirements.txt 和 squarecloud.app,不包含令牌。 然后将令牌设置为 TELEGRAM_BOT_TOKEN 环境变量:可以在上传表单的 Advanced configuration 中、在应用的 Environment Variables 页面中(之后重启机器人),或通过 CLI 设置:
详情请参阅环境变量,完整的部署流程请参阅 Telegram 机器人教程。

后续步骤

Telegram 机器人

从零开始创建、部署并测试 Telegram 机器人。

环境变量

管理机器人的令牌和其他密钥。

应用无法启动

修复 ModuleNotFoundError 和其他启动失败问题。

你喜欢这篇文章吗?

  • 我们精心创作了这些内容,只为提供尽可能好的帮助。 如果这篇文章对你有任何帮助,请支持我们的工作!已经有开发者在 Google 和 Trustpilot 上给 Square Cloud 打出了 4.9/5 分(共 402 条评价),也留下你的评价吧!这能帮助我们了解什么对你最重要。

Google Reviews

在 Google Reviews 上留下你的评价。

Trustpilot

在 Trustpilot 上留下你的评价。