File size: 1,461 Bytes
c2fc3c5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
"""插件层公共异常,独立模块避免循环导入。"""


class AccountFrozenError(RuntimeError):
    """
    插件在检测到账号被限流/额度用尽时抛出,携带解冻时间戳(Unix 秒)。
    由 chat_handler 捕获后写入配置并重试其他账号。
    """

    def __init__(self, message: str, unfreeze_at: int) -> None:
        super().__init__(message)
        self.unfreeze_at = unfreeze_at


class BrowserResourceInvalidError(RuntimeError):
    """页面 / tab / browser 资源失效时抛出,供上层做定向回收与重试。"""

    def __init__(
        self,
        detail: str,
        *,
        helper_name: str,
        operation: str,
        stage: str,
        resource_hint: str,
        request_url: str,
        page_url: str,
        request_id: str | None = None,
        stream_phase: str | None = None,
        proxy_key: object | None = None,
        type_name: str | None = None,
        account_id: str | None = None,
    ) -> None:
        super().__init__(detail)
        self.detail = detail
        self.helper_name = helper_name
        self.operation = operation
        self.stage = stage
        self.resource_hint = resource_hint
        self.request_url = request_url
        self.page_url = page_url
        self.request_id = request_id
        self.stream_phase = stream_phase
        self.proxy_key = proxy_key
        self.type_name = type_name
        self.account_id = account_id