zhenxun_bot/plugins/word_bank/message_handle.py

57 lines
1.9 KiB
Python
Raw Normal View History

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
2022-04-03 20:05:18 +08:00
from models.group_member_info import GroupInfoUser
2021-11-23 21:44:59 +08:00
__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)
2022-04-03 20:05:18 +08:00
message_handle = on_message(priority=6, 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-12-01 14:03:34 +08:00
q = await WordBank.check(
event.group_id, get_message_text(event.json()), event.is_tome()
)
2022-04-03 20:05:18 +08:00
await message_handle.send(await get_one_answer(event, q.format, q.answer))
# 处理单条回答
async def get_one_answer(event, format, _answer, all=1):
path = data_dir / f"{event.group_id}"
2021-12-01 14:03:34 +08:00
placeholder_list = (
[
(x.split("<_s>")[0], x.split("<_s>")[1])
2022-04-03 20:05:18 +08:00
for x in format.split("<format>")[:-1]
2021-12-01 14:03:34 +08:00
]
2022-04-03 20:05:18 +08:00
if format
2021-12-01 14:03:34 +08:00
else []
)
2021-11-23 21:44:59 +08:00
answer = ""
2022-04-03 20:05:18 +08:00
_a = _answer
2021-11-23 21:44:59 +08:00
if not placeholder_list:
answer = _a
2022-04-03 20:05:18 +08:00
return answer
2021-11-23 21:44:59 +08:00
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:
2022-04-03 20:05:18 +08:00
if all == 1:
answer += _a[: _a.find(f"[__placeholder_{idx}]")] + at(placeholder)
else:
q = await GroupInfoUser.get_member_info(
int(placeholder), event.group_id)
answer += _a[: _a.find(f"[__placeholder_{idx}]")] + "@" + q.user_name
_a = _a[_a.find(f"[__placeholder_{idx}]") + len(f"[__placeholder_{idx}]"):]
return answer + _a