微信群的使用者新增逻辑是 —— 当群人数达到 100 人后,使用者无法再通过扫描群二维码加入,只能让使用者先新增群内联络人微信,再由联络人把使用者拉进来。这样,联络人员的私人微信会新增大量陌生人,给其带来不必要的打扰,而且纯人工操作,也容易出现纰漏。
那么,是否可以通过程式码,做一个自动拉群机器人呢? 由微信机器人来实现自动加群功能,一劳永逸解决人工拉群的麻烦。
当然可以!@西秦公子 就用 Python 创造了一个微信自动拉群机器人,并把它部署执行在 UCloud 云平台上。
现在,他把机器人构建过程及程式码 都分享了出来,一起来看看吧~
 
我们在 UCloud 上执行了 Linux 中国 的翻译平台,同时,最近我们的另外一个专案 运维密码发展迅猛,体验群很快就达到了 100 人,达到了 100 人后,就没有办法让使用者通过扫描二维码来加群,只能让使用者加我们的微信,然后由我们来把使用者拉群。这样十分不便,而且也容易出现纰漏。
于是我们便考虑在云 WordPress 主机上,执行一个微信机器人,由微信机器人来实现加群,免去手动拉群的麻烦。具体实现过程如下:
程式码实现
我们的核心需求主要是两个:

读取使用者新增好友的验证资讯
根据验证资讯,传送不同的邀请连结

首先,我们要去建立一个机器人的例项,程式码如下

from wxpy import *
bot = Bot(‘bot.pkl’,console_qr=True)

这两行程式码引入了 wxpy ,并生成了一个 bot 例项。这个例项会将我们的登入资讯储存到 bot.pkl 中,这样我们在短时间内的机器人重启时,就不用重复登入了。
接下来,我们定义一个函式来校验使用者的验证资讯中,是否有我们需要的站群关键词 TDK 。

”’
验证资讯
”’
def valid_msg(msg):
return ‘ 运维密码’ in msg.text.lower()

并且定义一个方法,用来邀请使用者加入到我们的运维密码工作群中。

”’
定义邀请使用者的方法
”’
def invite(user):
group = bot.groups().search(‘“运维密码” 体验群’)
group[0].add_members(user, use_invitation=True)

这个里面的关键是我们要使用 bot 的 groups 方法来获取到所有的使用者,并使用搜寻,取到我们想要的资料。
在这里我是使用了资料的 第一个结果,当然,你也可以在搜寻时,使用 ensure_one 方法来保证只返回一个结果,而不是一个阵列。
找到我们要邀请的使用者以后,就可以使用 group 的 add_members 方法来邀请使用者加入到群聊。由于我们的群已经到了 100 人的限制。所以这里将第二个引数设定为 true 。
上述的两个方法,我们基本完成了我们需要使用的部分。
接下来,我们就要让机器人来自动处理我们的请求讯息了。

”’
处理加好友资讯
”’
@bot.register(msg_types=FRIENDS)def new_friends(msg):
user = msg.card.accept()
if valid_msg(msg):
invite(user)
else:
user.send(‘Hello {},你忘了填写加群口令,快回去找找口令吧’.format(user.name))

这里最关键的是第一行的 @bot.register(msg_types=FRIENDS),这行程式码是指注册一个监听器,来监听型别是 FRIEDNS 的讯息,也就是加好友的讯息。
然后定义了一个新的函式 new_friends(msg),在这个函式里,我们定义 user 为接受了使用者的资讯,并获取他的身份资讯。
并且呼叫 valid_msg 的方法来判断新增好友的资讯是否存在, 如果返回的结果为真,就呼叫邀请使用者的方法。
部署到 UCloud
接下来我们尝试将专案部署到 UCloud 云 WordPress 主机上:
建立 WordPress 主机

注册 UCloud – 专业云端计算服务商
点选左侧的 云 WordPress 主机,然后点选 建立 WordPress 主机
右侧选择 付费方式,点选 立即购买
在支付确认页面,点选 确认支付

购买成功后回到 WordPress 主机管理列表,如下所示:

这里注意记住你的外网 IP,下面的 IP 替换成你的。
基础环境安装
由于我们的 WordPress 主机执行的是 CentOS 7.2 ,自带的是 Python 2.7.5 ,而 wxpy 需要执行在 Python 3 下,所以我们首先进行的是 Python 3 的安装。
执行如下命令来安装 Python 3

yum install epel-release
yum install python34

接下来安装 pip

yum install python34-setuptools
easy_install-3.4 pip

安装完成 Python 3 和 pip ,接下来我们就可以开始安装 wxpy 了
在命令列中执行

pip3 install -i https://pypi.doubanio.com/simple/ -U wxpy

至此,就完成了基础环境搭建工作,机器人实现程式码就可以顺利执行在此云 WordPress 主机上了。
程式码覆盘及设计理念解析
以上就是微信拉群机器人的全部实现过程,最终效果如下图:

就微信机器人来说,最关键的,是要对机器人接受到的资讯注册监听器。通过监听讯息的型别、讯息的内容,来执行对应的操作。
比如我监听的事 FRIENDS 讯息,同样的也可以监听好友讯息等等。通过不同的监听模式来实现我们的具体功能是核心。如果我们把程式码精简一下,最终的程式码就是

#!/usr/bin/env python3
# coding: utf-8

from wxpy import *
bot = Bot()
@bot.register(msg_types=FRIENDS)
def new_friends(msg):
处理好友逻辑程式码

最少的情况下只需要这些程式码,就足够我们启动机器人了。当然,这样并不是最佳实践,程式码的可读性还有待提高。
如果你有更好的实践思路,也欢迎同我沟通。
 
转载自: https://zhuanlan.zhihu.com/p/26277794  作者: 西秦公子