在 python-telegram-bot 22.8 中,轮询有自己的请求对象。因此,一次成功的普通 API 调用并不能证明 getUpdates 收到了同样的代理路径。

对于轮询应用,请同时配置两条路径:

from telegram.ext import Application

proxy_url = 'http://proxy-user:[email protected]:8080'
application = (
    Application.builder()
    .token(bot_token)
    .proxy(proxy_url)
    .get_updates_proxy(proxy_url)
    .build()
)

proxy 配置通用的 Bot API 操作;get_updates_proxy 配置轮询。围绕这一应用构建,继续使用现有的处理器以及轮询或 webhook 生命周期。

URL 中的凭据只是占位符。请通过部署的凭据机制获取真实值,并 对 URL 各组成部分中的保留字符进行百分号编码。请使用中间人实际的 scheme:HTTPXRequest 接受 HTTP 代理 URL,并且在安装包所需 SOCKS 依赖后支持 SOCKS5。SOCKS5 代理列表 提供的是该协议的端点候选,而不是代理账户凭据。

如果应用通过 request 或 get_updates_request 提供自定义对象,则应改为一致地配置这些对象。builder 中的代理设置与单独提供的请求对象,是对应路径的两种替代输入。

Updater 的旧式做法使用 request_kwargs 与 urllib3_proxy_kwargs,针对的是另一个世代。

相关文章