微信群有没有办法统计某人每天发言次数、活跃度等好玩的数据的办法?

2024-11-19 阅读 159
更新于 2024年11月21日
这个很有意思啊!
通过微信机器人( itchat )获取聊天记录并统计数据,可以监听群聊消息,实时统计用户发言。
pip install itchat
统计微信群成员发言次数自动登录微信(使用二维码)。监听群聊消息,记录每个成员的发言次数。按天统计成员发言次数并输出到控制台。import itchat
from collections import defaultdict
from datetime import datetime
# 存储发言记录,格式为:{群名: {日期: {成员名: 发言次数}}}
group_chat_data = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
@itchat.msg_register(itchat.content.TEXT, isGroupChat=True)
def log_group_message(msg):
# 获取消息信息
group_name = msg['User']['NickName'] # 群名称
sender_name = msg['ActualNickName'] # 发消息的成员昵称
date = datetime.now().strftime('%Y-%m-%d') # 当前日期
# 更新统计数据
group_chat_data[group_name][date][sender_name] += 1
# 输出实时统计信息
print(f"[{date}] {group_name} - {sender_name} 发言次数: {group_chat_data[group_name][date][sender_name]}")
# 登录微信
itchat.auto_login(hotReload=True)
print("微信机器人已启动,监听群聊中...")
itchat.run()
导出到 CSV:
import csv
def save_to_csv():
for group_name, group_data in group_chat_data.items():
filename = f"{group_name}_chat_data.csv"
with open(filename, mode='w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerow(["日期", "成员", "发言次数"])
for date, members in group_data.items():
for member, count in members.items():
writer.writerow([date, member, count])
print(f"数据已导出到 {filename}")
# 程序结束时导出数据
try:
itchat.run()
except KeyboardInterrupt:
print("\n正在导出数据...")
save_to_csv()
print("导出完成,程序退出。")