PyTelegramBotAPI 的同步辅助模块会把代理设置交给 Requests。在用应用的 bot_token 构建机器人之前,先给该辅助模块赋一个把目标协议映射到代理 URL 的字典。SOCKS5 代理列表里的主机和端口可以填入示例中的 SOCKS5 URL:

import telebot
from telebot import apihelper

apihelper.proxy = {
    "https": "socks5h://proxy.example.net:1080",
}

bot = telebot.TeleBot(bot_token)

键与值之间的冒号使这一结构成为字典;若写成一个只含逗号分隔字符串的花括号表达式,得到的是集合,Requests 无法把它当作代理映射使用。

https 键对应 Telegram API 的常规目标。socks5h 要求由代理端解析主机名,并依赖 Requests 的 SOCKS 支持。

apihelper.proxy 是模块级的共享配置,作用于同步辅助调用。应在工作进程启动前设置;在多个机器人同时运行时改动它,可能改变另一个机器人的路由。AsyncTeleBot 使用另一套辅助模块和传输方式。

相关文章