调整总结业务。支持每天早上9点总结昨天的消息
This commit is contained in:
@@ -342,3 +342,59 @@ class MessageStorageDB(BaseDBOperator):
|
||||
|
||||
# 限制最大返回数量(5000条足以覆盖1-2天的活跃群聊)
|
||||
return messages[:max_results] if messages else []
|
||||
|
||||
def get_messages_by_date_range(self, group_id: str, start_time: datetime, end_time: datetime) -> List[Dict]:
|
||||
"""获取指定时间范围内的消息
|
||||
|
||||
Args:
|
||||
group_id: 群组ID
|
||||
start_time: 开始时间
|
||||
end_time: 结束时间
|
||||
|
||||
Returns:
|
||||
消息列表
|
||||
"""
|
||||
sql = """
|
||||
SELECT timestamp, sender, content, message_type
|
||||
FROM messages
|
||||
WHERE timestamp >= %s
|
||||
AND timestamp <= %s
|
||||
AND message_type in (1, 49)
|
||||
AND group_id = %s
|
||||
AND length(content) > 6
|
||||
AND CHAR_LENGTH(content) < 300
|
||||
AND content NOT LIKE '/%'
|
||||
ORDER BY timestamp ASC
|
||||
"""
|
||||
params = (start_time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
end_time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
group_id)
|
||||
return self.execute_query(sql, params) or []
|
||||
|
||||
def count_messages_by_date_range(self, group_id: str, start_time: datetime, end_time: datetime) -> int:
|
||||
"""统计指定时间范围内的消息数量
|
||||
|
||||
Args:
|
||||
group_id: 群组ID
|
||||
start_time: 开始时间
|
||||
end_time: 结束时间
|
||||
|
||||
Returns:
|
||||
消息数量
|
||||
"""
|
||||
sql = """
|
||||
SELECT COUNT(*) as count
|
||||
FROM messages
|
||||
WHERE timestamp >= %s
|
||||
AND timestamp <= %s
|
||||
AND message_type in (1, 49)
|
||||
AND group_id = %s
|
||||
AND length(content) > 6
|
||||
AND CHAR_LENGTH(content) < 300
|
||||
AND content NOT LIKE '/%'
|
||||
"""
|
||||
params = (start_time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
end_time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
group_id)
|
||||
result = self.execute_query(sql, params)
|
||||
return result[0]['count'] if result else 0
|
||||
|
||||
Reference in New Issue
Block a user