Python实现微信群欢迎机器人
今天暗恋的女孩问我能不能实现wx自动欢迎新人入群。刚开始听到这个要求,本以为会很简单,毕竟Github上有很多开源的项目,完全直接可以克隆一个,根据自己的需求进行一下修改。当时我这么想,也这么做了,结果发Wechat网页版被禁止登录了!!Github上很多开源项目都是基于wechat网页版,通过HTTP进行的交互。然而这是暗恋女孩提出的问题,做不到也得做到。然后经过寻找发现了一个WechatPCAPI,解决了我的问题。
下面进入正题:
首先将WechatPCAPI克隆到我们的目录,如下。
图1.jpg
下面是需要导入的包。
from WechatPCAPI import WechatPCAPI
import time
import logging
from queue import Queue
import threading
首先定义三个队列,用来处理收到的消息:
queue_recved_message = Queue()#用来处理所有消息
queue_groups=Queue() #用来处理群ID消息
queue_Members=Queue()#用来处理群成员信息
然后再定义群成员这个数据结构,群成员有群ID,WXID,昵称三个属性:
class Person:
def __init__(self):
self.chatroom_id = ""
self.wx_id = ""
self.nick_name = ""
接下来定义处理消息队列的函数,要检测新成员进群,首先要获取群ID,然后再更新指定群中成员的变化。如果发现本次更新的群成员信息与上次群成员信息不一致,则多出来的群成员即为新加入的。所以需要获得的消息类型有‘friend::chatroom’,‘member::chatroom’两种。获取这两种消息后,再次分别放到对应的队列中,进行下一步处理。
def thead_handle_mess(wx_inst):
while True:
if not queue_recved_message.empty():
message = queue_recved_message.get()
if 'friend::chatroom' in message.get('type'):
if chatroom in message.get('data',{}).get('chatroom_name',""):
queue_groups.put(message.get('data',{}).get('chatroom_id',""))
elif 'member::chatroom' in message.get('type'):
Per=Person()
Per.chatroom_id=message.get('data',{}).get('chatroom_id',"")
Per.wx_id = message.get('data', {}).get('wx