目前所有的 Context 对象都是从 context 模块里单独导出:
|
# 这里 Context 类还没有初始化,但是 tasks 中的脚本可能已经引用了这里的变量 |
|
# 为了能够动态更新这里变量的值,这里使用 Forwarded 类再封装一层, |
|
# 将调用转发到实际的稍后初始化的 Context 类上 |
|
_c: Context | None = None |
|
device: ContextDevice = cast(ContextDevice, Forwarded(name="device")) |
|
"""当前正在执行任务的设备。""" |
|
ocr: ContextOcr = cast(ContextOcr, Forwarded(name="ocr")) |
|
"""OCR 引擎。""" |
|
image: ContextImage = cast(ContextImage, Forwarded(name="image")) |
|
"""图像识别。""" |
|
color: ContextColor = cast(ContextColor, Forwarded(name="color")) |
|
"""颜色识别。""" |
|
vars: ContextGlobalVars = cast(ContextGlobalVars, Forwarded(name="vars")) |
|
"""全局变量。""" |
|
debug: ContextDebug = cast(ContextDebug, Forwarded(name="debug")) |
|
"""调试工具。""" |
|
config: ContextConfig = cast(ContextConfig, Forwarded(name="config")) |
|
"""配置数据。""" |
|
last_screenshot_time: float = -1 |
之后考虑只导出一个 context/ctx/c 对象,然后让使用者自行解构:
from kotonebot import ctx
device = ctx.device
image = ctx.image
device.click(image.find(...))
或者不解构
from kotonebot import ctx as c
c.device.click(c.image.find(...))
目前所有的 Context 对象都是从 context 模块里单独导出:
kotonebot/kotonebot/backend/context/context.py
Lines 912 to 930 in 5dc26af
之后考虑只导出一个 context/ctx/c 对象,然后让使用者自行解构:
或者不解构