1. 程式人生 > >wxBot微信機器人框架(轉)

wxBot微信機器人框架(轉)

tle 圖片文件 圖像 lin art function 服務 sga 終端

原文:http://blog.csdn.net/tobacco5648/article/details/50722321

wxBot 是Python包裝Web微信實現的微信機器人框架。可以很容易地實現微信機器人。
github地址: wxBot github

環境與依賴

目前只能運行於Python 2環境 。
wxBot 用到了Python requestspyqrcode 庫,使用之前需要安裝這兩個庫:

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微信機器人框架(轉)