Skip to content

Commit 9840cfb

Browse files
committed
fix: Improve bot mention detection and add error logging in dispatch rules
1 parent 5dbd3fb commit 9840cfb

File tree

3 files changed

+6
-2
lines changed

3 files changed

+6
-2
lines changed

framework/im/sender.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ def __str__(self) -> str:
6464

6565
def __eq__(self, other: Any) -> bool:
6666
if isinstance(other, ChatSender):
67+
print(self.user_id, other.user_id)
6768
return self.user_id == other.user_id and \
6869
self.chat_type == other.chat_type and \
6970
self.group_id == other.group_id

framework/workflow/core/dispatch/models/dispatch_rules.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44

55
from framework.im.message import IMMessage
66
from framework.ioc.container import DependencyContainer
7+
from framework.logger import get_logger
78
from framework.workflow.core.workflow import Workflow
89
from framework.workflow.core.workflow.registry import WorkflowRegistry
910

11+
logger = get_logger("DispatchRule")
1012

1113
class SimpleDispatchRule(BaseModel):
1214
"""简单规则,包含规则类型和配置"""
@@ -56,6 +58,7 @@ def match(self, message: IMMessage, workflow_registry: WorkflowRegistry) -> bool
5658
rule_results.append(rule_instance.match(message))
5759
except Exception as e:
5860
# 如果规则创建或匹配过程出错,视为不匹配
61+
logger.error(f"Rule {rule.type} from config {rule.config} creation or matching failed: {e}")
5962
continue
6063

6164
# 根据操作符确定组的匹配结果

framework/workflow/core/dispatch/rules/message_rules.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from pydantic import Field
55

6-
from framework.im.message import IMMessage
6+
from framework.im.message import IMMessage, MentionElement
77
from framework.im.sender import ChatSender
88
from framework.workflow.core.workflow.registry import WorkflowRegistry
99

@@ -90,7 +90,7 @@ def __init__(self, workflow_registry: WorkflowRegistry, workflow_id: str):
9090

9191
def match(self, message: IMMessage) -> bool:
9292
bot_sender = ChatSender.get_bot_sender()
93-
return any(element.type == "mention" and element.target == bot_sender for element in message.message_elements)
93+
return any(isinstance(element, MentionElement) and element.target == bot_sender for element in message.message_elements)
9494

9595
def get_config(self) -> RuleConfig:
9696
return RuleConfig()

0 commit comments

Comments
 (0)