From f0a5cfe092c438757b24478d344b89859b7b1124 Mon Sep 17 00:00:00 2001 From: liuwei Date: Wed, 5 Feb 2025 14:02:00 +0800 Subject: [PATCH] =?UTF-8?q?key=20=E8=AE=BE=E7=BD=AE48=E5=B0=8F=E6=97=B6?= =?UTF-8?q?=E6=97=B6=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- message_report/process_message.py | 3 +++ message_report/write_db.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/message_report/process_message.py b/message_report/process_message.py index 4c73779..29c0803 100644 --- a/message_report/process_message.py +++ b/message_report/process_message.py @@ -13,8 +13,11 @@ def process_message(message:WxMsg): current_date = datetime.now().strftime('%Y-%m-%d') # 生成Redis key key = f"{message.roomid}:{message.sender}:{current_date}:count" + # 使用Redis哈希(或字符串)增加发言次数 r.hincrby(key, 'count', 1) # 这里使用哈希,但也可以考虑用字符串的INCR操作 + # 设置时效为48小时 + r.expire(key,86400*2) # 或者使用字符串:r.incr(key) # 如果只存储一个整数值,字符串类型可能更简单 diff --git a/message_report/write_db.py b/message_report/write_db.py index db23e0a..aaaf862 100644 --- a/message_report/write_db.py +++ b/message_report/write_db.py @@ -43,6 +43,7 @@ def generate_and_send_ranking(groupId,allContacts: dict): conn = sqlite3.connect('message_stats.db') cursor = conn.cursor() + yesterday = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d') # 编写SQL查询来获取发言数量前20的用户 query = """ SELECT group_id,wx_id, COUNT(*) AS speech_count @@ -59,7 +60,7 @@ def generate_and_send_ranking(groupId,allContacts: dict): results = cursor.fetchall() # 格式化输出字符串 - ranking_str = "发言数量前20的用户排名:\n" + ranking_str = yesterday + "发言数量前20的用户排名:\n" for rank, (username, speech_count) in enumerate(results, start=1): ranking_str += f"{rank}. {allContacts[username]}: {speech_count} 次发言\n"