7dd95d8a59
* chore: auto fix by ruff * refactor: 统一修正返回类型注解为 None/bool 以匹配实现 * refactor: 将 _get_next_page 改为异步并移除多余的请求错误抛出 * refactor: 将 get_client 的返回类型改为 object * style: 为 LarkMessageEvent 的相关方法添加返回类型注解 None --------- Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com>
90 lines
2.6 KiB
Python
90 lines
2.6 KiB
Python
import time
|
|
from dataclasses import dataclass
|
|
|
|
from astrbot.core.message.components import BaseMessageComponent
|
|
|
|
from .message_type import MessageType
|
|
|
|
|
|
@dataclass
|
|
class MessageMember:
|
|
user_id: str # 发送者id
|
|
nickname: str | None = None
|
|
|
|
def __str__(self) -> str:
|
|
# 使用 f-string 来构建返回的字符串表示形式
|
|
return (
|
|
f"User ID: {self.user_id},"
|
|
f"Nickname: {self.nickname if self.nickname else 'N/A'}"
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class Group:
|
|
group_id: str
|
|
"""群号"""
|
|
group_name: str | None = None
|
|
"""群名称"""
|
|
group_avatar: str | None = None
|
|
"""群头像"""
|
|
group_owner: str | None = None
|
|
"""群主 id"""
|
|
group_admins: list[str] | None = None
|
|
"""群管理员 id"""
|
|
members: list[MessageMember] | None = None
|
|
"""所有群成员"""
|
|
|
|
def __str__(self) -> str:
|
|
# 使用 f-string 来构建返回的字符串表示形式
|
|
return (
|
|
f"Group ID: {self.group_id}\n"
|
|
f"Name: {self.group_name if self.group_name else 'N/A'}\n"
|
|
f"Avatar: {self.group_avatar if self.group_avatar else 'N/A'}\n"
|
|
f"Owner ID: {self.group_owner if self.group_owner else 'N/A'}\n"
|
|
f"Admin IDs: {self.group_admins if self.group_admins else 'N/A'}\n"
|
|
f"Members Len: {len(self.members) if self.members else 0}\n"
|
|
f"First Member: {self.members[0] if self.members else 'N/A'}\n"
|
|
)
|
|
|
|
|
|
class AstrBotMessage:
|
|
"""AstrBot 的消息对象"""
|
|
|
|
type: MessageType # 消息类型
|
|
self_id: str # 机器人的识别id
|
|
session_id: str # 会话id。取决于 unique_session 的设置。
|
|
message_id: str # 消息id
|
|
group: Group | None # 群组
|
|
sender: MessageMember # 发送者
|
|
message: list[BaseMessageComponent] # 消息链使用 Nakuru 的消息链格式
|
|
message_str: str # 最直观的纯文本消息字符串
|
|
raw_message: object
|
|
timestamp: int # 消息时间戳
|
|
|
|
def __init__(self) -> None:
|
|
self.timestamp = int(time.time())
|
|
self.group = None
|
|
|
|
def __str__(self) -> str:
|
|
return str(self.__dict__)
|
|
|
|
@property
|
|
def group_id(self) -> str:
|
|
"""向后兼容的 group_id 属性
|
|
群组id,如果为私聊,则为空
|
|
"""
|
|
if self.group:
|
|
return self.group.group_id
|
|
return ""
|
|
|
|
@group_id.setter
|
|
def group_id(self, value: str | None) -> None:
|
|
"""设置 group_id"""
|
|
if value:
|
|
if self.group:
|
|
self.group.group_id = value
|
|
else:
|
|
self.group = Group(group_id=value)
|
|
else:
|
|
self.group = None
|