词条正则回答中允许使用$1.$2..来获取()捕获组

This commit is contained in:
HibiKier
2023-04-05 15:51:28 +08:00
parent 47531f5790
commit 6eebb8229f
3 changed files with 24 additions and 7 deletions
+4
View File
@@ -331,6 +331,10 @@ PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可能
## 更新
### 2023/4/5
* 词条正则回答中允许使用$1.$2..来获取()捕获组
### 2023/4/3
* 修复帮助命令`-super`无效
+18 -7
View File
@@ -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
+2
View File
@@ -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