mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-18 02:00:09 +08:00
新增模块: - api/basic/: AstrBotConfig, BaseConversationManager, Conversation - api/event/: AstrMessageEvent, AstrBotMessage, EventType, MessageType, MessageSession, EventResult 等核心事件类型 - api/message/: MessageChain 及所有消息组件 (Plain, At, Image, File 等) - api/platform/: PlatformMetadata 平台元数据类型 - api/provider/: LLMResponse 提供者响应实体 - api/star/star.py: StarMetadata 插件元数据类型 更新模块: - api/__init__.py: 导出所有子模块 - api/components/: 扩展 Command 兼容性 - api/event/filter.py: 增强 filter 装饰器兼容性 - context.py, decorators.py, events.py: 顶层兼容入口 测试更新: - test_api_event_filter.py: 验证 filter 兼容性 - test_api_modules.py: 验证新模块可导入 - test_handler_dispatcher.py: 验证处理器分发 文档更新: - AGENTS.md/CLAUDE.md: 添加兼容层设计说明,避免重复造轮子 设计原则: - 兼容层通过 thin re-export 方式暴露旧版 API - 不复制独立运行时逻辑,保持架构清晰 - 新版推荐使用顶层模块导入路径
56 lines
1.3 KiB
Python
56 lines
1.3 KiB
Python
"""旧版消息对象兼容类型。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import time
|
|
from dataclasses import dataclass, field
|
|
|
|
from ..message.components import BaseMessageComponent
|
|
from .message_type import MessageType
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class MessageMember:
|
|
user_id: str
|
|
nickname: str | None = None
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class Group:
|
|
group_id: str
|
|
group_name: str | None = None
|
|
group_avatar: str | None = None
|
|
group_owner: str | None = None
|
|
group_admins: list[str] | None = None
|
|
members: list[MessageMember] | None = None
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class AstrBotMessage:
|
|
type: MessageType
|
|
self_id: str
|
|
session_id: str
|
|
message_id: str
|
|
sender: MessageMember
|
|
message: list[BaseMessageComponent] = field(default_factory=list)
|
|
message_str: str = ""
|
|
raw_message: dict = field(default_factory=dict)
|
|
timestamp: int = field(default_factory=lambda: int(time.time()))
|
|
group: Group | None = None
|
|
|
|
@property
|
|
def group_id(self) -> str:
|
|
if self.group is None:
|
|
return ""
|
|
return self.group.group_id
|
|
|
|
@group_id.setter
|
|
def group_id(self, value: str) -> None:
|
|
if value:
|
|
if self.group is None:
|
|
self.group = Group(group_id=value)
|
|
else:
|
|
self.group.group_id = value
|
|
return
|
|
self.group = None
|