wxBotPython 網(wǎng)頁(yè)微信 API
wxBot 是用 Python 包裝 Web 微信協(xié)議實(shí)現(xiàn)的微信機(jī)器人框架。
目前的消息支持情況:
群消息
文本
圖片
地理位置
個(gè)人名片
語(yǔ)音
動(dòng)畫
語(yǔ)音電話
紅包
聯(lián)系人消息
文本
圖片
地理位置
個(gè)人名片
語(yǔ)音
小視頻
動(dòng)畫
視頻電話
紅包
轉(zhuǎn)賬
消息發(fā)送
文本
圖片
文件
1 環(huán)境與依賴
此版本只能運(yùn)行于Python 2環(huán)境 。
wxBot 用到了Python requests , pypng , Pillow 以及 pyqrcode 庫(kù)。
使用之前需要所依賴的庫(kù):
pip install requests pip install pyqrcode pip install pypng pip install Pillow
2 快速開發(fā)
利用 wxBot 最簡(jiǎn)單的方法就是繼承WXBot類并實(shí)現(xiàn) handle_msg_all 或者 schedule 函數(shù),然后實(shí)例化子類并調(diào)用 run 方法 。
2.1 代碼
以下的代碼對(duì)所有來(lái)自好友的文本消息回復(fù)文本消息 hi 、圖片消息 1.png 以及文件消息 1.png , 并不斷向好友 tb 發(fā)送文本 schedule 。
handle_msg_all 函數(shù)用于處理收到的每條消息,而 schedule 函數(shù)可以做一些任務(wù)性的工作(例如不斷向好友推送信息或者一些定時(shí)任務(wù))。
#!/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 運(yùn)行
直接用 python 運(yùn)行代碼(如運(yùn)行測(cè)試代碼 test.py ):
python test.py
2.3 登錄微信
程序運(yùn)行之后,會(huì)在當(dāng)前目錄下生成二維碼圖片文件 qr.png 并自動(dòng)打開,用微信掃描此二維碼并按操作指示確認(rèn)登錄網(wǎng)頁(yè)微信。
如果運(yùn)行在Linux下,還可以通過設(shè)置 WXBot 對(duì)象的 conf['qr'] 為 tty 的方式直接在終端打印二維碼(此方法只能在Linux終端下使用),效果如下:
3 效果展示
測(cè)試代碼 test.py 的運(yùn)行效果:
4 接口
4.1 handle_msg_all
handle_msg_all 函數(shù)的參數(shù) msg 是代表一條消息的字典。字段的內(nèi)容為:
4.2 消息類型表
4.3 數(shù)據(jù)類型表
4.4 群文本消息
由于群文本消息中可能含有@信息,因此群文本消息的 content 字典除了含有 type 與 data 字段外,還含有 detail 與 desc 字段。
4.5 WXBot對(duì)象屬性
WXBot 對(duì)象在登錄并初始化之后,含有以下的可用數(shù)據(jù):
各字段內(nèi)容為:
4.6 WXBot對(duì)象方法
WXBot 對(duì)象還含有一些可以利用的方法
5 群聊機(jī)器人示例
bot.py 用 圖靈機(jī)器人 API 以及 wxBot 實(shí)現(xiàn)了一個(gè)自動(dòng)回復(fù)機(jī)器人.
此機(jī)器人會(huì)回復(fù)來(lái)自聯(lián)系人的消息,以及群里@此賬號(hào)的消息。
并且本帳號(hào)可以通過發(fā)送 退下 、 走開 、 關(guān)閉 、 關(guān)掉 、 休息 、 滾開 來(lái)關(guān)閉機(jī)器人的自動(dòng)回復(fù)。
也可以通過發(fā)送 出來(lái) 、 啟動(dòng) 、 工作 來(lái)再次開啟機(jī)器人的自動(dòng)回復(fù)。
群聊時(shí)需要將對(duì)應(yīng)的群保存到聯(lián)系人列表。
群聊實(shí)現(xiàn)效果:
bot.py 的運(yùn)行方法:
-
要接入圖靈機(jī)器人API時(shí):
在圖靈機(jī)器人官網(wǎng)注冊(cè)賬號(hào),申請(qǐng)圖靈key: 圖靈key申請(qǐng)地址
在 bot.py 文件所在目錄下新建 conf.ini 文件,內(nèi)容為:(key字段內(nèi)容為申請(qǐng)到的圖靈key)
[main] key=1d2678900f734aa0a23734ace8aec5b1
運(yùn)行 bot.py
python bot.py
不接入圖靈機(jī)器人API時(shí)(此時(shí)機(jī)器人對(duì)聯(lián)系人消息以及群里@自己的消息統(tǒng)一回復(fù) 知道了 ):
運(yùn)行 bot.py
python bot.py
