Skip to content

Commit 1f4aeb2

Browse files
committed
refactor: 给kook适配器事件data类和ws信令枚举使用更清晰的命名,默认使用by_alias来原样转换数据类为json字符串
1 parent 9af7ad9 commit 1f4aeb2

3 files changed

Lines changed: 21 additions & 21 deletions

File tree

astrbot/core/platform/sources/kook/kook_adapter.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
KmarkdownElement,
2626
KookCardMessageContainer,
2727
KookChannelType,
28-
KookMessageEvent,
28+
KookMessageEventData,
2929
KookMessageType,
3030
PlainTextElement,
3131
SectionModule,
@@ -72,7 +72,7 @@ def meta(self) -> PlatformMetadata:
7272
def _should_ignore_event_by_bot_nickname(self, author_id: str) -> bool:
7373
return self.client.bot_id == author_id
7474

75-
async def _on_received(self, event: KookMessageEvent):
75+
async def _on_received(self, event: KookMessageEventData):
7676
logger.debug(f"KOOK 收到数据: {event.to_json()}")
7777
event_type = event.type
7878
if event_type in (KookMessageType.KMARKDOWN, KookMessageType.CARD):
@@ -185,7 +185,7 @@ async def _cleanup(self):
185185
logger.info("[KOOK] 资源清理完成")
186186

187187
def _parse_kmarkdown_text_message(
188-
self, data: KookMessageEvent, self_id: str
188+
self, data: KookMessageEventData, self_id: str
189189
) -> tuple[list, str]:
190190
kmarkdown = data.extra.kmarkdown
191191
content = data.content or ""
@@ -263,7 +263,7 @@ def _parse_kmarkdown_text_message(
263263

264264
return components, message_str
265265

266-
def _parse_card_message(self, data: KookMessageEvent) -> tuple[list, str]:
266+
def _parse_card_message(self, data: KookMessageEventData) -> tuple[list, str]:
267267
content = data.content
268268
if not isinstance(content, str):
269269
content = str(content)
@@ -316,7 +316,7 @@ def _handle_image_group(
316316
valid_urls.append(el.src)
317317
return valid_urls
318318

319-
async def convert_message(self, data: KookMessageEvent) -> AstrBotMessage:
319+
async def convert_message(self, data: KookMessageEventData) -> AstrBotMessage:
320320
abm = AstrBotMessage()
321321
abm.raw_message = data.to_dict()
322322
abm.self_id = self.client.bot_id

astrbot/core/platform/sources/kook/kook_client.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
from .kook_types import (
2020
KookApiPaths,
2121
KookGatewayIndexResponse,
22-
KookHelloEvent,
23-
KookMessageEvent,
22+
KookHelloEventData,
23+
KookMessageEventData,
2424
KookMessageSignal,
2525
KookMessageType,
26-
KookResumeAckEvent,
26+
KookResumeAckEventData,
2727
KookUserMeResponse,
2828
KookWebsocketEvent,
2929
)
@@ -228,27 +228,27 @@ async def _handle_signal(self, event: KookWebsocketEvent):
228228
"""处理不同类型的信令"""
229229

230230
match event.data:
231-
case KookMessageEvent() as data:
231+
case KookMessageEventData() as data:
232232
if event.sn is not None:
233233
self.last_sn = event.sn
234234
await self.event_callback(data)
235235

236-
case KookHelloEvent() as data:
236+
case KookHelloEventData() as data:
237237
await self._handle_hello(data)
238238

239-
case KookResumeAckEvent() as data:
239+
case KookResumeAckEventData() as data:
240240
await self._handle_resume_ack(data)
241241

242242
case _:
243243
match event.signal:
244-
case KookMessageSignal.HEARTBEAT_ACK:
244+
case KookMessageSignal.PONG:
245245
await self._handle_pong()
246246
case KookMessageSignal.RECONNECT:
247247
await self._handle_reconnect()
248248
case _:
249249
logger.debug(f"[KOOK] 未处理的信令类型: {event.signal}")
250250

251-
async def _handle_hello(self, data: KookHelloEvent):
251+
async def _handle_hello(self, data: KookHelloEventData):
252252
"""处理HELLO握手"""
253253
code = data.code
254254

@@ -276,7 +276,7 @@ async def _handle_reconnect(self):
276276
self.session_id = None
277277
self.running = False
278278

279-
async def _handle_resume_ack(self, data: KookResumeAckEvent):
279+
async def _handle_resume_ack(self, data: KookResumeAckEventData):
280280
"""处理RESUME确认"""
281281
self.session_id = data.session_id
282282
logger.info(f"[KOOK] Resume成功,session_id: {self.session_id}")

astrbot/core/platform/sources/kook/kook_types.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def to_json(
8585
self,
8686
indent: int | None = None,
8787
ensure_ascii=False,
88-
by_alias=False,
88+
by_alias=True,
8989
exclude_none=True,
9090
) -> str:
9191
return self.model_dump_json(
@@ -281,9 +281,9 @@ class KookMessageSignal(IntEnum):
281281
"""server->client 消息(s包含聊天和通知消息)"""
282282
HELLO = 1
283283
"""server->client 客户端连接 ws 时, 服务端返回握手结果"""
284-
HEARTBEAT = 2
284+
PING = 2
285285
"""client->server 心跳,ping"""
286-
HEARTBEAT_ACK = 3
286+
PONG = 3
287287
"""server->client 心跳,pong"""
288288
RESUME = 4
289289
"""client->server resume, 恢复会话"""
@@ -330,7 +330,7 @@ class KookExtra(KookBaseDataClass):
330330
mention_here: bool = False
331331

332332

333-
class KookMessageEvent(KookBaseDataClass):
333+
class KookMessageEventData(KookBaseDataClass):
334334
signal: Literal[KookMessageSignal.MESSAGE] = Field(
335335
KookMessageSignal.MESSAGE, exclude=True
336336
)
@@ -348,7 +348,7 @@ class KookMessageEvent(KookBaseDataClass):
348348
extra: KookExtra
349349

350350

351-
class KookHelloEvent(KookBaseDataClass):
351+
class KookHelloEventData(KookBaseDataClass):
352352
signal: Literal[KookMessageSignal.HELLO] = Field(
353353
KookMessageSignal.HELLO, exclude=True
354354
)
@@ -358,7 +358,7 @@ class KookHelloEvent(KookBaseDataClass):
358358
session_id: str
359359

360360

361-
class KookResumeAckEvent(KookBaseDataClass):
361+
class KookResumeAckEventData(KookBaseDataClass):
362362
signal: Literal[KookMessageSignal.RESUME_ACK] = Field(
363363
KookMessageSignal.RESUME_ACK, exclude=True
364364
)
@@ -373,7 +373,7 @@ class KookWebsocketEvent(KookBaseDataClass):
373373
signal: KookMessageSignal = Field(..., alias="s")
374374
"""信令类型"""
375375
data: Annotated[
376-
KookMessageEvent | KookHelloEvent | KookResumeAckEvent | None,
376+
KookMessageEventData | KookHelloEventData | KookResumeAckEventData | None,
377377
Field(discriminator="signal"),
378378
] = Field(None, alias="d")
379379
"""数据事件主体,对应原字段是'd'"""

0 commit comments

Comments
 (0)