词条正则回答中允许使用$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 ### 2023/4/3
* 修复帮助命令`-super`无效 * 修复帮助命令`-super`无效

View File

@ -210,15 +210,15 @@ class WordBank(Model):
:param user_id: 用户id :param user_id: 用户id
:param group_id: 群号 :param group_id: 群号
""" """
if query: if not query:
answer = query.answer
else:
query = await cls.get_or_none( query = await cls.get_or_none(
problem=problem, problem=problem,
user_qq=user_id, user_qq=user_id,
group_id=group_id, group_id=group_id,
answer=answer, answer=answer,
) )
if not answer:
answer = query.answer # type: ignore
if query and query.placeholder: if query and query.placeholder:
type_list = re.findall(rf"\[(.*?):placeholder_.*?]", str(answer)) type_list = re.findall(rf"\[(.*?):placeholder_.*?]", str(answer))
temp_answer = re.sub(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) data_list = await cls.check_problem(event, problem, word_scope, word_type)
if data_list: 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 ( return (
await cls._format2answer( 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 if random_answer.placeholder
else answer.answer else random_answer.answer
) )
@classmethod @classmethod

View File

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