微信的自动回复&接入聊天机器人
今天偶尔发现了一个有趣的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()