今天偶爾發現了一個有趣的python庫--itchat,可以實現微信的自動回復、防撤回,結合圖靈機器人還能實現聊天機器人的作用
簡單介紹一下配置與工具
win7旗艦版 pycharm python2.7(我在用python3版本運行時png.py會發生報錯,不知道大家那怎么樣)
這次用到的是python的itchat模塊,關於itchat這里有很詳細的介紹,同時也給出官方介紹:itchat
首先就是安裝itchat模塊,直接在cmd中運行
pip install itchat
安裝完成后就能靜靜的裝逼了
先給出防撤回以及自動回復的代碼:
#coding:utf-8 import re import time import itchat from itchat.content import * import sys reload(sys) sys.setdefaultencoding('utf8') #由於我們返回的是中文,Unicode的編碼問題,讀取文件時使用的編碼默認是ascii而不是utf8,所以這里我們要把默認編碼設為utf8 @itchat.msg_register([TEXT]) #這里我們先選擇注冊文本 def reply(msg): #首先設置防撤回,接着ruturn后的內容就是自動回復的內容,這個自動回復僅對好友生效,群里不會生效 friend = itchat.search_friends(userName=msg['FromUserName']) itchat.send(r"Friend:%s -- %s " r"Time:%s " r" Message:%s" % (friend['NickName'], friend['RemarkName'], time.ctime(), msg['Text']), toUserName='filehelper') return '快還錢' if __name__ == '__main__':#啟動微信自動登錄,二維碼登錄 itchat.auto_login(True) itchat.run()
防撤回功能是原理是將消息備份發送到文件助手toUserName='filehelper',由於是接入微信API,讀取消息會比手機端快一些。
如果要針對特定的人進行自動回復,這就就應該將return語句換為itchat.send(msg,toUserName=你的好友)
接下來就是接入聊天機器人的環節了(賊好玩)
首先要先去圖靈機器人注冊一個賬號去整個機器人
注冊以后選擇機器人管理-->創建機器人
創建完成后,機器人設置-->終端設置,把頁面往下拉能看到apikey,這個數據后面需要用到
接下來編寫我們的代碼:
# coding:utf-8 import requests from wxpy import * import itchat import requests import json def get_response(_info): print(_info) # 從好友發過來的消息 api_url = 'http://www.tuling123.com/openapi/api' # 圖靈機器人網址 data = { 'key': '你的key', 'info': _info, # 這是我們從好友接收到的消息 然后轉發給圖靈機器人 'userid': 'wechat-robot', # 這里你想改什么都可以 } r = requests.post(api_url, data=data).json() # 把data數據發 print(r.get('text')) # 機器人回復給好友的消息 return r @itchat.msg_register(itchat.content.TEXT) def text_reply(msg): return get_response(msg["Text"])["text"] # 將信息轉發給好友
if __name__ == '__main__': itchat.auto_login(True) itchat.run()
大家玩的開心!
friend = itchat.search_friends(userName=msg['FromUserName'])
itchat.send(r"Friend:%s -- %s "
r"Time:%s "
r" Message:%s" % (friend['NickName'], friend['RemarkName'], time.ctime(), reply_content),
toUserName='filehelper')
itchat.send(r"我已經收到你在【%s】發送的消息【%s】稍后回復。--微信助手(Python版)" % (time.ctime(), reply_content),
toUserName=msg['FromUserName'])
itchat.auto_login()
itchat.run()