feat(chat): 增强消息存储和动作类型检查功能

- 在消息存储中增加additional_config字段支持,用于存储格式信息和其他配置
- 改进动作修改器的类型检查逻辑,新增_get_adapter_supported_output_types方法
- 通过解析additional_config中的format_info动态获取适配器支持的输出类型
- 添加对字符串和字典格式additional_config的兼容处理
- 默认支持NapCat适配器的常见消息类型(text、image、voice等)
This commit is contained in:
Windpicker-owo
2025-10-24 19:49:28 +08:00
parent 92f5f9bbd9
commit 01f0a3ca4f
2 changed files with 108 additions and 1 deletions

View File

@@ -99,6 +99,21 @@ class MessageStorage:
# 将priority_info字典序列化为JSON字符串以便存储到数据库的Text字段
priority_info_json = orjson.dumps(priority_info).decode("utf-8") if priority_info else None
# 准备additional_config包含format_info和其他配置
additional_config_data = {}
# 保存format_info到additional_config中
if hasattr(message.message_info, 'format_info') and message.message_info.format_info:
format_info_dict = message.message_info.format_info.to_dict()
additional_config_data["format_info"] = format_info_dict
# 合并adapter传递的其他additional_config
if hasattr(message.message_info, 'additional_config') and message.message_info.additional_config:
additional_config_data.update(message.message_info.additional_config)
# 序列化为JSON字符串以便存储
additional_config_json = orjson.dumps(additional_config_data).decode("utf-8") if additional_config_data else None
# 获取数据库会话
new_message = Messages(
@@ -127,6 +142,11 @@ class MessageStorage:
priority_info=priority_info_json,
is_emoji=is_emoji,
is_picid=is_picid,
is_notify=is_notify,
is_command=is_command,
key_words=key_words,
key_words_lite=key_words_lite,
additional_config=additional_config_json,
)
async with get_db_session() as session:
session.add(new_message)