Skip to content

Commit 27d52ed

Browse files
committed
Refine Readme
1 parent 20a6d9d commit 27d52ed

File tree

3 files changed

+107
-54
lines changed

3 files changed

+107
-54
lines changed

README.md

Lines changed: 107 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,32 @@
11
# wxBot [![star this repo](http://github-svg-buttons.herokuapp.com/star.svg?user=liuwons&repo=wxBot&style=flat&background=1081C1)](http://github.com/liuwons/wxBot) [![fork this repo](http://github-svg-buttons.herokuapp.com/fork.svg?user=liuwons&repo=wxBot&style=flat&background=1081C1)](http://github.com/liuwons/wxBot/fork) ![python](https://img.shields.io/badge/python-2.7-ff69b4.svg)
22

3-
Python包装Web微信实现的微信机器人框架。可以很容易地实现微信机器人。
3+
**wxBot** 是用Python包装Web微信协议实现的微信机器人框架。
4+
5+
目前的消息支持情况:
6+
7+
- [ ] 群消息
8+
- [x] 文本
9+
- [x] 图片
10+
- [x] 地理位置
11+
- [x] 个人名片
12+
- [x] 语音
13+
- [x] 动画
14+
- [ ] 语音电话
15+
- [ ] 红包
16+
17+
- [ ] 联系人消息
18+
- [x] 文本
19+
- [x] 图片
20+
- [x] 地理位置
21+
- [x] 个人名片
22+
- [x] 语音
23+
- [x] 小视频
24+
- [x] 动画
25+
- [ ] 视频电话
26+
- [ ] 红包
27+
- [ ] 转账
28+
29+
430

531
Web微信协议参考资料:
632

@@ -10,10 +36,14 @@ Web微信协议参考资料:
1036

