添加给猫
This commit is contained in:
19
konabot/plugins/memepack/__init__.py
Normal file
19
konabot/plugins/memepack/__init__.py
Normal file
@ -0,0 +1,19 @@
|
||||
from io import BytesIO
|
||||
from nonebot_plugin_alconna import Alconna, Args, Field, MultiVar, UniMessage, on_alconna
|
||||
|
||||
from konabot.plugins.memepack.drawing.geimao import draw_geimao
|
||||
|
||||
geimao = on_alconna(Alconna(
|
||||
"给猫说",
|
||||
Args["saying", MultiVar(str, '+'), Field(
|
||||
missing_tips=lambda: "你没有写给猫说了什么"
|
||||
)]
|
||||
), use_cmd_start=True, use_cmd_sep=False, skip_for_unmatch=False)
|
||||
|
||||
@geimao.handle()
|
||||
async def _(saying: list[str]):
|
||||
img = await draw_geimao("\n".join(saying))
|
||||
img_bytes = BytesIO()
|
||||
img.save(img_bytes, format="PNG")
|
||||
|
||||
await geimao.send(await UniMessage().image(raw=img_bytes).export())
|
||||
BIN
konabot/plugins/memepack/assets/HarmonyOS_Sans_SC_Black.ttf
Normal file
BIN
konabot/plugins/memepack/assets/HarmonyOS_Sans_SC_Black.ttf
Normal file
Binary file not shown.
BIN
konabot/plugins/memepack/assets/geimao.jpg
Normal file
BIN
konabot/plugins/memepack/assets/geimao.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 219 KiB |
0
konabot/plugins/memepack/drawing/__init__.py
Normal file
0
konabot/plugins/memepack/drawing/__init__.py
Normal file
0
konabot/plugins/memepack/drawing/base/__init__.py
Normal file
0
konabot/plugins/memepack/drawing/base/__init__.py
Normal file
6
konabot/plugins/memepack/drawing/base/fonts.py
Normal file
6
konabot/plugins/memepack/drawing/base/fonts.py
Normal file
@ -0,0 +1,6 @@
|
||||
from imagetext_py import FontDB
|
||||
|
||||
from .path import assets
|
||||
|
||||
FontDB.LoadFromDir(str(assets))
|
||||
HARMONYOS_SANS_SC_BLACK = FontDB.Query("HarmonyOS_Sans_SC_Black")
|
||||
3
konabot/plugins/memepack/drawing/base/path.py
Normal file
3
konabot/plugins/memepack/drawing/base/path.py
Normal file
@ -0,0 +1,3 @@
|
||||
from pathlib import Path
|
||||
|
||||
assets = Path(__file__).parent.parent.parent / "assets"
|
||||
28
konabot/plugins/memepack/drawing/geimao.py
Normal file
28
konabot/plugins/memepack/drawing/geimao.py
Normal file
@ -0,0 +1,28 @@
|
||||
import asyncio
|
||||
from typing import Any, cast
|
||||
|
||||
import imagetext_py
|
||||
import PIL.Image
|
||||
|
||||
from .base.fonts import HARMONYOS_SANS_SC_BLACK
|
||||
from .base.path import assets
|
||||
|
||||
geimao_image = PIL.Image.open(assets / "geimao.jpg").convert("RGBA")
|
||||
|
||||
|
||||
def _draw_geimao(saying: str):
|
||||
img = geimao_image.copy()
|
||||
with imagetext_py.Writer(img) as iw:
|
||||
iw.draw_text_wrapped(
|
||||
saying, 960, 50, 00.5, 0, 1920, 240, HARMONYOS_SANS_SC_BLACK,
|
||||
imagetext_py.Paint.Color(imagetext_py.Color.from_hex("000000FF")),
|
||||
0.8,
|
||||
imagetext_py.TextAlign.Center,
|
||||
cast(Any, 30.0),
|
||||
imagetext_py.Paint.Color(imagetext_py.Color.from_hex("FFFFFFFF")),
|
||||
)
|
||||
return img
|
||||
|
||||
|
||||
async def draw_geimao(saying: str):
|
||||
return await asyncio.to_thread(_draw_geimao, saying)
|
||||
Reference in New Issue
Block a user