fix(ui): 修复某些情况下热重载配置失败的问题
原因是上下文初始化前就调用了 config.load() 导致报错。
This commit is contained in:
parent
5db3ed6526
commit
4bea42238f
|
@ -50,7 +50,7 @@ from kotonebot.backend.ocr import (
|
|||
from kotonebot.config.manager import load_config, save_config
|
||||
from kotonebot.config.base_config import UserConfig
|
||||
from kotonebot.backend.core import Image, HintBox
|
||||
from kotonebot.errors import KotonebotWarning
|
||||
from kotonebot.errors import ContextNotInitializedError, KotonebotWarning
|
||||
from kotonebot.backend.preprocessor import PreprocessorProtocol
|
||||
from kotonebot.primitives import Rect
|
||||
|
||||
|
@ -719,14 +719,14 @@ class Forwarded:
|
|||
if name.startswith('_FORWARD_'):
|
||||
return object.__getattribute__(self, name)
|
||||
if self._FORWARD_getter is None:
|
||||
raise ValueError(f"Forwarded object {self._FORWARD_name} called before initialization.")
|
||||
raise ContextNotInitializedError(f"Forwarded object {self._FORWARD_name} called before initialization.")
|
||||
return getattr(self._FORWARD_getter(), name)
|
||||
|
||||
def __setattr__(self, name: str, value: Any):
|
||||
if name.startswith('_FORWARD_'):
|
||||
return object.__setattr__(self, name, value)
|
||||
if self._FORWARD_getter is None:
|
||||
raise ValueError(f"Forwarded object {self._FORWARD_name} called before initialization.")
|
||||
raise ContextNotInitializedError(f"Forwarded object {self._FORWARD_name} called before initialization.")
|
||||
setattr(self._FORWARD_getter(), name, value)
|
||||
|
||||
|
||||
|
@ -974,7 +974,7 @@ def inject_context(
|
|||
):
|
||||
global _c
|
||||
if _c is None:
|
||||
raise RuntimeError('Context not initialized')
|
||||
raise ContextNotInitializedError('Context not initialized')
|
||||
_c.inject(device=device, ocr=ocr, image=image, color=color, vars=vars, debug=debug, config=config)
|
||||
|
||||
class ManualContextManager:
|
||||
|
|
|
@ -30,4 +30,8 @@ class UnscalableResolutionError(KotonebotError):
|
|||
self.target_resolution = target_resolution
|
||||
self.screen_size = screen_size
|
||||
super().__init__(f'Cannot scale to target resolution {target_resolution}. '
|
||||
f'Screen size: {screen_size}')
|
||||
f'Screen size: {screen_size}')
|
||||
|
||||
class ContextNotInitializedError(KotonebotError):
|
||||
def __init__(self, msg: str = 'Context not initialized'):
|
||||
super().__init__(msg)
|
|
@ -16,11 +16,12 @@ import gradio as gr
|
|||
|
||||
from kotonebot.kaa.main import Kaa
|
||||
from kotonebot.kaa.db import IdolCard
|
||||
from kotonebot.backend.context.context import vars
|
||||
from kotonebot.errors import ContextNotInitializedError
|
||||
from kotonebot.client.host import Mumu12Host, LeidianHost
|
||||
from kotonebot.config.manager import load_config, save_config
|
||||
from kotonebot.config.base_config import UserConfig, BackendConfig
|
||||
from kotonebot.backend.context import task_registry, ContextStackVars
|
||||
from kotonebot.backend.context.context import vars
|
||||
from kotonebot.client.host import Mumu12Host, LeidianHost
|
||||
from kotonebot.kaa.config import (
|
||||
BaseConfig, APShopItems, CapsuleToysConfig, ClubRewardConfig, PurchaseConfig, ActivityFundsConfig,
|
||||
PresentsConfig, AssignmentConfig, ContestConfig, ProduceConfig,
|
||||
|
@ -390,8 +391,8 @@ class KotoneBotUI:
|
|||
"""获取暂停按钮的状态和交互性"""
|
||||
try:
|
||||
text = "恢复" if vars.flow.is_paused else "暂停"
|
||||
except ValueError:
|
||||
# ValueError: Forwarded object vars called before initialization.
|
||||
except ContextNotInitializedError:
|
||||
# ContextNotInitializedError: Forwarded object vars called before initialization.
|
||||
# TODO: vars.flow.is_paused 应该要可以在脚本正式启动前就能访问
|
||||
text = '未启动'
|
||||
# 如果正在停止过程中,禁用暂停按钮
|
||||
|
@ -417,7 +418,10 @@ class KotoneBotUI:
|
|||
|
||||
# 重新加载 Context 中的配置数据
|
||||
from kotonebot.backend.context.context import config
|
||||
config.load()
|
||||
try:
|
||||
config.load()
|
||||
except ContextNotInitializedError:
|
||||
pass
|
||||
|
||||
logger.info("配置已成功重新加载")
|
||||
return True
|
||||
|
|
Loading…
Reference in New Issue