Python微信机器人实战:wxpy库安装、功能详解与聊天机器人开发
本文详细介绍Python库wxpy的安装方法及核心功能,包括扫码登录、消息收发、好友统计等。通过结合图灵机器人API,实现自动回复聊天机器人,并提供代码示例与注意事项,帮助开发者快速构建微信自动化应用。
近期研究微信API时发现一个实用的Python库:wxpy。该库基于itchat,利用Web微信通信协议,实现了微信登录、消息收发、好友搜索及数据统计等功能。
本文将介绍该库的使用方法,并在文末演示如何构建一个聊天机器人。
是否感到兴奋与期待?
接下来,进入正题。
准备工作
安装过程十分简便,可直接从官方源进行下载和安装。
pip install -U wxpy
或者选择从豆瓣源进行安装。
pip install -U wxpy -i "https://pypi.doubanio.com/simple/"
模块初探
安装完成后,我们来测试几个基础功能。
1. 扫码登录微信
from wxpy import * bot = Bot()
运行上述程序后,屏幕会弹出二维码,使用手机微信扫描即可完成登录。然而,上述程序存在一个缺点:每次运行都需要重新扫描二维码。不过,wxpy提供了贴心的缓存选项,如下所示。
bot = Bot(cache_path=True)
通过保存登录信息,后续运行无需再次扫描二维码。
2. 发送消息
bot.file_helper.send("hello")
这里的file_helper指的是微信中的文件传输助手。向文件传输助手发送一条消息,手机端将收到如下显示的消息。

3. 接收消息
我们实现一个收到消息后自动回复的功能。
@bot.register() def print_message(msg): print(msg.text) return msg.text # 进入Python命令行,让程序保持运行 embed()
当用户通过公众号管理平台向后端发送消息时,即可收到如下的消息回复。

4. 搜索好友及微信群
我们实现一个搜索公司群、定位老板并转发其消息的功能。
from wxpy import *
bot = Bot(cache_path=True)
# 定位公司群
company_group = bot.groups().search('公司微信群')[0]
# 定位老板
boss = company_group.search('老板大名')[0]
# 将老板的消息转发到文件传输助手
@bot.register(company_group)
def forward_boss_message(msg):
if msg.member == boss:
msg.forward(bot.file_helper, prefix='老板发言')
# 堵塞线程
embed()
对于喜欢在群内发布指令的老板,这是一个福音,从此无需再担心错过重要信息。
数据统计
wxpy的好友统计功能十分实用,可轻松统计好友的地理位置分布及性别分布。
以下代码中,统计了好友的分布情况,并打印出人数最多的10个地区。
from wxpy import * bot = Bot(cache_path=True) friends_stat = bot.friends().stats() friend_loc = [] # 每一个元素是一个二元列表,分别存储地区和人数信息 for province, count in friends_stat["province"].iteritems(): if province != "": friend_loc.append([province, count]) # 对人数倒序排序 friend_loc.sort(key=lambda x: x[1], reverse=True) # 打印人数最多的10个地区 for item in friend_loc[:10]: print item[0], item[1]
统计出的地区分布数据绘制成图表如下。

由于用户身处上海,大多数好友也来自上海,上述图表如实反映了这一情况。
统计性别分布的代码如下。
for sex, count in friends_stat["sex"].iteritems(): # 1代表MALE, 2代表FEMALE if sex == 1: print "MALE %d" % count elif sex == 2: print "FEMALE %d" % count
将性别分布数据生成图表如下。

可见好友中男性占大多数。男性朋友多,老婆更放心,嗯~~
聊天机器人
基于上述功能简介,我们来实现一个聊天机器人。
该聊天机器人基于图灵机器人。用户可在图灵机器人平台注册账号并创建机器人,该平台号称在中文语境下拥有最高智能度的机器人大脑。
# -*- coding: utf-8 -*-
import json
import requests
from wxpy import *
# 调用图灵机器人API,发送消息并获得机器人的回复
def auto_reply(text):
url = "http://www.tuling123.com/openapi/api"
api_key = "你的api key"
payload = {
"key": api_key,
"info": text,
"userid": "123456"
}
r = requests.post(url, data=json.dumps(payload))
result = json.loads(r.content)
return "[tuling] " + result["text"]
bot = Bot(console_qr=True, cache_path=True)
@bot.register(mp)
def forward_message(msg):
return auto_reply(msg.text)
embed()
运行上述程序并向自己发送消息,可以看到如下的对话结果。

机器人十分有趣,一上来就要红包,还把我当作男朋友。
附录
wxpy文档:http://wxpy.readthedocs.io/zh/latest/ github地址:https://github.com/youfou/wxpy/blob/master/docs/index.rst
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









