From 76cfc31a1d992f6bf9dea23f2f1a71d9fbb7124d Mon Sep 17 00:00:00 2001 From: Moyuyanli <572490972@qq.com> Date: Tue, 11 Mar 2025 17:10:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0=20Group=20=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/platform/astrbot_message.py | 48 +++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/astrbot/core/platform/astrbot_message.py b/astrbot/core/platform/astrbot_message.py index ea55eaf4b..cb399bacf 100644 --- a/astrbot/core/platform/astrbot_message.py +++ b/astrbot/core/platform/astrbot_message.py @@ -1,5 +1,5 @@ import time -from typing import List +from typing import List, Dict, Any from dataclasses import dataclass from astrbot.core.message.components import BaseMessageComponent from .message_type import MessageType @@ -10,6 +10,52 @@ class MessageMember: user_id: str # 发送者id nickname: str = None + def __str__(self): + # 使用 f-string 来构建返回的字符串表示形式 + return (f"User ID: {self.user_id}\n" + f"Nickname: {self.nickname if self.nickname else 'N/A'}") + +@dataclass +class Group: + group_id: str + group_name: str = None + + # 群头像 + group_avatar: str = None + + # 群主id + group_owner: str = None + + # 群管理员id + group_admin: str = None + + # 群成员 + members: List[MessageMember] = None + + def __str__(self): + # 使用 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 ID: {self.group_admin if self.group_admin else 'N/A'}") + + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> "Group": + # 提取members信息并转换为MessageMember对象 + members = [ + MessageMember(user_id=member["wxid"], nickname=member["nickName"]) + for member in data.get("memberList", []) + ] + + return cls( + group_id=data["chatroomId"], + group_name=data.get("nickName"), + group_avatar=data.get("smallHeadImgUrl"), + group_owner=data.get("chatRoomOwner"), + members=members, + ) + class AstrBotMessage: """