用Python玩转微信之wxpy初探

  • wxpy介绍
  • 安装wxpy
  • 代码实现
    • 1.登录微信
    • 2.自动处理消息
    • 3.实现程序运行
    • 4.自动回复消息
  • 完整代码

最近事情不多,有时间可以去研究点儿东西,之前看到有在微信里可以自动回复内容、自动发文件的机器人,想去一探究竟。正好最近正在研究Python,便网上搜了下,还真有通过Python控制微信的API,可实现自动消息处理、自动加好友等功能。说起用Python控制微信,可能很多人都会想到itchat,但本人这次研究的不是itchat,而是另一个可以操作微信的API──wxpy,下面来一探wxpy如何操作微信的。

wxpy介绍

wxpy 是在 itchat 的基础上,进行了优化,提高了易用性,并扩展了功能。详细介绍可参考wxpy网站。

安装wxpy

wxpy从Python2.7到3.6均支持,安装wxpy也很简单,通过以下命令即可安装:

pip install wxpy

也可以通过豆瓣的镜像进行安装:

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

代码实现

1.登录微信

注意:建议使用小号登录,为避免常用账号经常登录造成一定概率限制登录的可能性
在wxpy中使用以下方式登录微信:

import wxpy
bot = wxpy.Bot(cache_path=True)

参数中cache_path的作用如下:

cache_path – 设置当前会话的缓存路径,并开启缓存功能;为 None (默认) 则不开启缓存功能。开启缓存后可在短时间内避免重复扫码,缓存失效时会重新要求登陆。 设为 True 时,使用默认的缓存路径 ‘wxpy.pkl’。

除了cache_path参数,Bot()还支持一下参数:

console_qr – 在终端中显示登陆二维码,需要安装 pillow 模块 (pip3 install pillow)。可为整数(int),表示二维码单元格的宽度,通常为 2 (当被设为 True 时,也将在内部当作 2)。也可为负数,表示以反色显示二维码,适用于浅底深字的命令行界面。 例如: 在大部分 Linux 系统中可设为 True 或 2,而在macOS Terminal 的默认白底配色中,应设为 -2。
qr_path – 保存二维码的路径
qr_callback – 获得二维码后的回调,可以用来定义二维码的处理方式,接收参数: uuid, status, qrcode
login_callback – 登陆成功后的回调,若不指定,将进行清屏操作,并删除二维码文件 logout_callback – 登出时的回调

执行以上代码后,会弹出一个登录二维码,和登录PC版或网页版微信一样,使用手机微信扫描登录,相当于登录微信网页版,只不过是在命令行中进行登录,登录后的效果如下图所示。

但是执行以上代码登录后,基本没什么用,因为本人没发现能操作什么,因此继续向下研究。

2.自动处理消息

wxpy中提供消息注册功能,可以实现自动处理消息。该功能是通过函数的装饰器方式实现的,比如以下方法实现了自动打印发过来的文本消息。

@bot.register(msg_types=wxpy.TEXT)
def printtext(msg):print(msg)

其中msg_types参数,是指定接收消息的类型,wxpy中支持以下消息类型:

文本 TEXT
位置 MAP
名片 CARD
提示 NOTE
分享 SHARING
图片 PICTURE
语音 RECORDING
文件 ATTACHMENT
视频 VIDEO
好友请求 FRIENDS
系统 SYSTEM

但是,当运行时,发现登录后,发消息并没有打印出来,因为在登录后没有进行其他操作,程序会因主线程执行完成而退出,不过没关系,wxpy中提供了解决方法。

3.实现程序运行

为了保证程序主线程不会因无操作而自动退出,wxpy中提供了主线程阻塞功能,方法如下:

wxpy.embed()

加上以上代码后,再次运行,即可停留在了Python的命令行交互界面,然后发过来的信息将会打印在命令行交互界面上,效果如下:

上面实现了消息的自动处理,但是我需要的是自动回复,下面接着研究。

4.自动回复消息

发现wxpy中提供了消息回复方法“Message.reply()”,于是将刚才的自动处理方式改为下面的自动回复。

@bot.register(msg_types=wxpy.TEXT)
def autoreply(msg):msg.reply("收到!")

然后运行后,即可实现自动回复消息,致辞自动回复消息功能已实现完成,总共代码不到十行,是不是很简单,人人都可以做属于自己的微信机器人。

完整代码

import wxpy
bot = wxpy.Bot(cache_path=True)@bot.register(msg_types=wxpy.TEXT)
def autoreply(msg):msg.reply("收到!")wxpy.embed()

参考:

  • wxpy:https://wxpy.readthedocs.io/zh/latest/index.html

