From 7d05e3047c0b93cca66687228bf3c7e003522e91 Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Tue, 29 Oct 2024 08:26:41 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20=E5=B7=A5=E5=85=B7=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zhenxun/configs/utils/__init__.py | 19 +++++--------- zhenxun/utils/_image_template.py | 10 +++----- zhenxun/utils/message.py | 42 ++++++++++++++++++++++++++++++- 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/zhenxun/configs/utils/__init__.py b/zhenxun/configs/utils/__init__.py index b041abe3..beb52611 100644 --- a/zhenxun/configs/utils/__init__.py +++ b/zhenxun/configs/utils/__init__.py @@ -288,13 +288,6 @@ class ConfigsManager: config.value = value config.default_value = default_value else: - _module = None - if ":" in module: - module_split = module.split(":") - if len(module_split) < 2: - raise ValueError(f"module: {module} 填写错误") - _module = module_split[-1] - module = module_split[0] key = key.upper() if not self._data.get(module): self._data[module] = ConfigGroup(module=module) @@ -311,7 +304,6 @@ class ConfigsManager: key: str, value: Any, auto_save: bool = False, - save_simple_data: bool = True, ): """设置配置值 @@ -320,15 +312,16 @@ class ConfigsManager: key: 配置名称 value: 值 auto_save: 自动保存. - save_simple_data: 保存至config.yaml. """ + key = key.upper() if module in self._data: - data = self._data[module].configs.get(key) - if data and data != value: + if self._data[module].configs.get(key): self._data[module].configs[key].value = value - self._simple_data[module][key] = value + else: + self.add_plugin_config(module, key, value) + self._simple_data[module][key] = value if auto_save: - self.save(save_simple_data=save_simple_data) + self.save(save_simple_data=True) def get_config(self, module: str, key: str, default: Any = None) -> Any: """获取指定配置值 diff --git a/zhenxun/utils/_image_template.py b/zhenxun/utils/_image_template.py index a1d4c01b..6d81285d 100644 --- a/zhenxun/utils/_image_template.py +++ b/zhenxun/utils/_image_template.py @@ -10,7 +10,6 @@ from ._build_image import BuildImage class RowStyle(BaseModel): - font: FreeTypeFont | str | Path | None = "HYWenHei-85W.ttf" """字体""" font_size: int = 20 @@ -23,7 +22,6 @@ class RowStyle(BaseModel): class ImageTemplate: - color_list = ["#C2CEFE", "#FFA94C", "#3FE6A0", "#D1D4F5"] # noqa: RUF012 @classmethod @@ -88,7 +86,7 @@ class ImageTemplate: head_text: str, tip_text: str | None, column_name: list[str], - data_list: list[list[str | tuple[Path | BuildImage, int, int]]], + data_list: list[list[str | int | tuple[Path | BuildImage, int, int]]], row_space: int = 35, column_space: int = 30, padding: int = 5, @@ -137,7 +135,7 @@ class ImageTemplate: async def table( cls, column_name: list[str], - data_list: list[list[str | tuple[Path | BuildImage, int, int]]], + data_list: list[list[str | int | tuple[Path | BuildImage, int, int]]], row_space: int = 25, column_space: int = 10, padding: int = 5, @@ -163,7 +161,7 @@ class ImageTemplate: c = [] for lst in data_list: if len(lst) > i: - c.append(lst[i]) + c.append(str(lst[i])) else: c.append("") column_data.append(c) @@ -176,7 +174,7 @@ class ImageTemplate: if isinstance(s, tuple): w = s[1] else: - w, _ = BuildImage.get_text_size(s, font) + w, _ = BuildImage.get_text_size(str(s), font) if w > _temp["width"]: _temp["width"] = w build_data_list.append(_temp) diff --git a/zhenxun/utils/message.py b/zhenxun/utils/message.py index 38fcdacd..0834c14d 100644 --- a/zhenxun/utils/message.py +++ b/zhenxun/utils/message.py @@ -4,7 +4,17 @@ from pathlib import Path import nonebot from pydantic import BaseModel from nonebot.adapters.onebot.v11 import Message, MessageSegment -from nonebot_plugin_alconna import At, Text, AtAll, Image, Video, Voice, UniMessage +from nonebot_plugin_alconna import ( + At, + Text, + AtAll, + Image, + Video, + Voice, + Reference, + CustomNode, + UniMessage, +) from zhenxun.services.log import logger from zhenxun.configs.config import BotConfig @@ -89,6 +99,36 @@ class MessageUtils: message_list += cls.__build_message(_data) # type: ignore return UniMessage(message_list) + @classmethod + def alc_forward_msg( + cls, + msg_list: list, + uin: str, + name: str, + ) -> UniMessage: + """生成自定义合并消息 + + 参数: + msg_list: 消息列表 + uin: 发送者 QQ + name: 自定义名称 + + 返回: + list[dict]: 转发消息 + """ + node_list = [] + for _message in msg_list: + if isinstance(_message, list): + for i in range(len(_message.copy())): + if isinstance(_message[i], Path): + _message[i] = Image( + raw=BuildImage.open(_message[i]).pic2bytes() + ) + node_list.append( + CustomNode(uid=uin, name=name, content=UniMessage(_message)) + ) + return UniMessage(Reference(nodes=node_list)) + @classmethod def custom_forward_msg( cls,