mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
添加正则词条前先检查正则有效性 & 正则词条先进行转义,不然符号都乱了
This commit is contained in:
parent
cf7a64c934
commit
3bb9aaf637
@ -1,3 +1,4 @@
|
|||||||
|
import re
|
||||||
from typing import Tuple, Any, Optional
|
from typing import Tuple, Any, Optional
|
||||||
|
|
||||||
from nonebot.internal.params import Arg, ArgStr
|
from nonebot.internal.params import Arg, ArgStr
|
||||||
@ -5,11 +6,12 @@ from nonebot.typing import T_State
|
|||||||
|
|
||||||
from utils.utils import get_message_at, is_number, get_message_img
|
from utils.utils import get_message_at, is_number, get_message_img
|
||||||
from nonebot.params import CommandArg, RegexGroup, Command
|
from nonebot.params import CommandArg, RegexGroup, Command
|
||||||
|
from nonebot.exception import FinishedException
|
||||||
from services.log import logger
|
from services.log import logger
|
||||||
from configs.path_config import DATA_PATH
|
from configs.path_config import DATA_PATH
|
||||||
from utils.message_builder import custom_forward_msg
|
from utils.message_builder import custom_forward_msg
|
||||||
from ._model import WordBank
|
from ._model import WordBank
|
||||||
from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, Message, MessageEvent, PrivateMessageEvent
|
from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, Message, MessageEvent, PrivateMessageEvent, unescape
|
||||||
from nonebot import on_command, on_regex
|
from nonebot import on_command, on_regex
|
||||||
from configs.config import Config
|
from configs.config import Config
|
||||||
from ._data_source import delete_word, update_word, show_word
|
from ._data_source import delete_word, update_word, show_word
|
||||||
@ -126,7 +128,7 @@ async def _(
|
|||||||
temp += f"[at:{g.data['qq']}]"
|
temp += f"[at:{g.data['qq']}]"
|
||||||
problem = temp
|
problem = temp
|
||||||
break
|
break
|
||||||
index = len((word_scope or "") + "添加词条" + (word_type or "") + problem) + 1
|
index = len((word_scope or "") + "添加词条" + (word_type or "") + unescape(problem)) + 1
|
||||||
event.message[0] = event.message[0].data["text"][index + 1 :].strip()
|
event.message[0] = event.message[0].data["text"][index + 1 :].strip()
|
||||||
state["word_scope"] = word_scope
|
state["word_scope"] = word_scope
|
||||||
state["word_type"] = word_type
|
state["word_type"] = word_type
|
||||||
@ -144,6 +146,12 @@ async def _(
|
|||||||
problem_image: Message = Arg("problem_image"),
|
problem_image: Message = Arg("problem_image"),
|
||||||
):
|
):
|
||||||
try:
|
try:
|
||||||
|
if word_type == "正则":
|
||||||
|
try:
|
||||||
|
problem = unescape(problem)
|
||||||
|
re.compile(problem)
|
||||||
|
except re.error:
|
||||||
|
await add_word.finish(f"添加词条失败,正则表达式 {problem} 非法!")
|
||||||
await WordBank.add_problem_answer(
|
await WordBank.add_problem_answer(
|
||||||
event.user_id,
|
event.user_id,
|
||||||
event.group_id if isinstance(event, GroupMessageEvent) and (not word_scope or word_scope == '1') else 0,
|
event.group_id if isinstance(event, GroupMessageEvent) and (not word_scope or word_scope == '1') else 0,
|
||||||
@ -153,6 +161,8 @@ async def _(
|
|||||||
answer,
|
answer,
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
if isinstance(e, FinishedException):
|
||||||
|
await add_word.finish()
|
||||||
logger.error(
|
logger.error(
|
||||||
f"(USER {event.user_id}, GROUP "
|
f"(USER {event.user_id}, GROUP "
|
||||||
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
|
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user