Commit 2a7ef6a

benny-dou <60535774+benny-dou@users.noreply.github.com>
2025-01-23 03:36:16
fix(asr): fix asr matching logic
1 parent 52124c5
Changed files (1)
src/asr/voice_recognition.py
@@ -185,6 +185,9 @@ def get_trigger_message(
     """
     if not ENABLE.ASR:
         return None
+
+    this_text = message.text or message.caption or ""  # this message
+
     if message.chat.type.name in ["GROUP", "SUPERGROUP", "CHANNEL", "BOT"]:
         asr_need_prefix = asr_need_prefix or True
         asr_skip_voice = asr_skip_voice or False
@@ -193,20 +196,27 @@ def get_trigger_message(
     else:  # private chat
         asr_need_prefix = asr_need_prefix or False
         asr_skip_voice = asr_skip_voice or False
-        asr_skip_audio = asr_skip_audio or False
-        asr_skip_video = asr_skip_video or False
+        asr_skip_audio = asr_skip_audio or True
+        asr_skip_video = asr_skip_video or True
 
-    # only trigger if msg has "/asr" prefix
-    if asr_need_prefix and not startswith_prefix(message.text, prefix=[PREFIX.ASR]):
+    # skip no "/asr" prefix message if asr_need_prefix
+    if asr_need_prefix and not startswith_prefix(this_text, prefix=[PREFIX.ASR]):
         return None
 
     # treat the reply_to_message as the real message need to be recognized
-    trigger_msg = message.reply_to_message if asr_need_prefix or startswith_prefix(message.text, prefix=[PREFIX.ASR]) else message
+    trigger_msg = message.reply_to_message if startswith_prefix(this_text, prefix=[PREFIX.ASR]) else message
 
+    # skip non voice/audio/video message
     if not trigger_msg:
         return None
     if not trigger_msg.media or trigger_msg.media.name not in ["VOICE", "AUDIO", "VIDEO"]:
         return None
+
+    # always trigger if the message has "/asr" prefix
+    if startswith_prefix(this_text, prefix=[PREFIX.ASR]):
+        return trigger_msg
+
+    # match the asr_skip_* settings
     if asr_skip_voice and trigger_msg.media.name == "VOICE":
         return None
     if asr_skip_audio and trigger_msg.media.name == "AUDIO":