fix: unique session not working (#4490)
* fix: unique session not working * fix: correct session initialization and update unified_msg_origin setter * fix: update session ID assignment in WakingCheckStage
This commit is contained in:
@@ -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
|
||||
@@ -51,12 +49,12 @@ class AstrMessageEvent(abc.ABC):
|
||||
self.is_at_or_wake_command = False
|
||||
"""是否是 At 机器人或者带有唤醒词或者是私聊(插件注册的事件监听器会让 is_wake 设为 True, 但是不会让这个属性置为 True)"""
|
||||
self._extras: dict[str, Any] = {}
|
||||
self.session = MessageSesion(
|
||||
self.session = MessageSession(
|
||||
platform_name=platform_meta.id,
|
||||
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,27 @@ 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"""
|
||||
self.new_session = MessageSession.from_str(value)
|
||||
self.session = self.new_session
|
||||
|
||||
@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 等)。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user