专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
OSC开源社区  ·  诞生20年的Fish ... ·  昨天  
OSC开源社区  ·  PostgreSQL 18新特性前瞻 ·  昨天  
码农翻身  ·  务必立即拿下软考证(政策红利) ·  13 小时前  
程序员的那些事  ·  工资12000,下家给15000,我说考虑下 ... ·  3 天前  
程序员的那些事  ·  暴利!英伟达!营收 9485 亿! ·  2 天前  
51好读  ›  专栏  ›  OSC开源社区

wxBot:基于 Python 的微信机器人框架 | 软件推介

OSC开源社区  · 公众号  · 程序员  · 2017-06-10 08:28

正文


wxBot 是用 Python 包装 Web 微信协议实现的微信机器人框架。


目前的消息支持情况

群消息

- 文本

- 图片

- 地理位置

- 个人名片

- 语音

- 动画

- 语音电话

- 红包


联系人消息

- 文本

- 图片

- 地理位置

- 个人名片

- 语音

- 小视频

- 动画

- 视频电话

- 红包

- 转账


消息发送

- 文本

- 图片

- 文件


环境与依赖

此版本只能运行于Python 2环境 。


wxBot 用到了Python requests , pypng , Pillow 以及 pyqrcode 库。


使用之前需要所依赖的库:


pip install requests
pip install pyqrcode
pip install pypng
pip install Pillow


快速开发

利用 wxBot 最简单的方法就是继承WXBot类并实现 handle_msg_all 或者 schedule 函数,然后实例化子类并调用 run 方法 。


2.1 代码


以下的代码对所有来自好友的文本消息回复文本消息 hi 、图片消息 1.png 以及文件消息 1.png , 并不断向好友 tb 发送文本 schedule 。


handle_msg_all 函数用于处理收到的每条消息,而 schedule 函数可以做一些任务性的工作(例如不断向好友推送信息或者一些定时任务)。


#!/usr/bin/env python

# coding: utf-8

import time

from wxbot import *

class MyWXBot(WXBot):

def handle_msg_all(self, msg):

if msg['msg_type_id'] == 4 and msg['content']['type'] == 0:

self.send_msg_by_uid(u'hi', msg['user']['id'])

self.send_img_msg_by_uid("img/1.png", msg['user']['id'])

self.send_file_msg_by_uid("img/1.png", msg['user']['id'])

def schedule(self):

self.send_msg(u'tb', u'schedule')

time.sleep(1)

def main():

bot = MyWXBot()

bot.DEBUG = True

bot.run()

if __name__ == '__main__':

main()


2.2 运行


直接用 python 运行代码(如运行测试代码 test.py ):


python test.py


2.3 登录微信


程序运行之后,会在当前目录下生成二维码图片文件 qr.png 并自动打开,用微信扫描此二维码并按操作指示确认登录网页微信。


如果运行在Linux下,还可以通过设置 WXBot 对象的 conf['qr'] 为 tty 的方式直接在终端打印二维码(此方法只能在Linux终端下使用),效果如下:



效果展示

测试代码 test.py 的运行效果:



接口

4.1 handle_msg_all


handle_msg_all 函数的参数 msg 是代表一条消息的字典。字段的内容为:



4.2 消息类型表



4.3 数据类型表



4.4 群文本消息


由于群文本消息中可能含有@信息,因此群文本消息的 content 字典除了含有 type 与 data 字段外,还含有 detail 与 desc 字段。



4.5 WXBot对象属性


WXBot 对象在登录并初始化之后,含有以下的可用数据:


各字段内容为:



4.6 WXBot对象方法


WXBot 对象还含有一些可以利用的方法



群聊机器人示例

bot.py 用 图灵机器人 API 以及 wxBot 实现了一个自动回复机器人。


此机器人会回复来自联系人的消息,以及群里@此账号的消息。


并且本帐号可以通过发送 退下 、 走开 、 关闭 、 关掉 、 休息 、 滚开 来关闭机器人的自动回复。


也可以通过发送 出来 、 启动 、 工作 来再次开启机器人的自动回复。


群聊时需要将对应的群保存到联系人列表。


群聊实现效果:



bot.py 的运行方法


要接入图灵机器人API时:


- 在图灵机器人官网注册账号,申请图灵key: 图灵key申请地址

- 在 bot.py 文件所在目录下新建 conf.ini 文件,内容为:(key字段内容为申请到的图灵key)


[main]
key=1d2678900f734aa0a23734ace8aec5b1


- 运行 bot.py


python bot.py


不接入图灵机器人API时(此时机器人对联系人消息以及群里@自己的消息统一回复 知道了 ):


- 运行 bot.py


python bot.py







请到「今天看啥」查看全文