fix: unique session not working

This commit is contained in:
Soulter
2026-01-15 22:11:08 +08:00
parent af2b3b3bfc
commit 7988e1bf95
2 changed files with 30 additions and 4 deletions
+1 -1
View File
@@ -81,7 +81,7 @@ class WakingCheckStage(Stage):
if self.unique_session and event.message_obj.type == MessageType.GROUP_MESSAGE:
sid = build_unique_session_id(event)
if sid:
event.session_id = sid
event.session.session_id = sid
# ignore bot self message
if (
+29 -3
View File
@@ -42,8 +42,6 @@ class AstrMessageEvent(abc.ABC):
"""消息对象, AstrBotMessage。带有完整的消息结构。"""
self.platform_meta = platform_meta
"""消息平台的信息, 其中 name 是平台的类型,如 aiocqhttp"""
self.session_id = session_id
"""用户的会话 ID。可以直接使用下面的 unified_msg_origin"""
self.role = "member"
"""用户是否是管理员。如果是管理员,这里是 admin"""
self.is_wake = False
@@ -56,7 +54,7 @@ class AstrMessageEvent(abc.ABC):
message_type=message_obj.type,
session_id=session_id,
)
self.unified_msg_origin = str(self.session)
# self.unified_msg_origin = str(self.session)
"""统一的消息来源字符串。格式为 platform_name:message_type:session_id"""
self._result: MessageEventResult | None = None
"""消息事件的结果"""
@@ -72,6 +70,34 @@ class AstrMessageEvent(abc.ABC):
# back_compability
self.platform = platform_meta
@property
def unified_msg_origin(self) -> str:
"""统一的消息来源字符串。格式为 platform_name:message_type:session_id"""
return str(self.session)
@unified_msg_origin.setter
def unified_msg_origin(self, value: str):
"""设置统一的消息来源字符串。格式为 platform_name:message_type:session_id"""
parts = value.split(":")
if len(parts) != 3:
raise ValueError(
"unified_msg_origin 格式错误,应该为 platform_name:message_type:session_id",
)
platform_name, message_type_str, session_id = parts
self.session.platform_name = platform_name
self.session.message_type = MessageType(message_type_str)
self.session.session_id = session_id
@property
def session_id(self) -> str:
"""用户的会话 ID。可以直接使用下面的 unified_msg_origin"""
return self.session.session_id
@session_id.setter
def session_id(self, value: str):
"""设置用户的会话 ID。可以直接使用下面的 unified_msg_origin"""
self.session.session_id = value
def get_platform_name(self):
"""获取这个事件所属的平台的类型(如 aiocqhttp, slack, discord 等)。