python统计微信群接龙并实时反馈

这篇博客分享了如何使用Python的wxpy库登录微信并读取群消息,以统计微信群接龙中未参与的成员。作者提供了一个解决方案,通过获取群成员列表并与接龙信息对比,自动提醒未接龙的人员。文中还包括了详细代码和注释,适合初学者作为练手项目。
部署运行你感兴趣的模型镜像

well,想不到小懒人要来开技术贴了。 就算阅读量少还是分享一下,希望可以帮到需要的朋友。 考虑到很多粉丝是小白,代码会尽量简洁,注释又详细,贴出来的每一个代码块都能独立运行。

需求

有朋友反馈他们公司每天都要在微信群接龙反馈类似健康申报和到岗情况,而他负责统计未接龙的成员并艾特催促他们。要命的是群成员多,接龙又不按顺序,一早上盯下来精疲力尽。群接龙作为一个微信新出的功能,用来统计报名是挺好用的,用来统计信息说实话还不如直接找个在线的小程序或者表格呢,还避免刷屏。anyway,既然有需求就肯定有对应方案,python的微信自动化了解一下。

解决思路

python登陆微信并读取群消息,判断统计人员姓名是否在群聊信息中,否则给出反馈。首先确保你的微信号可以登陆网页版微信,浏览器访问https://wx.qq.com/,手机扫码后可以登陆就ok。新注册的微信无法登陆网页版,则无法进行今天的编程测试。python的微信库有两个,大名鼎鼎的itchat和wxpy。我们选择后者,wxpy是在itchat基础上的二次开发和功能扩展,所以更简洁,操作更方便。

官方文档:

https://wxpy.readthedocs.io/zh/latest/

基础教程

安装wxpy库:

pip install wxpy

登陆微信只要三行代码

# -*- coding:utf-8 -*-
from wxpy import * #导入库
bot = Bot(cache_path=True) # True代表本地缓存,不用每次重新扫码
bot.join() #开启线程

读取群消息

# -*- coding:utf-8 -*-
from wxpy import *
bot = Bot(cache_path=True)
group_name ='编程练习测试' #群名称,可自定义
my_group = bot.groups(update=True).search(group_name)[0]
@bot.register(my_group, msg_types=TEXT) 
def group(msg):
    print(msg.text) #输出群消息
bot.join()

运行上述代码,群名为“编程练习测试”的群消息将被打印出来。由于接龙是一条消息含所有人的名字的,所以先要确定有那些需要上报。方案一每次获取群内所有成员,再逐一对比。方案二,将需要参与接龙的群成员放于一个列表中。 小懒人采用第二种比较灵活的方法。快速获取群成员可以采用如下方法:

# -*- coding:utf-8 -*-
from wxpy import *
bot = Bot(cache_path=True)
group_name ='编程练习测试' #群名称,更改为你的群
my_group = bot.groups(update=True).search(group_name)[0]
for member in my_group:
    print(member) #输出所有成员
@bot.register(my_group, msg_types=TEXT)
def group(msg):
    print(msg.text) #输出群消息
bot.join()

以体验群为例,马上输出四百多位群友,但是其格式是
<Member: 群昵称>咱们用下面的方法处理一下输出来作为列表。将上述6-7行改为:

all = []
for member in my_group:
    member = str(member)
    member = member.replace("<Member: ","")
    member = member.replace(">","")
    all.append(member)
print(all)

输出 image

我们把这些复制到代码里作为成员列表,然后开始对比群消息里的成员。 完整代码如下,每一行小懒人都详细注释了。

# -*- coding:utf-8 -*-
from wxpy import *
bot = Bot(cache_path=True)
group_name ='编程练习测试' #群名称
my_group = bot.groups(update=True).search(group_name)[0]
key_word = "在岗情况和疫情报告" #接龙关键词,群消息必须含连续的这些关键词
all_people =["张三","李四","王五","陈六","赵七","小懒人","师弟"]
@bot.register(my_group, msg_types=TEXT)
def group(msg):
    # print(msg.text) #输出群消息
    if key_word in msg.text : #判断消息是否接龙,即表头是否含关键词
        print('开始进入接龙')
        content = msg.text
        done_count = 0 #初始接龙人数为0
        not_yet = "" #还没接龙的人员,初始为空
        for people in all_people: #从所有人员列表中逐一取出
            if people in content: #如果这个名字在这条消息里,则下一步
                done_count +=1 #接龙人数+1
            else:
                at_them = "@" +people +","  #把这个没接龙的人前面加个@
                not_yet += at_them  #如果不在群消息里面,则放入未接龙成员合集
        print("已登记人数:%s人" % done_count)  # 直接控制台打印登记人数
        if done_count == len(all_people) :  #全部人数
            msg.sender.send("今日接龙已全员完成,共%s人"%done_count) #往群里面发送已完成信息
        elif 3 < done_count < len(all_people): # 大于3个人之后开始反馈,可以自己设定,没必要每收到一条信息就反馈一次
            msg.sender.send("已接龙人数:%s人。未上报群成员为:%s请及时接龙并到到体验群领资源"%(done_count,not_yet))
            # 往群里发送为完成的人员名单
bot.join() #程序开始

下面这行代码是向群内发送消息的。print是输出到控制台。

msg.sender.send("今日接龙已全员完成,共%s人"%done_count)

# 来测试一下,在python的控制台可以收到print的消息

image

至于群内效果如何,亲测完美解决。 image

成员接龙不需要按顺序,可以设置开始反馈的阈值,比如到最后10个再开始反馈是哪些人未接龙。另外其接龙用的名称需要和素材库里的一致,接龙默认就是其群昵称的。上图的代码可以直接运行了,代码文件小懒人也上传到懒人盘03栏了。懒得复制的可以直接到懒人盘下载。image

不知道小伙伴们用接龙方式打卡的多不多,必要时把上述脚本封装成可执行软件,方便不会python的小伙伴。至于想学和正在学的粉丝们可以把它作为一个小小练手项目,总共不超过30行,小懒人也在每一行代码后面都详细注释了。真是写代码5分钟,注释15分钟,写文章50分钟啊!
公众号:懒人找资源.jpg
至于想学和正在学的粉丝们可以把它作为一个小小练手项目,总共不超过30行,小懒人也在每一行代码后面都详细注释了。真是写代码5分钟,注释15分钟,写文章50分钟啊!

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值