本人最近在使用python版的微信作了一些模擬操做,使用的wxpy封裝好的框架api,聊天機器人接入的是圖靈,其餘的暫時尚未功能的接入計劃。html
在實施的過程當中遇到了不少問題,大部分是微信api過期致使了,由於自己調用的是web微信的api,我看到git上的項目已經最近的更新時間是2017年,中間不少次微信的api調整都沒更新到,好比添加好友,好比被@檢測等等。python
今天分享一下本身的使用經驗和一些本身的封裝方法:git
* 朋友列表和羣列表,由於會自動同步最近活躍的羣,因此若是新添加的羣須要從新獲取一下groups。api提供了一個search的搜索方法,使用起來稍微麻煩一些,我換了一種思路,直接下標獲取好友和羣。方法以下:web
def fslist(): fs= bot.friends() a = 0 for i in fs: print a a +=1 print i def gslist(): gs= bot.groups() a = 0 for i in gs: print a a +=1 print i
直接能夠經過元素索引角標直接獲取元素。
* 撤回消息。這個我只是對原來的recall()方法作了簡單封裝,這裏也見識了python的簡潔性。主要是在調試模式中使用。數據庫
def re(*msg): if not msg == (): ms=bot.messages.search(msg)\[-1\] ms.recall() else: ms=bot.messages\[-1\] ms.recall() print ms
* 發送圖片文件,主要也是在調試模式中使用。json
def sendpic(user,name): user.send_image('/Users/Vicky/Downloads/'+name) print user print "發送了圖片"+name
* 聊天機器人對話,本人接的圖靈的,接入方法請參照[python微信+requests+圖靈機器人制做聊天機器人](/blog/article/利用python wxpy和requests寫一個自動應答微信機器人實例.html),我這裏只寫一個封裝事後的方法,方便調用。api
def getTulingReplay(msg,friend): userid = "" if friend in fs: userid = fs.index(friend) if friend in gs: userid = gs.index(friend) j = dict( reqType=0, perception=dict( inputText=dict( text=msg ) ), userInfo=dict( apiKey="***", userId=userid ) ) r = requests.post("http://openapi.tuling123.com/openapi/api/v2",json=j) info = json.loads(r.text)\["results"\] c = info\[0\]\["values"\] d = c.keys() m = c\[d\[0\]\] print m friend.send(m)
* 保存聊天記錄。這個原需求是想整理一下羣聊天記錄,還有那些撤回的,如今作分析用。只存本地,還沒有清洗數據到數據庫。只有文本信息。微信
[一塊兒交流](https://gitee.com/fanapi/tester/blob/okay/readme.markdown)markdown