[wxpy]用Python玩转微信之wxpy初探 ── 做属于自己的微信机器人相关推荐

  1. 基于微信视频直播如何做收费直播(微信公众号直播)?

    基于微信视频直播如何做收费直播(微信公众号直播) 现场设备准备 网络环境 平台选择(或自搭直播环境) 微信自定菜单的链接加入 发起直播 测试直播适配性 开始自己的直播 (未完待续) 我的其他原创文章: ...

  2. 微信公众号里如何上传html,微信公众号怎么做表单,微信万能表单如何添加到公众号里...

    微信的使用占据着大众的日常,而微信上的一些订单.预约.登记.投诉.反馈等功能都可以使用微信万能表单来实现,那么微信万能表单怎么做?下文带来微信公众号表单制作方法,方法很简单,需要的朋友一起看看吧. 微 ...

  3. Py之chatterbot:python包之Chatterbot包/wxpy包简介、安装、使用方法之详细攻略

    Py之chatterbot:python包之Chatterbot包/wxpy包简介.安装.使用方法之详细攻略 目录 Chatterbot包/wxpy包简介 Chatterbot包/wxpy包安装 Ch ...

  4. python 微信_wxpy: 用 Python 玩微信

    wxpy: 用 Python 玩微信¶ 微信机器人 / 可能是最优雅的微信个人号 API wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展 注意 强烈建议 ...

  5. 微信支付java helloworld_10行代码搞定微信支付(Java版)

    微信支付痛点 对于大多数同学来说,要开发微信支付可不简单.附上微信支付官方文档网页链接 从文档上可以看出,你需要解决很多问题,我就随便挑几个吧. xml与对象的互转, 微信使用xml格式而不使用jso ...

  6. java微信支付代码_10行代码搞定微信支付(Java版)

    原标题:10行代码搞定微信支付(Java版) 微信支付痛点 对于大多数同学来说,要开发微信支付可不简单.附上微信支付官方文档网页链接 从文档上可以看出,你需要解决很多问题,我就随便挑几个吧. xml与 ...

  7. 微信照片视频怎么做?3个步骤就学会制作!效果可甜可酷,朋友圈就你最多赞!

    微信照片视频怎么做?具体制作微信照片视频的方法是什么? 其实微信朋友圈那种获得很多赞的图文视频效果,就是把照片做成视频发到微信上,朋友圈那种一半照片一半视频也是这个方法.今天就教大家用数码大师,通过简 ...

  8. 活动制作服务器,制作微信投票活动需要做哪些准备

    原标题:制作微信投票活动需要做哪些准备 制作微信投票活动需要做哪些准备呢,下面小编给大家进行细致的讲解,希望能顾帮助需要做微信投票活动的用户. 制作微信投票活动之前先要策划好微信投票活动的内容.内容包 ...

  9. python玩微信_Python玩微信(1):初探wxpy

    1.前期准备 wxpy项目主页里面有它的相关介绍 pyecharts项目主页,是python与百度echarts的桥梁,我用来做数据分析 2.查看微信好友男女比例 fromwxpyimport*fro ...

最新文章

  1. java内部类为什么会持有外部类的引用_java中内部类为什么会持有外部类的引用?...
  2. 目瞪口呆!137亿年的宇宙演化,竟然如此震撼!简直颠覆想象....
  3. opencv简单的矩阵操作
  4. 小米手机上安装https证书(例如pem证书,crt证书)详解
  5. android root后的好处,安卓手机root后有什么好处
  6. 什么是站点,Active Directory系列之十一
  7. WEB 端批量移动设备管理控制工具 STF 的环境搭建和运行
  8. Cmake构建_设置全局编译选项
  9. 数据优化 | CnOpenData中国工业企业绿色专利及引用被引用数据
  10. Mac大小写切换需长按capslock键解决办法
  11. 小米电视机如何重新匹配遥控器
  12. CHI到底是干嘛的 保证cache一致性 2.3 snoop
  13. Visual Studio Code 代理设置
  14. 网站打开速度慢的解决方法
  15. 程序员写好简历的五大技巧
  16. 7代cpu能装虚拟xp系统吗_Intel 10代PC/笔记本安装Win7踩坑记 amp; 驱动分享
  17. 生产者消费者模型实现方式:管程法,信号灯法
  18. 已解决NameError: name ‘unichr‘ is not defined
  19. package有什么作用
  20. 移动时代的经济学——碎片化应用

热门文章

  1. 产品开发与python_生产 - MBA智库百科
  2. 深度学习优化算法:AdaGrad算法
  3. [Zookeeper-3.6.2源码解析系列]-13- 法定人对象QuorumPeer启动之加载磁盘快照与事务日志
  4. 12月值得一看的10款P2E游戏
  5. 【Java内存溢出排查】gc监测以及内存突增问题排查
  6. 一个可以运动的音乐贺卡
  7. python单元测试知识总结
  8. 初学Android,写了一个小时候的游戏《狼吃羊》
  9. 状态的抽象:从狼羊白菜游戏和倒油问题说起
  10. php stats红包算法,PHP红包算法