1137
[qwx: WeChat Qt frontend 微信Qt前端](https://github.com/xiangzhai/qwx)
1238

39+
1340
## 1 环境与依赖
1441

15-
目前只能运行于Python 2环境 。
16-
**wxBot** 用到了Python **requests** , **pypng** , 以及 **pyqrcode** 库,使用之前需要安装这三个库:
42+
目前能运行于Python 3.4环境 。
43+
44+
**wxBot** 用到了Python **requests** , **pypng** , 以及 **pyqrcode** 库。
45+
46+
使用之前需要所依赖的库:
1747

1848
```bash
1949
pip install requests
@@ -22,13 +52,14 @@ pip install pypng
2252
```
2353

2454
## 2 快速开发
25-
### 2.1 代码
2655

27-
利用 **wxBot** 最简单的方法就是继承WXBot类并实现handle_msg_all或者schedule函数,然后实例化子类并run。
56+
利用 **wxBot** 最简单的方法就是继承WXBot类并实现 `handle_msg_all` 或者 `schedule` 函数,然后实例化子类并调用 `run` 方法 。
57+
58+
### 2.1 代码
2859

29-
以下的代码对所有来自好友的文本消息回复 "hi", 并不断向好友tb发送"schedule"
60+
以下的代码对所有来自好友的文本消息回复 *hi* , 并不断向好友 *tb* 发送 *schedule*
3061

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

3364
```python
3465
#!/usr/bin/env python
@@ -58,66 +89,66 @@ if __name__ == '__main__':
5889

5990
### 2.2 运行
6091

61-
直接用python运行代码(如运行测试代码test.py):
92+
直接用 `python` 运行代码(如运行测试代码 ***test.py*** ):
6293

6394
``` python
6495
python test.py
6596
```
6697

6798
### 2.3 登录微信
6899

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

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

73104
![login_on_ubuntu](img/login_on_ubuntu.png)
74105

75106
## 3 效果展示
76107

77-
测试代码test.py的运行效果
108+
测试代码 ***test.py*** 的运行效果
78109

79110
![向机器人发送消息](img/send_msg.png)
80111

81112
![后台](img/backfront.jpg)
82113

83114
## 4 接口
84-
### 4.1 handle_msg_all
115+
### 4.1 `handle_msg_all`
85116

86-
handle_msg_all函数的参数msg是代表一条消息的字典。字段的内容为:
117+
`handle_msg_all` 函数的参数 `msg` 是代表一条消息的字典。字段的内容为:
87118

88119
| 字段名 | 字段内容 |
89120
| ----- | --- |
90-
| msg_type_id | 整数,消息类型,具体解释可以查看 **消息类型表** |
91-
| msg_id | 字符串,消息id |
92-
| content | 字典,消息内容,具体含有的字段请参考 **消息类型表**一般含有type(数据类型)与data(数据内容)字段,type与data的对应关系可以参考 **数据类型表** |
93-
| user | 字典,消息来源,字典包含name(发送者名称,如果是群则为群名称,如果为微信号,有备注则为备注名,否则为微信号或者群昵称)字段与id(发送者id)字段,都是字符串 |
121+
| `msg_type_id` | 整数,消息类型,具体解释可以查看 **消息类型表** |
122+
| `msg_id` | 字符串,消息id |
123+
| `content` | 字典,消息内容,具体含有的字段请参考 **消息类型表**一般含有 `type`(数据类型)`data`(数据内容)字段,`type``data`的对应关系可以参考 **数据类型表** |
124+
| `user` | 字典,消息来源,字典包含 `name`(发送者名称,如果是群则为群名称,如果为微信号,有备注则为备注名,否则为微信号或者群昵称)字段与 `id`(发送者id)字段,都是字符串 |
94125

95126

96127
### 4.2 消息类型表
97128

98-
| 类型号 | 消息类型 | content |
129+
| 类型号 | 消息类型 | `content` |
99130
| ----- | --- | ------ |
100131
| 0 | 初始化消息,内部数据 | 无意义,可以忽略 |
101132
| 1 | 自己发送的消息 | 无意义,可以忽略 |
102-
| 2 | 文件消息 | 字典,包含type与data字段 |
103-
| 3 | 群消息 | 字典, 包含user(字典,包含id与name字段,都是字符串,表示发送此消息的群用户)与type、data字段,红包消息除外(只有type字段) |
104-
| 4 | 联系人消息 | 字典,包含type与data字段 |
105-
| 5 | 公众号消息 | 字典,包含type与data字段 |
106-
| 6 | 特殊账号消息 | 字典,包含type与data字段 |
133+
| 2 | 文件消息 | 字典,包含 `type``data` 字段 |
134+
| 3 | 群消息 | 字典, 包含 `user` (字典,包含 `id``name`字段,都是字符串,表示发送此消息的群用户)`type``data` 字段,红包消息除外(只有 `type` 字段) |
135+
| 4 | 联系人消息 | 字典,包含 `type``data` 字段 |
136+
| 5 | 公众号消息 | 字典,包含 `type``data` 字段 |
137+
| 6 | 特殊账号消息 | 字典,包含 `type``data` 字段 |
107138
| 99 | 未知账号消息 | 无意义,可以忽略 |
108139

109140

110141
### 4.3 数据类型表
111142

112-
| type | 数据类型 | data |
143+
| `type` | 数据类型 | `data` |
113144
| ---- | ---- | ------ |
114145
| 0 | 文本 | 字符串,表示文本消息的具体内容 |
115146
| 1 | 地理位置 | 字符串,表示地理位置 |
116-
| 3 | 图片 | 字符串,图片数据的url,HTTP POST得到jpg文件格式的数据 |
117-
| 4 | 语音 | 字符串,语音数据的url,HTTP POST得到mp3文件格式的数据 |
118-
| 5 | 名片 | 字典,包含nickname(昵称),alias(别名),province(省份),city(城市), gender(性别)字段 |
119-
| 6 | 动画 | 字符串, 动画url |
120-
| 7 | 分享 | 字典,包含type(类型),title(标题),desc(描述),url(http://github.com/%E9%93%BE%E6%8E%A5),from(来自)字段 |
147+
| 3 | 图片 | 字符串,图片数据的url,HTTP POST请求此url可以得到jpg文件格式的数据 |
148+
| 4 | 语音 | 字符串,语音数据的url,HTTP POST请求此url可以得到mp3文件格式的数据 |
149+
| 5 | 名片 | 字典,包含 `nickname` (昵称), `alias` (别名),`province` (省份),`city` (城市), `gender` (性别)字段 |
150+
| 6 | 动画 | 字符串, 动画url, HTTP POST请求此url可以得到gif文件格式的数据 |
151+
| 7 | 分享 | 字典,包含 `type` (类型),`title` (标题),`desc` (描述),`url` (链接),`from` (源网站)字段 |
121152
| 8 | 视频 | 不可用 |
122153
| 9 | 视频电话 | 不可用 |
123154
| 10 | 撤回消息 | 不可用 |
@@ -128,52 +159,74 @@ handle_msg_all函数的参数msg是代表一条消息的字典。字段的内容
128159

129160
### 4.4 WXBot对象属性
130161

131-
WXBot对象在登录并初始化之后,含有以下的可用数据:
162+
**WXBot** 对象在登录并初始化之后,含有以下的可用数据:
132163

133164
| 属性 | 描述 |
134165
| ---- | ---- |
135-
| contact_list | 当前用户的微信联系人列表 |
136-
| group_list | 当前用户的微信群列表 |
137-
| public_list | 当前用户关注的公众号列表 |
138-
| special_list | 特殊账号列表 |
139-
| session | WXBot与WEB微信服务器端交互所用的requests Session对象 |
166+
| `contact_list` | 当前用户的微信联系人列表 |
167+
| `group_list` | 当前用户的微信群列表 |
168+
| `public_list` | 当前用户关注的公众号列表 |
169+
| `special_list` | 特殊账号列表 |
170+
| `session` | **WXBot** 与WEB微信服务器端交互所用的 **Requests** `Session` 对象 |
140171

141172
### 4.5 WXBot对象方法
142173

143-
WXBot对象还含有一些可以利用的方法
174+
**WXBot** 对象还含有一些可以利用的方法
144175

145176
| 方法 | 描述 |
146177
| ---- | --- |
147-
| get_icon(id) | 获取用户icon并保存到本地文件 img_[id].jpg ,id为用户id(Web微信数据) |
148-
| get_head_img(id) | 获取用户头像并保存到本地文件 img_[id].jpg,id为用户id(Web微信数据) |
149-
| get_msg_img(msgid) | 获取图像消息并保存到本地文件 img_[msgid].jpg, msgid为消息id(Web微信数据) |
150-
| get_voice(msgid) | 获取语音消息并保存到本地文件 voice_[msgid].mp3, msgid为消息id(Web微信数据) |
151-
| get_account_name(uid) | 获取微信id对应的名称,返回一个可能包含remark_name(备注名),nickname(昵称), display_name(群名称)的字典|
152-
| send_msg_by_uid(word, dst) | 向好友发送消息,word为消息字符串,dst为好友用户id(Web微信数据) |
153-
| send_msg(name, word, isfile) | 向好友发送消息,name为好友的备注名或者好友微信号,isfile为False时word为消息,isfile为True时word为文件路径(此时向好友发送文件里的每一行) |
154-
| is_contact(uid) | 判断id为uid的账号是否是本帐号的好友,返回True(是)或False(不是) |
155-
| is_public(uid) | 判断id为uid的账号是否是本帐号所关注的公众号,返回True(是)或False(不是) |
178+
| `get_icon(id)` | 获取用户icon并保存到本地文件 ***img_[id].jpg*** , `id` 为用户id(Web微信数据) |
179+
| `get_head_img(id)` | 获取用户头像并保存到本地文件 ***img_[id].jpg***`id` 为用户id(Web微信数据) |
180+
| `get_msg_img(msgid)` | 获取图像消息并保存到本地文件 ***img_[msgid].jpg*** , `msgid` 为消息id(Web微信数据) |
181+
| `get_voice(msgid)` | 获取语音消息并保存到本地文件 ***voice_[msgid].mp3*** , `msgid` 为消息id(Web微信数据) |
182+
| `get_account_name(uid)` | 获取微信id对应的名称,返回一个可能包含 `remark_name` (备注名), `nickname` (昵称), `display_name` (群名称)的字典|
183+
| `send_msg_by_uid(word, dst)` | 向好友发送消息,`word` 为消息字符串,`dst` 为好友用户id(Web微信数据) |
184+
| `send_msg(name, word, isfile)` | 向好友发送消息,`name` 为好友的备注名或者好友微信号, `isfile``False``word` 为消息,`isfile``True``word` 为文件路径(此时向好友发送文件里的每一行) |
185+
| `is_contact(uid)` | 判断id为 `uid` 的账号是否是本帐号的好友,返回 `True` (是)`False` (不是) |
186+
| `is_public(uid)` | 判断id为 `uid` 的账号是否是本帐号所关注的公众号,返回 `True` (是)`False` (不是) |
156187

157188

158189
## 5 Example
159190

160-
bot.py 用 **[图灵机器人](http://www.tuling123.com/)** API 以及 **wxBot** 实现了一个自动回复机器人.
191+
***bot.py*****[图灵机器人](http://www.tuling123.com/)** API 以及 **wxBot** 实现了一个自动回复机器人.
161192

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

195+
并且本帐号可以通过发送 *退下**走开**关闭**关掉**休息**滚开* 来关闭机器人的自动回复。
196+
197+
也可以通过发送 *出来**启动**工作* 来再次开启机器人的自动回复。
198+
164199
群聊时需要将对应的群保存到联系人列表。
165200

166201
群聊实现效果:
167202

168203
![群聊](img/group_chat.png)
169204

205+
![群聊后台](img/group_chat_backend.jpg)
206+
207+
208+
***bot.py*** 的运行方法:
209+
210+
- 要接入图灵机器人API时:
211+
212+
1.[图灵机器人官网](http://www.tuling123.com/)注册账号,申请图灵key: [图灵key申请地址](http://www.tuling123.com/html/doc/apikey.html)
213+
214+
2.***bot.py*** 文件所在目录下新建 ***conf.ini*** 文件,内容为:(key字段内容为申请到的图灵key)
215+
216+
```txt
217+
[main]
218+
key=1d2678900f734aa0a23734ace8aec5b1
219+
```
220+
221+
3. 运行 ***bot.py***
222+
223+
```python
224+
python bot.py
225+
```
170226
171-
bot.py的运行方法:
172-
1.[图灵机器人官网](http://www.tuling123.com/)注册账号,申请图灵key: [图灵key申请地址](http://www.tuling123.com/html/doc/apikey.html)
173-
2. 在bot.py文件所在目录下新建conf.ini文件,内容为(key字段内容为申请到的图灵key):
227+
- 不接入图灵机器人API时(此时机器人对联系人消息以及群里@自己的消息统一回复 *知道了* ):
228+
1. 运行 ***bot.py***
174229
175-
```txt
176-
[main]
177-
key=1d2678900f734aa0a23734ace8aec5b1
178-
```
179-
3. 运行bot.py
230+
```python
231+
python bot.py
232+
```

img/backfront.jpg

-98 KB
Loading

img/group_chat_backend.jpg

55.9 KB
Loading

0 commit comments

Comments
 (0)