chore: import private baseline from gitea state
This commit is contained in:
105
plugin-templates/MaiBot-Napcat-Adapter/runtime/builder.py
Normal file
105
plugin-templates/MaiBot-Napcat-Adapter/runtime/builder.py
Normal file
@@ -0,0 +1,105 @@
|
||||
"""NapCat 运行时组件构建器。"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Awaitable, Callable, Coroutine
|
||||
|
||||
from ..codecs.inbound import NapCatInboundCodec
|
||||
from ..codecs.notice import NapCatNoticeCodec
|
||||
from ..codecs.outbound import NapCatOutboundCodec
|
||||
from ..filters import NapCatChatFilter
|
||||
from ..heartbeat_monitor import NapCatHeartbeatMonitor
|
||||
from ..runtime_state import NapCatRuntimeStateManager
|
||||
from ..services import (
|
||||
NapCatActionService,
|
||||
NapCatBanStateStore,
|
||||
NapCatBanTracker,
|
||||
NapCatHistoryRecoveryStore,
|
||||
NapCatOfficialBotGuard,
|
||||
NapCatQueryService,
|
||||
)
|
||||
from ..transport import NapCatTransportClient
|
||||
from .bundle import NapCatRuntimeBundle
|
||||
|
||||
|
||||
class NapCatRuntimeBuilder:
|
||||
"""按固定依赖图构建 NapCat 运行时组件。"""
|
||||
|
||||
def __init__(self, gateway_capability: Any, logger: Any, gateway_name: str) -> None:
|
||||
"""初始化运行时构建器。
|
||||
|
||||
Args:
|
||||
gateway_capability: SDK 提供的消息网关能力对象。
|
||||
logger: 插件日志对象。
|
||||
gateway_name: 当前消息网关名称。
|
||||
"""
|
||||
self._gateway_capability = gateway_capability
|
||||
self._logger = logger
|
||||
self._gateway_name = gateway_name
|
||||
|
||||
def build(
|
||||
self,
|
||||
on_connection_opened: Callable[[], Coroutine[Any, Any, None]],
|
||||
on_connection_closed: Callable[[], Coroutine[Any, Any, None]],
|
||||
on_payload: Callable[[dict[str, Any]], Coroutine[Any, Any, None]],
|
||||
on_natural_lift: Callable[[dict[str, Any]], Awaitable[None]],
|
||||
on_heartbeat_timeout: Callable[[str], Awaitable[None]],
|
||||
) -> NapCatRuntimeBundle:
|
||||
"""创建一套完整的运行时组件。
|
||||
|
||||
Args:
|
||||
on_connection_opened: 连接建立回调。
|
||||
on_connection_closed: 连接断开回调。
|
||||
on_payload: 非 echo 载荷回调。
|
||||
on_natural_lift: 自然解除禁言回调。
|
||||
on_heartbeat_timeout: 心跳超时回调。
|
||||
|
||||
Returns:
|
||||
NapCatRuntimeBundle: 已完成依赖注入的运行时组件集合。
|
||||
"""
|
||||
chat_filter = NapCatChatFilter(self._logger)
|
||||
transport = NapCatTransportClient(
|
||||
logger=self._logger,
|
||||
on_connection_opened=on_connection_opened,
|
||||
on_connection_closed=on_connection_closed,
|
||||
on_payload=on_payload,
|
||||
)
|
||||
action_service = NapCatActionService(self._logger, transport)
|
||||
query_service = NapCatQueryService(action_service, self._logger)
|
||||
ban_state_store = NapCatBanStateStore(self._logger)
|
||||
history_recovery_store = NapCatHistoryRecoveryStore(self._logger)
|
||||
inbound_codec = NapCatInboundCodec(self._logger, query_service)
|
||||
notice_codec = NapCatNoticeCodec(self._logger, query_service)
|
||||
runtime_state = NapCatRuntimeStateManager(
|
||||
gateway_capability=self._gateway_capability,
|
||||
logger=self._logger,
|
||||
gateway_name=self._gateway_name,
|
||||
)
|
||||
ban_tracker = NapCatBanTracker(
|
||||
logger=self._logger,
|
||||
query_service=query_service,
|
||||
on_natural_lift=on_natural_lift,
|
||||
state_store=ban_state_store,
|
||||
)
|
||||
heartbeat_monitor = NapCatHeartbeatMonitor(
|
||||
logger=self._logger,
|
||||
on_timeout=on_heartbeat_timeout,
|
||||
)
|
||||
official_bot_guard = NapCatOfficialBotGuard(self._logger, query_service)
|
||||
outbound_codec = NapCatOutboundCodec()
|
||||
|
||||
return NapCatRuntimeBundle(
|
||||
action_service=action_service,
|
||||
ban_state_store=ban_state_store,
|
||||
ban_tracker=ban_tracker,
|
||||
chat_filter=chat_filter,
|
||||
heartbeat_monitor=heartbeat_monitor,
|
||||
history_recovery_store=history_recovery_store,
|
||||
inbound_codec=inbound_codec,
|
||||
notice_codec=notice_codec,
|
||||
official_bot_guard=official_bot_guard,
|
||||
outbound_codec=outbound_codec,
|
||||
query_service=query_service,
|
||||
runtime_state=runtime_state,
|
||||
transport=transport,
|
||||
)
|
||||
Reference in New Issue
Block a user