wxBot微信機器人框架(轉)
阿新 • • 發佈:2017-05-26
tle 圖片文件 圖像 lin art function 服務 sga 終端
原文:http://blog.csdn.net/tobacco5648/article/details/50722321
wxBot 是Python包裝Web微信實現的微信機器人框架。可以很容易地實現微信機器人。
github地址: wxBot github
環境與依賴
目前只能運行於Python 2環境 。
wxBot 用到了Python requests 和 pyqrcode 庫,使用之前需要安裝這兩個庫:
pip install requests
pip install pyqrcode
- 1
- 2
- 1
- 2
快速開發
代碼
利用 wxBot 最簡單的方法就是繼承WXBot類並實現handle_msg_all或者schedule函數,然後實例化子類並run,如下的代碼對所有的文本消息回復 “hi”, 並不斷向好友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‘] == 5:
self.send_msg(msg[‘user_name‘], ‘hi‘)
def schedule(self):
self.send_msg(‘tb‘, ‘schedule‘)
time.sleep(1)
def main():
bot = MyWXBot()
bot.DEBUG = True
bot.run()
if __name__ == ‘__main__‘:
main()
運行
直接用python運行代碼(如運行測試代碼test.py):
python test.py
- 1
- 1
登錄微信
程序運行之後,會在當前目錄下生成二維碼圖片文件 qr.png ,用微信掃描此二維碼並按操作指示確認登錄網頁微信。
如果運行在Linux下,還可以通過設置WXBot對象的conf[‘qr’]為’tty’的方式直接在終端打印二維碼(此方法只能在Linux終端下使用),效果如下:
效果展示
測試代碼test.py的運行效果:
接口
handle_msg_all
handle_msg_all函數的參數msg是代表一條消息的字典。一般包含以下字段:
字段名 | 意義 |
---|---|
msg_id | 消息id,微信內部數據 |
msg_type_id | 消息類型,具體見消息類型表 |
user_id | 發送消息的用戶的id,微信內部數據 |
user_name | 發送消息的用戶的名字,為備註名或者微信用戶名 |
content | 消息體,不同類型消息的此字段內容不同,具體見消息類型表 |
消息類型表:
類型號 | 類型名稱 | 類型描述 | content |
---|---|---|---|
1 | Location | 位置 | 字典,包含location(位置的文本描述)和xml(原始未解析的xml格式文本)字段 |
2 | FileHelper | 文件 | 字符串,文本文件內容 |
3 | Self | 自己發送的消息 | 字符串,文本消息 |
4 | Group | 群消息 | 字典,包含group_id(微信內部id), group_name(群名), user(微信內部id), user_name(用戶名稱), msg(字符串消息)字段 |
5 | Text | 普通文本消息 | 字符串, 文本消息 |
6 | Image | 圖片 | 字符串, 圖片url |
7 | Voice | 語音 | 字符串, 語音url |
8 | Recommend | 微信名片 | 字典, 包含nickname(昵稱),alias(別名),province(省份),city(城市), gender(性別)字段 |
9 | Animation | 動畫 | 字符串, 動畫url |
10 | Share | 分享 | 字典,包含type(類型),title(標題),desc(描述),url(鏈接),from(來自)字段 |
11 | Video | 視頻 | 字符串,未解析的xml字符串 |
12 | VideoCall | 視頻電話 | 字符串,未解析的xml字符串 |
13 | Redraw | 撤回消息 | 字符串,未解析的xml字符串 |
14 | Init | 微信初始化系統消息,可以忽略 | 字符串,未解析的xml字符串 |
99 | Unknown | 未知類型 | 字符串,未解析的xml字符串 |
WXBot對象屬性
WXBot對象在登錄並初始化之後,含有以下的可用數據:
屬性 | 描述 |
---|---|
contact_list | 當前用戶的微信聯系人列表 |
group_list | 當前用戶的微信群列表 |
session | WXBot與WEB微信服務器端交互所用的requests Session對象 |
WXBot對象還含有一些可以利用的方法:
方法 | 描述 |
---|---|
get_icon(id) | 獲取用戶icon並保存到本地文件 img_[id].jpg ,id為用戶id(Web微信數據) |
get_head_img(id) | 獲取用戶頭像並保存到本地文件 img_[id].jpg,id為用戶id(Web微信數據) |
get_msg_img(msgid) | 獲取圖像消息並保存到本地文件 img_[msgid].jpg, msgid為消息id(Web微信數據) |
get_voice(msgid) | 獲取語音消息並保存到本地文件 voice_[msgid].mp3, msgid為消息id(Web微信數據) |
get_user_remark_name(uid) | 獲取好友的備註名,沒有備註名則獲取好友微信號, uid為好友的用戶id(Web微信數據) |
send_msg_by_uid(word, dst) | 向好友發送消息,word為消息字符串,dst為好友用戶id(Web微信數據) |
send_msg(name, word, isfile) | 向好友發送消息,name為好友的備註名或者好友微信號,isfile為False時word為消息,isfile為True時word為文件路徑(此時向好友發送文件裏的每一行) |
wxBot微信機器人框架(轉)