新增消息趋势分析
This commit is contained in:
@@ -208,3 +208,37 @@ class MessageStorageDB(BaseDBOperator):
|
||||
# 使用已有的日志记录方式
|
||||
print(f"更新消息图片路径出错: {e}")
|
||||
return False
|
||||
|
||||
|
||||
def get_hourly_message_trend(self, group_id: str = None, days: int = 1) -> List[Dict]:
|
||||
"""获取指定群组的按小时消息趋势数据
|
||||
|
||||
Args:
|
||||
group_id: 群组ID,如果为None则获取所有群组的数据
|
||||
days: 获取最近几天的数据,默认1天
|
||||
|
||||
Returns:
|
||||
包含小时和消息数量的列表
|
||||
"""
|
||||
sql = """
|
||||
SELECT
|
||||
DATE_FORMAT(timestamp, '%Y-%m-%d %H:00') as hour_slot,
|
||||
COUNT(*) as message_count
|
||||
FROM messages
|
||||
WHERE timestamp >= DATE_SUB(NOW(), INTERVAL %s DAY)
|
||||
"""
|
||||
|
||||
params = [days]
|
||||
|
||||
# 如果指定了群组ID,则添加群组筛选条件
|
||||
if group_id:
|
||||
sql += "AND group_id = %s "
|
||||
params.append(group_id)
|
||||
|
||||
# 按小时分组并排序
|
||||
sql += """
|
||||
GROUP BY hour_slot
|
||||
ORDER BY hour_slot
|
||||
"""
|
||||
|
||||
return self.execute_query(sql, tuple(params)) or []
|
||||
|
||||
Reference in New Issue
Block a user