Bot 配置

pydantic settings qzone3tg.settings.BotConf

对应配置文件中的 bot 项。

Fields:
Validators:
  • webhook_first » all fields

field admin: int [Required]

管理员用户ID,唯一指明管理员. bot 只响应管理员的指令.

Validated by:
  • webhook_first

field auto_start: bool = False

是否在程序启动后自动运行一次更新(/start)。默认为 False.

Added in version 0.2.7.dev2.

Validated by:
  • webhook_first

field init_args: WebhookConf | PollingConf [Optional]

Bot 的启动配置. 根据启动配置的类型不同, bot 会以不同的模式启动.

Validated by:
  • webhook_first

field network: NetworkConf [Optional]

网络配置。包括代理和等待时间自定义优化。

Validated by:
  • webhook_first

field storage: StorageConfig [Optional]

存储配置。Bot 将保留说说的一部分必要参数,用于点赞/取消赞/转发/评论等. 存储的信息不包括说说内容. 默认只在内存中建立 sqlite3 数据库。

Validated by:
  • webhook_first

pydantic settings qzone3tg.settings.NetworkConf

网络配置,对应配置文件中的 bot.network. 包括代理和自定义等待时间等。

Fields:
field connect_timeout: float | None = 20

服务器向 telegram 和 Qzone 发起连接的最长耗时。单位为秒,默认为20

Added in version 0.5.0a8.

在 0.5.1a1 版本发生变更: 此参数也控制与 Qzone 连接的超时。

field proxy: Annotated[Url, UrlConstraints(max_length=None, allowed_schemes=['http', 'socks4', 'socks5'], host_required=None, default_host=None, default_port=None, default_path=None)] | None = None

代理设置,支持 httpsocks 代理. 代理将用于向 telegram apigithub 发送请求. 也支持读取系统全局代理 HTTPS_PROXY, 但优先级 低于 配置文件提供的值。

Example:

  • http://127.0.0.1:1234

  • https://username:password@your.proxy.com:1234

  • socks5://user:pass@host:port

在 0.9.0 版本发生变更: socks 代理自动开启 rdns。

field rdns: bool = False

远程解析 DNS. 仅在使用 proxy 时生效.

Added in version 0.9.1.dev5.

pydantic settings qzone3tg.settings.WebhookConf

对应 bot.init_args. Webhook 的原理是在本机启动一个小型服务器以接收 telegram api 的更新消息. 因为不必时时从 telegram 查询更新, webhook 的效率更高,资源消耗更少. 用户需要保证 telegram api 能够通过 destination 访问到这个服务器.

此外,由于 telegram api 的限制,对 webhook destination 的请求必须开启 SSL. 因此您可能需要域名(和证书)才能使用 webhook.

Fields:
Validators:
field cert: Annotated[Path, PathType(path_type=file)] | None = None

证书. 用于开启 SSL 认证. 若您使用反向代理,则应该在反向代理服务器设置证书,此处留空即可.

field destination: Annotated[Url, UrlConstraints(max_length=None, allowed_schemes=['https'], host_required=None, default_host=None, default_port=None, default_path=None)] [Required]

webhook url. telegram api 将向此地址发送数据. 如果您配置了反向代理,可填写反向代理的转发地址.

Example:

  • https://this.server.xyz:443 如果没有额外配置,替换本机域名即可.

  • https://this.server.xyz:443/any/prefix/you/like 若您配置的反向代理会将 url 转发到 port 指明的端口,则填写这个 url.

Constraints:
  • allowed_schemes = ['https']

Validated by:
  • port_choice

field drop_pending_updates: bool = False

Bot 启动后不响应启动前等待的命令.

field key: Annotated[Path, PathType(path_type=file)] | None = None

证书私钥. 用于开启 SSL 认证. 若您使用反向代理,则应该在反向代理服务器设置证书,此处留空即可.

field max_connections: int = 40

服务器最大连接数

field port: int = 443

webhook 端口. 在此端口上设置一个小型的服务器用于监听请求. 用户需要保证 telegram api 可以直接请求此端口, 或经反向代理等中间环节间接访问此端口.

在 0.9.7.dev1 版本发生变更: 端口不再局限于规定端口(443, 80, 88, 8443)。此时用户必须将规定端口上的流量转发至 port 所指定的端口。

field secret_token: str | None = None

用于确保 webhook 请求确实是您所设置的。实际上是校验每个请求头的``X-Telegram-Bot-Api-Secret-Token``字段。 默认为 None, 不校验。

Added in version 0.5.0a3.

pydantic settings qzone3tg.settings.PollingConf

对应 bot.init_args. 顾名思义,polling 模式通过频繁地向 telegram 查询消息来确保能够响应用户的命令. 比 webhook 简单、要求低,适合测试使用.

Fields:
field polling_timeout: int = 10

查询超时.

pydantic settings qzone3tg.settings.StorageConfig

Bot 存储配置,对应 bot.storage。Bot 将保留说说的一部分必要参数,用于验证说说是否已爬取、已发送,以及用于点赞、取消赞等. 存储的信息不包括说说内容, 但通常能够通过存储的参数复原说说内容.

Fields:
field database: Path | None = None

数据库地址. Bot 会在此位置建立一个 sqlite3 数据库. 如果目录不存在,会自动新建目录. 如果传入值为 None,则不建立文件数据库,而是维持一个内存数据库。

field keepdays: float = 30

一条记录要保存多长时间,以天为单位. 默认为30.