'commit'
This commit is contained in:
@@ -94,7 +94,8 @@ class ChatMonitorBot:
|
||||
"4. 仅针对家长明确表达的内容进行回复。\n"
|
||||
"5. 严禁使用列表格式。严禁使用‘首先、其次’等逻辑词。\n"
|
||||
"6. 普通咨询回复字数严格控制在 50 字以内,专业作文评价回复控制在 150 字以内!\n"
|
||||
"7. 对方问什么就答什么。例如问‘学校叫什么’,就只回答‘少惠林’,不要回复地址和电话!\n"
|
||||
"7. 说话要有人情味,不要回答得太生硬或太简短。例如当家长问‘学校叫什么名字’时,不要只说‘少惠林’,而应该说‘我们的学校名字叫少惠林。’或者‘咱们这儿叫少惠林。’,这样才显得亲切、有礼貌。\n"
|
||||
"8. 对方问什么就答什么。回答要完整、体面,但不要过度发散地址和电话(除非被问到)。\n"
|
||||
"如果涉及到校区信息,必须且只能使用以下真实数据:\n"
|
||||
"- 单位/学校名称:长春市少惠林作文素养培养中心(简称:少惠林)\n"
|
||||
"- 地址:南环城路与临河街交汇,TOUCH12街3楼325号\n"
|
||||
@@ -265,15 +266,34 @@ class ChatMonitorBot:
|
||||
self.dialogue_log = dialogue_log
|
||||
self.input_pos = input_pos
|
||||
|
||||
# D. 提取最新消息并检查是否需要回复
|
||||
# 过滤出对方发送的消息
|
||||
other_msgs = [m for m in dialogue_log if m.get('sender') != "我"]
|
||||
# [Fix] 核心逻辑增强:只有当屏幕上最后一条聊天消息是"对方"时,才触发回复逻辑
|
||||
# 这样可以彻底避免在自己回复后,因为 OCR 延迟或哈希误判导致的连续回复
|
||||
chat_msgs = [m for m in dialogue_log if m.get('type') in ['text', 'voice']]
|
||||
if not chat_msgs:
|
||||
await asyncio.sleep(self.check_interval)
|
||||
continue
|
||||
|
||||
absolute_last_msg = chat_msgs[-1]
|
||||
if absolute_last_msg.get('sender') == "我":
|
||||
# logger.info("最后一条消息是我发送的,无需回复")
|
||||
await asyncio.sleep(self.check_interval)
|
||||
continue
|
||||
|
||||
# 提取最新消息并检查是否需要回复
|
||||
# 过滤出对方发送的消息 (用于提取内容)
|
||||
other_msgs = [m for m in dialogue_log if m.get('sender') != "我" and m.get('type') in ['text', 'voice']]
|
||||
if not other_msgs:
|
||||
logger.info("当前没有对方发送的消息")
|
||||
await asyncio.sleep(self.check_interval)
|
||||
continue
|
||||
|
||||
last_msg = other_msgs[-1]
|
||||
|
||||
# 如果最后一条对方消息不是屏幕上的绝对最后一条,说明中间隔了我自己的消息,也跳过
|
||||
if last_msg != absolute_last_msg:
|
||||
logger.info("最后一条对方消息之后有我的消息,跳过")
|
||||
await asyncio.sleep(self.check_interval)
|
||||
continue
|
||||
current_msg_hash = self.get_stable_message_hash(last_msg)
|
||||
|
||||
# 检查该消息是否已经处理过 (通过内容哈希)
|
||||
|
||||
Reference in New Issue
Block a user