From 6eebb8229feb2ec9f1fc6c750bc12307ef3ad681 Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Wed, 5 Apr 2023 15:51:28 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=8D=E6=9D=A1=E6=AD=A3=E5=88=99=E5=9B=9E?= =?UTF-8?q?=E7=AD=94=E4=B8=AD=E5=85=81=E8=AE=B8=E4=BD=BF=E7=94=A8$1.$2..?= =?UTF-8?q?=E6=9D=A5=E8=8E=B7=E5=8F=96()=E6=8D=95=E8=8E=B7=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++++ plugins/word_bank/_model.py | 25 ++++++++++++++++++------- plugins/word_bank/word_handle.py | 2 ++ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 52c3f45a..2f060fdb 100644 --- a/README.md +++ b/README.md @@ -331,6 +331,10 @@ PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可能 ## 更新 +### 2023/4/5 + +* 词条正则回答中允许使用$1.$2..来获取()捕获组 + ### 2023/4/3 * 修复帮助命令`-super`无效 diff --git a/plugins/word_bank/_model.py b/plugins/word_bank/_model.py index f1f8e0f7..2bb1257c 100644 --- a/plugins/word_bank/_model.py +++ b/plugins/word_bank/_model.py @@ -210,15 +210,15 @@ class WordBank(Model): :param user_id: 用户id :param group_id: 群号 """ - if query: - answer = query.answer - else: + if not query: query = await cls.get_or_none( problem=problem, user_qq=user_id, group_id=group_id, answer=answer, ) + if not answer: + answer = query.answer # type: ignore if query and query.placeholder: type_list = re.findall(rf"\[(.*?):placeholder_.*?]", str(answer)) temp_answer = re.sub(rf"\[(.*?):placeholder_.*?]", "{}", str(answer)) @@ -299,13 +299,24 @@ class WordBank(Model): """ data_list = await cls.check_problem(event, problem, word_scope, word_type) if data_list: - answer = random.choice(data_list) + random_answer = random.choice(data_list) + temp_answer = random_answer.answer + if random_answer.word_type == 2: + r = re.search(random_answer.problem, problem) + has_placeholder = re.search(rf"\$(\d)", random_answer.answer) + if r and r.groups() and has_placeholder: + pats = re.sub(r"\$(\d)", r"\\\1", random_answer.answer) + random_answer.answer = re.sub(random_answer.problem, pats, problem) return ( await cls._format2answer( - answer.problem, answer.answer, answer.user_qq, answer.group_id + random_answer.problem, + random_answer.answer, + random_answer.user_qq, + random_answer.group_id, + random_answer, ) - if answer.placeholder - else answer.answer + if random_answer.placeholder + else random_answer.answer ) @classmethod diff --git a/plugins/word_bank/word_handle.py b/plugins/word_bank/word_handle.py index b0f6d6c1..bdf221d8 100644 --- a/plugins/word_bank/word_handle.py +++ b/plugins/word_bank/word_handle.py @@ -35,6 +35,7 @@ usage: 问题回答支持的CQ:at, face, image 查看词条命令:群聊时为 群词条+全局词条,私聊时为 私聊词条+全局词条 添加词条正则:添加词条(模糊|正则|图片)?问\s*?(\S*\s?\S*)\s*?答\s?(\S*) + 正则问可以通过$1类推()捕获的组 指令: 添加词条 ?[模糊|正则|图片]问...答...:添加问答词条,可重复添加相同问题的不同回答 删除词条 [问题/下标] ?[下标]:删除指定词条指定或全部回答 @@ -44,6 +45,7 @@ usage: [图片]... 示例:添加词条@萝莉 我来啦 示例:添加词条问谁是萝莉答是我 + 示例:添加词条正则问那个(.+)是萝莉答没错$1是萝莉 示例:删除词条 谁是萝莉 示例:删除词条 谁是萝莉 0 示例:删除词条 id:0 1