From 6e0082c1c9b0056b7b5d9d6d74ee2d0bf67741d9 Mon Sep 17 00:00:00 2001 From: passthem Date: Tue, 30 Sep 2025 02:23:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=8F=98=EF=BC=9A=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E4=BA=86=E5=BE=88=E5=A4=9A=E5=BE=88=E5=A4=9A=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E6=9E=84=E5=BB=BA=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 6 +----- Dockerfile | 5 ++++- .../fonts}/HarmonyOS_Sans_SC_Black.ttf | Bin .../fonts}/HarmonyOS_Sans_SC_Regular.ttf | Bin .../fonts}/NotoColorEmoji-Regular.ttf | Bin .../assets => assets/fonts}/montserrat.otf | Bin .../assets => assets/img/dice}/1.png | Bin .../assets => assets/img/dice}/10.png | Bin .../assets => assets/img/dice}/11.png | Bin .../assets => assets/img/dice}/12.png | Bin .../assets => assets/img/dice}/2.png | Bin .../assets => assets/img/dice}/3.png | Bin .../assets => assets/img/dice}/4.png | Bin .../assets => assets/img/dice}/5.png | Bin .../assets => assets/img/dice}/6.png | Bin .../assets => assets/img/dice}/7.png | Bin .../assets => assets/img/dice}/8.png | Bin .../assets => assets/img/dice}/9.png | Bin .../assets => assets/img/dice}/template.png | Bin .../assets => assets/img/meme}/geimao.jpg | Bin .../assets => assets/img/meme}/ptsay.png | Bin konabot/common/path.py | 4 ++++ .../plugins/memepack/drawing/base/fonts.py | 4 ++-- konabot/plugins/memepack/drawing/base/path.py | 3 --- konabot/plugins/memepack/drawing/geimao.py | 7 ++++--- konabot/plugins/memepack/drawing/pt.py | 7 ++++--- konabot/plugins/roll_dice/roll_dice.py | 18 ++++++------------ .../test_plugin_load.py | 4 +++- 28 files changed, 28 insertions(+), 30 deletions(-) rename {konabot/plugins/memepack/assets => assets/fonts}/HarmonyOS_Sans_SC_Black.ttf (100%) rename {konabot/plugins/memepack/assets => assets/fonts}/HarmonyOS_Sans_SC_Regular.ttf (100%) rename {konabot/plugins/memepack/assets => assets/fonts}/NotoColorEmoji-Regular.ttf (100%) rename {konabot/plugins/roll_dice/assets => assets/fonts}/montserrat.otf (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/1.png (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/10.png (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/11.png (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/12.png (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/2.png (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/3.png (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/4.png (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/5.png (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/6.png (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/7.png (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/8.png (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/9.png (100%) rename {konabot/plugins/roll_dice/assets => assets/img/dice}/template.png (100%) rename {konabot/plugins/memepack/assets => assets/img/meme}/geimao.jpg (100%) rename {konabot/plugins/memepack/assets => assets/img/meme}/ptsay.png (100%) create mode 100644 konabot/common/path.py delete mode 100644 konabot/plugins/memepack/drawing/base/path.py rename test_plugin_load.py => scripts/test_plugin_load.py (74%) diff --git a/.drone.yml b/.drone.yml index 9ac7fec..a402bc2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -30,11 +30,7 @@ steps: image: docker:dind privileged: true commands: - - docker login -u kagami-ci -p ${KAGAMI_CI_PASSWORD} gitea.service.jazzwhom.top - - docker run --rm gitea.service.jazzwhom.top/mttu-developers/konabot:nightly-${DRONE_COMMIT_SHA} python test_plugin_load.py - environment: - KAGAMI_CI_PASSWORD: - from_secret: KAGAMI-CI-PASSWORD + - docker run --rm gitea.service.jazzwhom.top/mttu-developers/konabot:nightly-${DRONE_COMMIT_SHA} python scripts/test_plugin_load.py volumes: - name: docker-socket diff --git a/Dockerfile b/Dockerfile index cb59c00..0d0f164 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,5 +4,8 @@ WORKDIR /app COPY requirements.txt ./ RUN pip install -r requirements.txt --no-deps -COPY . . +COPY bot.py ./ +COPY assets ./ +COPY scripts ./ +COPY konabot ./ CMD [ "python", "bot.py" ] diff --git a/konabot/plugins/memepack/assets/HarmonyOS_Sans_SC_Black.ttf b/assets/fonts/HarmonyOS_Sans_SC_Black.ttf similarity index 100% rename from konabot/plugins/memepack/assets/HarmonyOS_Sans_SC_Black.ttf rename to assets/fonts/HarmonyOS_Sans_SC_Black.ttf diff --git a/konabot/plugins/memepack/assets/HarmonyOS_Sans_SC_Regular.ttf b/assets/fonts/HarmonyOS_Sans_SC_Regular.ttf similarity index 100% rename from konabot/plugins/memepack/assets/HarmonyOS_Sans_SC_Regular.ttf rename to assets/fonts/HarmonyOS_Sans_SC_Regular.ttf diff --git a/konabot/plugins/memepack/assets/NotoColorEmoji-Regular.ttf b/assets/fonts/NotoColorEmoji-Regular.ttf similarity index 100% rename from konabot/plugins/memepack/assets/NotoColorEmoji-Regular.ttf rename to assets/fonts/NotoColorEmoji-Regular.ttf diff --git a/konabot/plugins/roll_dice/assets/montserrat.otf b/assets/fonts/montserrat.otf similarity index 100% rename from konabot/plugins/roll_dice/assets/montserrat.otf rename to assets/fonts/montserrat.otf diff --git a/konabot/plugins/roll_dice/assets/1.png b/assets/img/dice/1.png similarity index 100% rename from konabot/plugins/roll_dice/assets/1.png rename to assets/img/dice/1.png diff --git a/konabot/plugins/roll_dice/assets/10.png b/assets/img/dice/10.png similarity index 100% rename from konabot/plugins/roll_dice/assets/10.png rename to assets/img/dice/10.png diff --git a/konabot/plugins/roll_dice/assets/11.png b/assets/img/dice/11.png similarity index 100% rename from konabot/plugins/roll_dice/assets/11.png rename to assets/img/dice/11.png diff --git a/konabot/plugins/roll_dice/assets/12.png b/assets/img/dice/12.png similarity index 100% rename from konabot/plugins/roll_dice/assets/12.png rename to assets/img/dice/12.png diff --git a/konabot/plugins/roll_dice/assets/2.png b/assets/img/dice/2.png similarity index 100% rename from konabot/plugins/roll_dice/assets/2.png rename to assets/img/dice/2.png diff --git a/konabot/plugins/roll_dice/assets/3.png b/assets/img/dice/3.png similarity index 100% rename from konabot/plugins/roll_dice/assets/3.png rename to assets/img/dice/3.png diff --git a/konabot/plugins/roll_dice/assets/4.png b/assets/img/dice/4.png similarity index 100% rename from konabot/plugins/roll_dice/assets/4.png rename to assets/img/dice/4.png diff --git a/konabot/plugins/roll_dice/assets/5.png b/assets/img/dice/5.png similarity index 100% rename from konabot/plugins/roll_dice/assets/5.png rename to assets/img/dice/5.png diff --git a/konabot/plugins/roll_dice/assets/6.png b/assets/img/dice/6.png similarity index 100% rename from konabot/plugins/roll_dice/assets/6.png rename to assets/img/dice/6.png diff --git a/konabot/plugins/roll_dice/assets/7.png b/assets/img/dice/7.png similarity index 100% rename from konabot/plugins/roll_dice/assets/7.png rename to assets/img/dice/7.png diff --git a/konabot/plugins/roll_dice/assets/8.png b/assets/img/dice/8.png similarity index 100% rename from konabot/plugins/roll_dice/assets/8.png rename to assets/img/dice/8.png diff --git a/konabot/plugins/roll_dice/assets/9.png b/assets/img/dice/9.png similarity index 100% rename from konabot/plugins/roll_dice/assets/9.png rename to assets/img/dice/9.png diff --git a/konabot/plugins/roll_dice/assets/template.png b/assets/img/dice/template.png similarity index 100% rename from konabot/plugins/roll_dice/assets/template.png rename to assets/img/dice/template.png diff --git a/konabot/plugins/memepack/assets/geimao.jpg b/assets/img/meme/geimao.jpg similarity index 100% rename from konabot/plugins/memepack/assets/geimao.jpg rename to assets/img/meme/geimao.jpg diff --git a/konabot/plugins/memepack/assets/ptsay.png b/assets/img/meme/ptsay.png similarity index 100% rename from konabot/plugins/memepack/assets/ptsay.png rename to assets/img/meme/ptsay.png diff --git a/konabot/common/path.py b/konabot/common/path.py new file mode 100644 index 0000000..0795b0a --- /dev/null +++ b/konabot/common/path.py @@ -0,0 +1,4 @@ +from pathlib import Path + +ASSETS_PATH = Path(__file__).resolve().parent.parent.parent / "assets" +FONTS_PATH = ASSETS_PATH / "fonts" diff --git a/konabot/plugins/memepack/drawing/base/fonts.py b/konabot/plugins/memepack/drawing/base/fonts.py index 586411d..538dc6b 100644 --- a/konabot/plugins/memepack/drawing/base/fonts.py +++ b/konabot/plugins/memepack/drawing/base/fonts.py @@ -1,8 +1,8 @@ from imagetext_py import EmojiOptions, FontDB -from .path import ASSETS +from konabot.common.path import FONTS_PATH -FontDB.LoadFromDir(str(ASSETS)) +FontDB.LoadFromDir(str(FONTS_PATH)) FontDB.SetDefaultEmojiOptions(EmojiOptions( parse_shortcodes=False, diff --git a/konabot/plugins/memepack/drawing/base/path.py b/konabot/plugins/memepack/drawing/base/path.py deleted file mode 100644 index 004cdc7..0000000 --- a/konabot/plugins/memepack/drawing/base/path.py +++ /dev/null @@ -1,3 +0,0 @@ -from pathlib import Path - -ASSETS = Path(__file__).parent.parent.parent / "assets" diff --git a/konabot/plugins/memepack/drawing/geimao.py b/konabot/plugins/memepack/drawing/geimao.py index a66d22b..41c576f 100644 --- a/konabot/plugins/memepack/drawing/geimao.py +++ b/konabot/plugins/memepack/drawing/geimao.py @@ -4,10 +4,11 @@ from typing import Any, cast import imagetext_py import PIL.Image -from .base.fonts import HARMONYOS_SANS_SC_BLACK -from .base.path import ASSETS +from konabot.common.path import ASSETS_PATH -geimao_image = PIL.Image.open(ASSETS / "geimao.jpg").convert("RGBA") +from .base.fonts import HARMONYOS_SANS_SC_BLACK + +geimao_image = PIL.Image.open(ASSETS_PATH / "img" / "meme" / "geimao.jpg").convert("RGBA") def _draw_geimao(saying: str): diff --git a/konabot/plugins/memepack/drawing/pt.py b/konabot/plugins/memepack/drawing/pt.py index fe4795f..3324865 100644 --- a/konabot/plugins/memepack/drawing/pt.py +++ b/konabot/plugins/memepack/drawing/pt.py @@ -3,10 +3,11 @@ import asyncio import imagetext_py import PIL.Image -from .base.fonts import HARMONYOS_SANS_SC_REGULAR -from .base.path import ASSETS +from konabot.common.path import ASSETS_PATH -pt_image = PIL.Image.open(ASSETS / "ptsay.png").convert("RGBA") +from .base.fonts import HARMONYOS_SANS_SC_REGULAR + +pt_image = PIL.Image.open(ASSETS_PATH / "img" / "meme" / "ptsay.png").convert("RGBA") def _draw_pt(saying: str): diff --git a/konabot/plugins/roll_dice/roll_dice.py b/konabot/plugins/roll_dice/roll_dice.py index c0014d6..707232a 100644 --- a/konabot/plugins/roll_dice/roll_dice.py +++ b/konabot/plugins/roll_dice/roll_dice.py @@ -1,9 +1,11 @@ from io import BytesIO + import cv2 import numpy as np from PIL import Image, ImageDraw, ImageFont -from konabot.plugins.roll_dice.base.path import ASSETS +from konabot.common.path import ASSETS_PATH, FONTS_PATH + def text_to_transparent_image(text, font_size=40, padding=0, text_color=(0, 0, 0)): """ @@ -13,15 +15,7 @@ def text_to_transparent_image(text, font_size=40, padding=0, text_color=(0, 0, 0 temp_image = Image.new('RGB', (1, 1), (255, 255, 255)) temp_draw = ImageDraw.Draw(temp_image) - font = ImageFont.truetype(ASSETS / "montserrat.otf", font_size) - # try: - # font = ImageFont.truetype(ASSETS / "montserrat.otf", font_size) - # except: - # try: - # font = ImageFont.truetype("arial.ttf", font_size) - # except: - # # 如果系统字体不可用,使用默认字体 - # font = ImageFont.load_default() + font = ImageFont.truetype(FONTS_PATH / "montserrat.otf", font_size) # 获取文本边界框 bbox = temp_draw.textbbox((0, 0), text, font=font) @@ -177,7 +171,7 @@ async def generate_dice_image(number: int) -> BytesIO: ], dtype=np.float32) # 加载背景图像,保留透明通道 - background = cv2.imread(str(ASSETS / "template.png"), cv2.IMREAD_UNCHANGED) + background = cv2.imread(str(ASSETS_PATH / "img" / "dice" / "template.png"), cv2.IMREAD_UNCHANGED) # 对文本图像进行3D变换(保持透明通道) @@ -189,7 +183,7 @@ async def generate_dice_image(number: int) -> BytesIO: pil_final = Image.fromarray(final_image_simple) # 导入一系列图像 - images: list[Image.Image] = [Image.open(ASSETS / f"{i}.png") for i in range(1, 12)] + images: list[Image.Image] = [Image.open(ASSETS_PATH / "img" / "dice" / f"{i}.png") for i in range(1, 12)] images.append(pil_final) frame_durations = [100] * (len(images) - 1) + [100000] # 保存为BytesIO对象 diff --git a/test_plugin_load.py b/scripts/test_plugin_load.py similarity index 74% rename from test_plugin_load.py rename to scripts/test_plugin_load.py index 175de77..a5bd7db 100644 --- a/test_plugin_load.py +++ b/scripts/test_plugin_load.py @@ -8,7 +8,9 @@ nonebot.load_plugins("konabot/plugins") plugins = nonebot.get_loaded_plugins() len_requires = len( - [f for f in Path("konabot/plugins").iterdir() if f.is_dir() and (f / "__init__.py").exists()] + [f for f in ( + Path(__file__).parent.parent / "konabot" / "plugins" + ).iterdir() if f.is_dir() and (f / "__init__.py").exists()] ) plugins = [p for p in plugins if p.module.__name__.startswith("konabot.plugins")]