fix: 修复了 chat 插件中不能正确识别at的错误, 并添加了对linuxqq的支持

This commit is contained in:
zrzluck99
2025-05-27 22:10:37 +08:00
parent 8d2e649527
commit 43be52a2b3

View File

@@ -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_at = True
is_mentioned = True is_mentioned = True
@@ -74,13 +78,17 @@ def is_mentioned_bot_in_message(message: MessageRecv) -> tuple[bool, float]:
if not is_mentioned: if not is_mentioned:
# 判断是否被回复 # 判断是否被回复
if re.match( 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 is_mentioned = True
else: else:
# 判断内容中是否被提及 # 判断内容中是否被提及
message_content = re.sub(r"@[\s\S]*?(\d+)", "", message.processed_plain_text) message_content = re.sub(r"@(.+?)(\d+)", "", message.processed_plain_text)
message_content = re.sub(r"\[回复 [\s\S]*?\(((\d+)|未知id)\)[\s\S]*?],说:", "", message_content) 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: for keyword in keywords:
if keyword in message_content: if keyword in message_content:
is_mentioned = True is_mentioned = True