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:
httpx。请按照下面的示例把它传给 PTB 客户端。两个示例都从 TELEGRAM_BOT_TOKEN 环境变量读取机器人令牌,因此令牌永远不会出现在你的代码中:
在 Square Cloud 上运行
在项目根目录创建squarecloud.app 文件。对于主文件为 main.py 的机器人:
squarecloud.app
main.py、requirements.txt 和 squarecloud.app,不包含令牌。
然后将令牌设置为 TELEGRAM_BOT_TOKEN 环境变量:可以在上传表单的 Advanced configuration 中、在应用的 Environment Variables 页面中(之后重启机器人),或通过 CLI 设置:
后续步骤
Telegram 机器人
从零开始创建、部署并测试 Telegram 机器人。
环境变量
管理机器人的令牌和其他密钥。
应用无法启动
修复 ModuleNotFoundError 和其他启动失败问题。
你喜欢这篇文章吗?
- 我们精心创作了这些内容,只为提供尽可能好的帮助。 如果这篇文章对你有任何帮助,请支持我们的工作!已经有开发者在 Google 和 Trustpilot 上给 Square Cloud 打出了 4.9/5 分(共 402 条评价),也留下你的评价吧!这能帮助我们了解什么对你最重要。
Google Reviews
在 Google Reviews 上留下你的评价。
Trustpilot
在 Trustpilot 上留下你的评价。

