2021-11-23 21:44:59 +08:00
|
|
|
from utils.message_builder import image, at
|
2022-02-19 18:20:19 +08:00
|
|
|
from ._rule import check
|
2021-11-23 21:44:59 +08:00
|
|
|
from .model import WordBank
|
|
|
|
|
from configs.path_config import DATA_PATH
|
2022-02-19 18:20:19 +08:00
|
|
|
from nonebot.adapters.onebot.v11 import GroupMessageEvent
|
|
|
|
|
from utils.utils import get_message_text
|
2021-11-23 21:44:59 +08:00
|
|
|
from nonebot import on_message
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
__zx_plugin_name__ = "词库问答回复操作 [Hidden]"
|
|
|
|
|
|
|
|
|
|
|
2022-02-19 18:20:19 +08:00
|
|
|
data_dir = DATA_PATH / "word_bank"
|
2021-11-23 21:44:59 +08:00
|
|
|
data_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
|
|
|
|
|
|
|
2021-12-01 14:03:34 +08:00
|
|
|
message_handle = on_message(priority=5, block=True, rule=check)
|
2021-11-23 21:44:59 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@message_handle.handle()
|
2022-02-19 18:20:19 +08:00
|
|
|
async def _(event: GroupMessageEvent):
|
2021-11-23 21:44:59 +08:00
|
|
|
path = data_dir / f"{event.group_id}"
|
2021-12-01 14:03:34 +08:00
|
|
|
q = await WordBank.check(
|
|
|
|
|
event.group_id, get_message_text(event.json()), event.is_tome()
|
|
|
|
|
)
|
|
|
|
|
placeholder_list = (
|
|
|
|
|
[
|
|
|
|
|
(x.split("<_s>")[0], x.split("<_s>")[1])
|
|
|
|
|
for x in q.format.split("<format>")[:-1]
|
|
|
|
|
]
|
|
|
|
|
if q.format
|
|
|
|
|
else []
|
|
|
|
|
)
|
2021-11-23 21:44:59 +08:00
|
|
|
answer = ""
|
|
|
|
|
_a = q.answer
|
|
|
|
|
if not placeholder_list:
|
|
|
|
|
answer = _a
|
|
|
|
|
else:
|
|
|
|
|
for idx, placeholder in placeholder_list:
|
|
|
|
|
if placeholder.endswith("jpg"):
|
2021-12-01 14:03:34 +08:00
|
|
|
answer += _a[: _a.find(f"[__placeholder_{idx}]")] + image(
|
|
|
|
|
path / placeholder
|
|
|
|
|
)
|
2021-11-23 21:44:59 +08:00
|
|
|
else:
|
2021-12-01 14:03:34 +08:00
|
|
|
answer += _a[: _a.find(f"[__placeholder_{idx}]")] + at(placeholder)
|
|
|
|
|
_a = _a[_a.find(f"[__placeholder_{idx}]") + len(f"[__placeholder_{idx}]") :]
|
2021-11-23 21:44:59 +08:00
|
|
|
await message_handle.send(answer)
|