From 43be52a2b38cc7b88a3074fdfdc49661e35979ba Mon Sep 17 00:00:00 2001 From: zrzluck99 Date: Tue, 27 May 2025 22:10:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BA=86=20chat=20?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E4=B8=AD=E4=B8=8D=E8=83=BD=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E8=AF=86=E5=88=ABat=E7=9A=84=E9=94=99=E8=AF=AF,=20=E5=B9=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=AF=B9linuxqq=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat/utils/utils.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/chat/utils/utils.py b/src/chat/utils/utils.py index 19703ec40..fd59e4c24 100644 --- a/src/chat/utils/utils.py +++ b/src/chat/utils/utils.py @@ -63,7 +63,11 @@ def is_mentioned_bot_in_message(message: MessageRecv) -> tuple[bool, float]: ) # 判断是否被@ - if re.search(f"@[\s\S]*?(id:{global_config.bot.qq_account})", message.processed_plain_text): + if re.search( + rf"@(.+?)(id:{global_config.bot.qq_account})", message.processed_plain_text + ) or re.search( + rf"@<(.+?)(?=:{global_config.bot.qq_account}>)\:{global_config.bot.qq_account}>", message.processed_plain_text + ): is_at = True is_mentioned = True @@ -74,13 +78,17 @@ def is_mentioned_bot_in_message(message: MessageRecv) -> tuple[bool, float]: if not is_mentioned: # 判断是否被回复 if re.match( - f"\[回复 [\s\S]*?\({str(global_config.bot.qq_account)}\):[\s\S]*?],说:", message.processed_plain_text + rf"\[回复 (.+?)\({str(global_config.bot.qq_account)}\):(.+?)\],说:", message.processed_plain_text + ) or re.match( + rf"\[回复<(.+?)(?=:{str(global_config.bot.qq_account)}>)\:{str(global_config.bot.qq_account)}>:(.+?)\],说:", message.processed_plain_text ): is_mentioned = True else: # 判断内容中是否被提及 - message_content = re.sub(r"@[\s\S]*?((\d+))", "", message.processed_plain_text) - message_content = re.sub(r"\[回复 [\s\S]*?\(((\d+)|未知id)\):[\s\S]*?],说:", "", message_content) + message_content = re.sub(r"@(.+?)((\d+))", "", message.processed_plain_text) + message_content = re.sub(r"@<(.+?)(?=:(\d+))\:(\d+)>", "", message_content) + message_content = re.sub(r"\[回复 (.+?)\(((\d+)|未知id)\):(.+?)\],说:", "", message_content) + message_content = re.sub(r"\[回复<(.+?)(?=:(\d+))\:(\d+)>:(.+?)\],说:", "", message_content) for keyword in keywords: if keyword in message_content: is_mentioned = True