From 1d9f509b256ae6006fb86a25571773fd21fea03d Mon Sep 17 00:00:00 2001 From: snowy-yang <102860110+snowy-yang@users.noreply.github.com> Date: Thu, 24 Sep 2026 22:40:29 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20BaseProtocol/Connecter=20=E7=94=B1?= =?UTF-8?q?=20abc=20=E6=94=B9=E4=B8=BA=20typing.Protocol=EF=BC=8C=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E6=8E=A5=E5=8F=A3=E9=A3=8E=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/qqbotsdk/connecter.py | 6 ++---- src/qqbotsdk/protocol.py | 7 +++---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/qqbotsdk/connecter.py b/src/qqbotsdk/connecter.py index e9c16ab..d0a9b88 100644 --- a/src/qqbotsdk/connecter.py +++ b/src/qqbotsdk/connecter.py @@ -16,9 +16,8 @@ """ import asyncio -from abc import ABC, abstractmethod from time import monotonic -from typing import cast +from typing import Protocol, cast import aiohttp import ujson @@ -34,10 +33,9 @@ from .session import Session from .token import AccessToken -class Connecter(ABC): +class Connecter(Protocol): """连接适配器接口:两种接入方式都实现 `run()` 常驻运行。""" - @abstractmethod async def run(self) -> None: ... diff --git a/src/qqbotsdk/protocol.py b/src/qqbotsdk/protocol.py index eb7be0d..0d2553d 100644 --- a/src/qqbotsdk/protocol.py +++ b/src/qqbotsdk/protocol.py @@ -7,19 +7,18 @@ HELLO/READY/INVALID_SESSION/op=13 这类协议帧在适配器内就地处理, 与 `webhook_protocol.py`。 """ -from abc import ABC, abstractmethod -from typing import Any +from typing import Any, Protocol from .model import Payload -class BaseProtocol(ABC): +class BaseProtocol(Protocol): """适配器专有的协议处理器:实现方返回需要回送的响应体。""" - @abstractmethod async def on_frame(self, payload: Payload) -> Payload | dict[str, Any] | None: """处理一条帧,返回需回送的响应体(无需回送则 None)。 IDENTIFY/RESUME 等握手应答、op=13 验证应答都经返回值回送;业务事件 (op=0)不必处理,连接器会照常入队分发。 """ + ...