数据运营python

如何实现微信群打卡排行榜,提高活跃度

2018-12-09  本文已影响5人  数据运营python

最近加入了一个早起打卡的微信群,里面有人提出如果每天早起打卡有个排行榜,他会更有动力早起。这种打卡进行排行榜的活动的方式在很多app都有,满足人们炫耀,攀比的一种方式。那在微信群里面能否实现这样的功能。下面讲一下我的实现思路。

实现思路

先介绍一下wxpy,实现的功能都是建立在这个基础上。可以用来做一些常见的场景如下:

总而言之,可用来实现各种微信个人号的自动化操作

实现的思路:

监听打卡的微信群,微信群的用户在 @ 到打卡机器人(就是你登录的微信号) 并且发送“打卡”两个字,就触发监听的逻辑,计算该用户是第几名打卡的人,并发送信息到群里“xxx,打卡成功,你是第3个打卡” 类似这样的回复。

实现代码

先安装wxpy的包

pip install -U wxpy

排行版的数据是简单的存放在一个文本里面,文件的命名按日期进行存放,每一条记录为一行,下面的方法是获取文本里面行数。

 1#获取文件的行数
 2def get_count(file_name):
 3    count = 0
 4    fp = open(file_name, "r")
 5    while 1:
 6        buffer = fp.read(8*1024*1024)
 7        if not buffer:
 8            break
 9        count += buffer.count('\n')
10    fp.close()
11    return count

排行榜的逻辑:

 1#缓存登录的信息,不用每次启动都要扫描
 2bot = Bot(cache_path=True)
 3#注册
 4@bot.register([Group], TEXT)
 5def auto_reply(msg):
 6    # 如果是群聊,并且被当前登录的人被@,群的名称叫打卡群
 7    if isinstance(msg.chat, Group) and  msg.is_at and msg.sender.name=="打卡群":
 8        text=msg.text #接收到的信息
 9        member_name=msg.member.name#群里发送信息的名称
10        create_time=msg.create_time#发送消息时间
11        #内容里面带有“打卡”两个字才算成功
12        if text.find("打卡")!=-1:
13            date=datetime.datetime.now().strftime('%Y-%m-%d')
14            file_name=f"排行榜_{date}.txt"
15            try:
16                count=get_count(file_name)+1
17            except Exception as e:
18                count=1
19            file=open(file_name,'a')
20            file.writelines(f"排行:{count},打卡人:{member_name},打卡时间:{create_time}\n") 
21            file.close();
22            return f"{member_name},打卡成功,你是第{count}个打卡"  
23#阻塞主进程      
24embed()

话题延伸

以上的实现只是简单讲了一下解决问题的思路,里面还有什么没有解决呢?例如:打卡时间的范围没有限制,重复打卡的处理等。

现在已经有很多微信群的相关工具,为什么还要自己重复造轮子。因为大部分的功能只是满足基本的功能,当我们要运营某个功能的时候,不满足的情况下,就需要自己能够实现。

上面的功能还可以有这样的玩法。监控某个人发送的“放榜”指令,把今天统计的打卡前十名的名单自动发到群里。可以统计一个星期连续排行榜前十名的人。当你有了数据后,很多方式可以玩。

欢迎关注公众:sjyy_python

上一篇 下一篇

猜你喜欢

热点阅读