update: 新增send_by_session方法,接受处理来自AstrBot核心的消息

This commit is contained in:
xiamuceer
2025-05-16 14:28:19 +08:00
parent 960ff438e8
commit 587bd00a19
2 changed files with 30 additions and 2 deletions
@@ -10,12 +10,14 @@ import websockets
from astrbot import logger
from astrbot.api.message_components import Plain
from astrbot.api.platform import Platform, PlatformMetadata
from astrbot.core.message.message_event_result import MessageChain
from astrbot.core.platform.astrbot_message import (
AstrBotMessage,
MessageMember,
MessageType,
)
from astrbot.core.utils.astrbot_path import get_astrbot_data_path
from astrbot.core.platform.astr_message_event import MessageSesion
from ...register import register_platform_adapter
from .wechatpadpro_message_event import WeChatPadProMessageEvent
@@ -552,3 +554,30 @@ class WeChatPadProAdapter(Platform):
得到一个平台的元数据。
"""
return self.metadata
async def send_by_session(
self, session: MessageSesion, message_chain: MessageChain
):
# 创建一个临时的 AstrBotMessage 实例,用于传递会话信息
dummy_message_obj = AstrBotMessage()
dummy_message_obj.session_id = session.session_id
# 根据 session_id 判断消息类型
if "@chatroom" in session.session_id:
dummy_message_obj.type = MessageType.GROUP_MESSAGE
dummy_message_obj.group_id = session.session_id
dummy_message_obj.sender = MessageMember(user_id="", nickname="")
else:
dummy_message_obj.type = MessageType.FRIEND_MESSAGE
dummy_message_obj.group_id = ""
dummy_message_obj.sender = MessageMember(user_id="", nickname="")
# logger.info(f"会话消息:{session}")
# logger.info(f"临时消息结构:{dummy_message_obj}")
sending_event = WeChatPadProMessageEvent(
message_str="",
message_obj=dummy_message_obj,
platform_meta=self.meta(),
session_id=session.session_id,
adapter=self,
)
# 调用实例方法 send
await sending_event.send(message_chain)
@@ -24,7 +24,6 @@ class WeChatPadProMessageEvent(AstrMessageEvent):
message_obj: AstrBotMessage,
platform_meta: PlatformMetadata,
session_id: str,
# 添加平台特定的参数,例如适配器实例
adapter: "WeChatPadProAdapter", # 传递适配器实例
):
super().__init__(message_str, message_obj, platform_meta, session_id)
@@ -69,7 +68,7 @@ class WeChatPadProMessageEvent(AstrMessageEvent):
self.message_obj.sender.nickname or self.message_obj.sender.user_id
)
message_text = f"@{mention_text} {text}"
logger.info(f"已添加 @ 信息: {message_text}")
# logger.info(f"已添加 @ 信息: {message_text}")
else:
message_text = text
payload = {