From 8ee9b34c52c6f9b24def443f27cf1d5ea5b461a5 Mon Sep 17 00:00:00 2001 From: student_2333 Date: Sun, 30 Jun 2024 18:27:32 +0800 Subject: [PATCH] fix #21 --- README.md | 4 ++++ nonebot_plugin_picmcstat/__init__.py | 2 +- nonebot_plugin_picmcstat/const.py | 6 +++++- nonebot_plugin_picmcstat/util.py | 9 +++++++-- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d6b032d..a33dd6e 100644 --- a/README.md +++ b/README.md @@ -215,6 +215,10 @@ Telegram:[@lgc2333](https://t.me/lgc2333) ## 📝 更新日志 +### 0.6.1 + +- fix [#21](https://github.com/lgc-NB2Dev/nonebot-plugin-picmcstat/issues/21) + ### 0.6.0 - 适配 Pydantic V1 & V2 diff --git a/nonebot_plugin_picmcstat/__init__.py b/nonebot_plugin_picmcstat/__init__.py index 4424886..3cb91e7 100644 --- a/nonebot_plugin_picmcstat/__init__.py +++ b/nonebot_plugin_picmcstat/__init__.py @@ -5,7 +5,7 @@ from . import __main__ as __main__ # noqa: E402 from .config import ConfigClass # noqa: E402 -__version__ = "0.6.0" +__version__ = "0.6.1" __plugin_meta__ = PluginMetadata( name="PicMCStat", description="将一个 Minecraft 服务器的 MOTD 信息绘制为一张图片", diff --git a/nonebot_plugin_picmcstat/const.py b/nonebot_plugin_picmcstat/const.py index 8bb77fe..b1009ae 100644 --- a/nonebot_plugin_picmcstat/const.py +++ b/nonebot_plugin_picmcstat/const.py @@ -1,3 +1,4 @@ +import re from typing import Literal from mcstatus.motd.components import Formatting, MinecraftColor @@ -49,7 +50,11 @@ "m": ["[del]", "[/del]"], "n": ["[u]", "[/u]"], "o": ["[i]", "[/i]"], + "k": ["[obfuscated]", "[/obfuscated]"], # placeholder } +OBFUSCATED_PLACEHOLDER_REGEX = re.compile( + r"\[obfuscated\](?P.*?)\[/obfuscated\]", +) ENUM_CODE_COLOR = {MinecraftColor(k): v for k, v in CODE_COLOR.items()} ENUM_STROKE_COLOR = {MinecraftColor(k): v for k, v in STROKE_COLOR.items()} @@ -59,6 +64,5 @@ } ENUM_STYLE_BBCODE = {Formatting(k): v for k, v in STYLE_BBCODE.items()} - GAME_MODE_MAP = {"Survival": "生存", "Creative": "创造", "Adventure": "冒险"} FORMAT_CODE_REGEX = r"§[0-9abcdefgklmnor]" diff --git a/nonebot_plugin_picmcstat/util.py b/nonebot_plugin_picmcstat/util.py index 65700a9..f3f238a 100644 --- a/nonebot_plugin_picmcstat/util.py +++ b/nonebot_plugin_picmcstat/util.py @@ -24,6 +24,7 @@ ENUM_STROKE_COLOR_BEDROCK, ENUM_STYLE_BBCODE, FORMAT_CODE_REGEX, + OBFUSCATED_PLACEHOLDER_REGEX, STROKE_COLOR, ) @@ -180,7 +181,12 @@ def transform(self, motd_components: Sequence[ParsedMotdComponent]) -> str: return super().transform(motd_components) def _format_output(self, results: list[str]) -> str: - return super()._format_output(results) + "".join(self.on_reset) + text = super()._format_output(results) + "".join(self.on_reset) + return re.sub( + OBFUSCATED_PLACEHOLDER_REGEX, + lambda m: (random_char(len(i)) if (i := m.group("inner")) else ""), + text, + ) def _handle_minecraft_color(self, element: MinecraftColor, /) -> str: stroke_map = ENUM_STROKE_COLOR_BEDROCK if self.bedrock else ENUM_STROKE_COLOR @@ -197,7 +203,6 @@ def _handle_formatting(self, element: Formatting, /) -> str: to_return = "".join(self.on_reset) self.on_reset = [] return to_return - start, end = ENUM_STYLE_BBCODE[element] self.on_reset.append(end) return start