From 3a6426d7da1f9582a3b1088211192e8755b3037c Mon Sep 17 00:00:00 2001 From: grassblock Date: Tue, 5 Aug 2025 21:30:26 +0800 Subject: [PATCH] fix: unexpected actions and self-reply --- core/actions.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/actions.py b/core/actions.py index b188fb0..e4d5222 100644 --- a/core/actions.py +++ b/core/actions.py @@ -10,6 +10,10 @@ async def handle_actions(message: Message) -> None: return rawtext = message.text logging.debug(f"收到了命中 / 开头的消息: {rawtext}") + logging.debug(rawtext.replace('/','')) + # 如果消息是 / 开头的,但是没有后续有意义的内容,则不处理 + if len(rawtext.replace('/','')) == 0 or not rawtext.replace('/','').isalpha(): + return # 防止识别成命令而被误触发 import re if re.match("^[a-zA-Z]+$", rawtext.replace('/','',1)) or '@' in rawtext: @@ -21,9 +25,9 @@ async def handle_actions(message: Message) -> None: if " " in rawtext: if rawtext.split(" ")[0].replace('/','',1).isascii(): return - await message.reply(f"{from_user} {rawtext.split(" ")[0].replace('/','')}了 {replied_user if message.reply_to_message else '自己' } {''.join(rawtext.split(" ")[1:])}!",disable_web_page_preview=True) + await message.reply(f"{from_user} {rawtext.split(" ")[0].replace('/','')}了 {replied_user if message.reply_to_message and replied_user != from_user else '自己' } {''.join(rawtext.split(" ")[1:])}!",disable_web_page_preview=True) else: - await message.reply(f"{from_user} {message.text.replace('/','')}了 {replied_user if message.reply_to_message else '自己'}!",disable_web_page_preview=True) + await message.reply(f"{from_user} {message.text.replace('/','')}了 {replied_user if message.reply_to_message and replied_user != from_user else '自己'}!",disable_web_page_preview=True) async def handle_reverse_actions(message: Message) -> None: from_user = message.from_user.mention_html(message.sender_chat.title) if message.sender_chat else message.from_user.mention_html() @@ -32,4 +36,4 @@ async def handle_reverse_actions(message: Message) -> None: logging.debug(f"收到了命中 \\ 开头的的消息,但是 actions 功能未启用,跳过处理") return logging.debug(f"收到了命中 \\ 开头的消息: {message.text}") - await message.reply(f"{from_user} 被 {replied_user if message.reply_to_message else '自己'} {message.text.replace('\\','')}了!",disable_web_page_preview=True) \ No newline at end of file + await message.reply(f"{from_user} 被 {replied_user if message.reply_to_message and replied_user != from_user else '自己'} {message.text.replace('\\','')}了!",disable_web_page_preview=True) \ No newline at end of file