词条正则回答中允许使用$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 ### 2023/4/3
* 修复帮助命令`-super`无效 * 修复帮助命令`-super`无效
+18 -7
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
+2
View File
@@ -35,6 +35,7 @@ usage:
问题回答支持的CQ:at, face, image 问题回答支持的CQ:at, 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