跳转至

配置方法

SDK 的所有能力都从 OopzConfig 开始。

from oopz_sdk import OopzConfig, RetryConfig, HeartbeatConfig, ProxyConfig

config = OopzConfig.from_env(
    retry=RetryConfig(max_attempts=3),
    heartbeat=HeartbeatConfig(interval=10.0, reconnect_interval=2.0),
    proxy=ProxyConfig(http="http://127.0.0.1:7890", https="http://127.0.0.1:7890"),
)

登录方法详见认证与凭据

接受来自域的事件推送

默认情况下, SDK是不会收到来自域的事件 (例如域的设置更改, 用户进入退出房间等) 推送的, 需要进行手动注册。

您可以使用 send_subscribe_area_events 方法在bot启动后订阅特定域的事件:

area_ids = ["6bv5677gsfdb41e882694531567a0972"]  # 替换为你想订阅的域 ID

await bot.ws.send_subscribe_area_events(area_ids)

您也可以使用 auto_subscribe_joined_areas 选项在启动时自动订阅所有已加入域的事件:

注意

Oopz web端一般只会使用单个area_ids进行请求, 但是经过测试, 这个接口是支持批量订阅的, 但是传入多个area_ids造成的风险和问题目前还不清楚, 请谨慎使用多个域的事件订阅和auto_subscribe_joined_areas功能。

from oopz_sdk import OopzBot, OopzConfig

config = OopzConfig(
    auto_subscribe_joined_areas=True,
)

config.login("手机号", "密码")

bot = OopzBot(config)

@bot.on_ready
async def ready(ctx):
    print("Bot ready, joined area events subscribed")

这个功能会在机器人启动后自动查询已加入的域,并订阅这些域的事件推送。这样当有用户进入退出房间、域设置更改等事件时,机器人就能及时收到通知。

通过账号密码自动提取凭证

SDK 内置了一个基于 OOPZ Web 登录页的提取工具,会自动登录并从登录接口、请求头、WebSocket 鉴权消息和 Web Crypto 私钥钩子中提取 device_idperson_uidjwt_tokenprivate_key

首次使用前需要安装 Chromium:

python -m playwright install chromium

命令行方式:

$env:OOPZ_LOGIN_PHONE = "你的 OOPZ 登录账号"
python -m oopz_sdk.cli.password_login --phone $env:OOPZ_LOGIN_PHONE --print-env powershell

如果登录过程需要人工验证,可以显示浏览器窗口:

python -m oopz_sdk.cli.password_login --phone $env:OOPZ_LOGIN_PHONE --headful --print-env powershell

命令会安全询问密码,并在成功后输出可设置 OOPZ_DEVICE_IDOOPZ_PERSON_UIDOOPZ_JWT_TOKENOOPZ_PRIVATE_KEY 的环境变量命令。把这些命令只复制到本地 shell 执行,不要提交到仓库。

在代码中直接登录并创建配置:

import asyncio

from oopz_sdk import OopzConfig


async def main():
    config = await OopzConfig.from_env_async()
    print(config.person_uid)


asyncio.run(main())

以下设置一般不需要修改,除非你有特殊需求,例如使用代理或调整重试策略。

网关与请求配置

字段 默认值 说明
base_url https://gateway.oopz.cn Oopz的HTTP API 地址。
ws_url wss://ws.oopz.cn Oopz的WebSocket 网关地址。
app_version 69514 客户端版本标识。
channel Web 客户端渠道。
platform windows 平台标识。
web True 是否按 Web 客户端行为发送。
headers {} 额外请求头,会覆盖默认头。

重试配置 RetryConfig

字段 默认值 说明
max_attempts 3 最大尝试次数。

请求配置 RequestConfig

| timeout | (10, 30) | 连接超时和读取超时。 |

全局请求频率限制配置 RateLimitConfig

| interval | 0.0 | 全局请求之间的基础间隔,也兼容 config.rate_limit_interval。 |

心跳配置 HeartbeatConfig

字段 默认值 说明
interval 10.0 WebSocket 心跳间隔。
reconnect_interval 2.0 初始重连间隔。
max_reconnect_interval 120.0 最大重连间隔。

代理配置 ProxyConfig

字段 说明
http HTTP 请求代理。
https HTTPS 请求代理。
websocket WebSocket 代理。

示例:

config = OopzConfig(
    ...,
    proxy=ProxyConfig(
        http="http://127.0.0.1:7890",
        https="http://127.0.0.1:7890",
        websocket="http://127.0.0.1:7890",
    ),
)

消息配置

字段 默认值 说明
ignore_self_messages True 忽略自己发出的消息,避免机器人回复自己导致循环。
use_announcement_style False 频道消息默认加 IMPORTANT 样式。

缓存配置

字段 默认值 说明
area_members_cache_ttl 15.0 域成员分页缓存有效期。
area_members_stale_ttl 300.0 预留的过期缓存时间。
cache_max_entries 200 缓存最大条目;小于等于 0 表示关闭缓存。

语音配置

字段 默认值 说明
agora_app_id SDK 内置值 Agora App ID。
agora_init_timeout 1800 语音后端初始化超时。
voice_backend browser 当前实现使用浏览器后端。
voice_browser_headless True 是否无头运行浏览器。
voice_browser_executable_path "" 自定义 Chromium 路径。
voice_agora_sdk_url Agora 官方 JS SDK URL 浏览器后端加载的 Agora SDK。

OneBot 配置

详见 OneBot 适配