之前给大家分享了怎么用 itchat 库制作微信朋友性别统计图,今天给大家介绍一个更强大的库:wxpy 库。
wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展,wxpy 库可能是最优雅的微信个人号 API。
今天只用到 wxpy 库其中的一个小功能:陪人聊天。
安装
wxpy 库支持 Python 3.4-3.6 版本和 2.7 版本。如果你的电脑只安装了一个 Python 版本,直接用下面命令安装:
pip install wxpy
如果你电脑同时装了 2.7 和 3.x 版本,将上方命令中的 “pip” 替换为 pip3 或 pip2,可确保安装到对应的 Python 版本中。
或者可以从 PYPI 官方源下载安装 (在国内可能比较慢或不稳定):
pip install -U wxpy
也可以从豆瓣 PYPI 镜像源下载安装 (推荐国内用户选用):
pip install -U wxpy -i "https://pypi.doubanio.com/simple/"
我用的 Python 版本是 3.6,代码编辑工具是 Pycharm。
安装完成后在代码编辑工具 Pycharm 中导入 wxpy 库。
登陆微信
直接调用 wxpy 库里的 Bot() 方法就会弹窗微信二维码,扫描即可登录微信。
# 导入模块from wxpy import *import requestsimport json# 初始化机器人,扫码登陆bot = Bot()
登录后就可以对微信进行相关操作了。
创建图灵机器人
接下来需要在图灵机器人官网注册账号,点击下方阅读原文可进入官网。
登录后创建机器人,填写应用终端、应用行业、应用场景。
创建成功后就能得到 apikey。
接口请求 API
将刚注册获取的 apikey 和用户输入的信息 info 作为 post 请求的参 data。直接用 request.post 请求图灵机器人 api 地址,加上刚才的 data。这样就完成了对图灵机器人接口的请求。
robot = Bot()def talk_robot(info='你好啊'): #定义一个默认参数 api_url = 'http://www.tuling123.com/openapi/api' # 图灵接口url apikey = 'xxxxxxxxxx' # 注册图灵生成key data = {'key': apikey, 'info': info} r = requests.post(api_url, data=data).text
用 requests.post 处理后的返回的数据是 json 格式,比如我输入的 info 参数是「大家好」,返回的 json 语句是:
{"code":100000,"text":"看来你心情还不错哦!"}
当然,这个参数对应的回复不止一条,这是随机回复的其中一条,也有可能回复:
{"code":100000,"text":"你好,我就好。"}
我们现在需要把 json 语句的值提取出来,使用 json.loads(r)['text'] 方法提取出 text 值。
response = json.loads(r)['text']return response
创建话痨机器人
wxpy 提供了注册消息的方法,可以简单将各种类型的消息注册并自定义处理方式。注册消息使用简单的 @bot.register() 方法。
定义一个回复朋友消息的函数,并将回复的 message 这个字符串使用 format() 方法格式化后作为上面 talk_robot() 函数的入参,返回机器人回复的消息。
当然仅仅写以上内容,会导致你的程序主程序运行结束自然退出。wxpy 给出了embed() 方法,在程序末尾(或其他你想要暂停调试的地方)加上 embed() 方法就可以让程序保持运行,同时进入Python命令行。
@robot.register()def reply_my_friend(msg): message = '{}'.format(msg.text) response = talk_robot(info=message) return responseembed()
这样,我的小号就化身成为话痨微信机器人,我们在群里不管说什么,他都会搭话。
创建微智能机器人
如果技术群里人多的在讨论问题的话,这个话痨就会显得不是太智能,这时我们可以加个判断条件对 TA 进行优化下,只有 @TA 时,TA 才会搭话。
@robot.register()def print_group_msg(msg): if msg.is_at: message = '{}'.format(msg.text) response = talk_robot(info=message) return responseembed()
来看下这个微智能的机器人。
这样,简单的两款微信机器人就完成了,跃跃欲试的小伙伴赶紧试试吧。请记住用自己的小号来登录做成机器人,如果用自己常用的微信做成话痨机器人的话,你的各微信群会爆炸的,不明所以的吃瓜群众还以为你的微信中病毒了呢。
用小号做话痨机器人的话也要注意把小号关注的公众号取消关注,因为一旦公众号有推文过来,你的话痨机器人就会搭话,而一般的公众号都会设置关键词回复和收到消息回复的功能,所以他们会一直聊下去,但是这个免费的 api 接口每天的请求次数是有限制的,每天免费 5000 次请求。如果超过这个次数限制的话,TA 就只会说一句话:亲爱的,当天请求次数已用完。当然,土豪请忽略我上面说的这句话。
如果群人数比较多,很活跃的话,可以用其他手机号再注册图灵获取一个 apikey。
源码很简单,可以自己敲下,如需参考我的源码,公众号回复「wxpy」获取源码。
优化
以上创建的机器人只能识别中文和个别的英文,不识别表情、图片、语音、视频,这个后期会逐步优化的。
今天讲的只是 wxpy 库冰山一角的功能,还有很多有意思的功能:
发送文本、图片、视频、文件;
通过关键词或用户属性搜索 好友、群聊、群成员等;
获取好友/群成员的昵称、备注、性别、地区等信息;
加好友,建群,邀请入群,移出群等等;
这个小机器人我放在我的技术交流群里了,欢迎大家随时进群体验去撩 TA。以后我会逐步优化让 TA 功能变得更强大。同时我会在公众号分享出来,觉得这个项目有意思的不妨点个赞加个关注,让我们一起用 Python 玩微信。
推荐阅读:
30 行代码绘出你的微信朋友统计图
作者:Python知识圈
链接:https://www.jianshu.com/p/a4cca3b55d0a