diff --git a/astrbot/core/config/default.py b/astrbot/core/config/default.py index 7a4c2b6b0..37048f2a1 100644 --- a/astrbot/core/config/default.py +++ b/astrbot/core/config/default.py @@ -60,6 +60,7 @@ DEFAULT_CONFIG = { "web_search_link": False, "display_reasoning_text": False, "identifier": False, + "group_name_display": False, "datetime_system_prompt": True, "default_personality": "default", "persona_pool": ["*"], @@ -1724,6 +1725,9 @@ CONFIG_METADATA_2 = { "identifier": { "type": "bool", }, + "group_name_display": { + "type": "bool", + }, "datetime_system_prompt": { "type": "bool", }, @@ -1997,6 +2001,11 @@ CONFIG_METADATA_3 = { "description": "用户识别", "type": "bool", }, + "provider_settings.group_name_display": { + "description": "显示群名称", + "type": "bool", + "hint": "启用后,在支持的平台(aiocqhttp)上会在 prompt 中包含群名称信息。", + }, "provider_settings.datetime_system_prompt": { "description": "现实世界时间感知", "type": "bool", diff --git a/astrbot/core/platform/astrbot_message.py b/astrbot/core/platform/astrbot_message.py index e7bd4bd9c..1808c2911 100644 --- a/astrbot/core/platform/astrbot_message.py +++ b/astrbot/core/platform/astrbot_message.py @@ -55,7 +55,7 @@ class AstrBotMessage: self_id: str # 机器人的识别id session_id: str # 会话id。取决于 unique_session 的设置。 message_id: str # 消息id - group_id: str = "" # 群组id,如果为私聊,则为空 + group: Group # 群组 sender: MessageMember # 发送者 message: List[BaseMessageComponent] # 消息链使用 Nakuru 的消息链格式 message_str: str # 最直观的纯文本消息字符串 @@ -64,6 +64,28 @@ class AstrBotMessage: 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): + """设置 group_id""" + if value: + if self.group: + self.group.group_id = value + else: + self.group = Group(group_id=value) + else: + self.group = None diff --git a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py index 7d3702666..bcb243ac4 100644 --- a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +++ b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py @@ -187,6 +187,7 @@ class AiocqhttpAdapter(Platform): if event["message_type"] == "group": abm.type = MessageType.GROUP_MESSAGE abm.group_id = str(event.group_id) + abm.group.group_name = event.get("group_name", "N/A") elif event["message_type"] == "private": abm.type = MessageType.FRIEND_MESSAGE if self.unique_session and abm.type == MessageType.GROUP_MESSAGE: diff --git a/packages/astrbot/main.py b/packages/astrbot/main.py index 7514fb924..c8d4d0d8a 100644 --- a/packages/astrbot/main.py +++ b/packages/astrbot/main.py @@ -1214,6 +1214,12 @@ UID: {user_id} 此 ID 可用于设置管理员。 user_info = f"\n[User ID: {user_id}, Nickname: {user_nickname}]\n" req.prompt = user_info + req.prompt + if cfg.get("group_name_display") and event.message_obj.group_id: + group_name = event.message_obj.group.group_name + + if group_name: + req.system_prompt += f"\nGroup name: {group_name}\n" + # 启用附加时间戳 if cfg.get("datetime_system_prompt"): current_time = None