词条正则回答中允许使用$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

View File

@ -331,6 +331,10 @@ PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可能
## 更新
### 2023/4/5
* 词条正则回答中允许使用$1.$2..来获取()捕获组
### 2023/4/3
* 修复帮助命令`-super`无效

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

View File

@ -35,6 +35,7 @@ usage
问题回答支持的CQat, face, image
查看词条命令群聊时为 群词条+全局词条私聊时为 私聊词条+全局词条
添加词条正则添加词条(模糊|正则|图片)?\s*?(\S*\s?\S*)\s*?\s?(\S*)
正则问可以通过$1类推()捕获的组
指令
添加词条 ?[模糊|正则|图片]......添加问答词条可重复添加相同问题的不同回答
删除词条 [问题/下标] ?[下标]删除指定词条指定或全部回答
@ -44,6 +45,7 @@ usage
[图片]...
示例添加词条@萝莉 我来啦
示例添加词条问谁是萝莉答是我
示例添加词条正则问那个(.+)是萝莉答没错$1是萝莉
示例删除词条 谁是萝莉
示例删除词条 谁是萝莉 0
示例删除词条 id:0 1