基于Python的微信聊天机器人
具体原理:将好友消息转发给图灵机器人,获得图灵机器人的回复后,将消息转发给原好友,也就是说,我们将搭建从图灵机器人到友的沟通桥梁。具体步骤如下:
- 搭建python开发环境,建议使用pycharm软件;
- 可以参看网络上的教程注册图灵机器人,并获取APIkey;
- pip安装wxpy,requests,itchat包,使用wxpy包可以简化开发步骤具体参看开发文档;
环境搭建
window环境搭建教程以及安装包链接链接:https://pan.baidu.com/s/1hrHXuRU 密码:pg4t
注册灵图机器人
灵图机器人注册链接:http://www.tuling123.com/help/help_center.jhtml?nav=doc
安装依赖包
- #pip install XXX 为python安装命令
- pip install wxpy requests itchat
代码实现:
基于wxpy代码实现:
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- #time: 2017/08/15 20:53:19
- #version 1.0
- #__author__:lanlong
- #参看网址http://wxpy.readthedocs.io/zh/latest/index.html
- import requests
- from wxpy import *
- import json
- import random
- robot = Bot()#定义robot对象
- #图灵机器人获取回复消息
- def talks_robot(info = 'hello worle'):
- api_url = 'http://www.tuling123.com/openapi/api' #图灵机器人api街口
- apikey = '图灵api密钥' #图灵api密钥
- data = {'key': apikey,
- 'info': info}
- req = requests.post(api_url, data=data).text #通过接收消息info,对数据在封装,向灵图机器人发出请求请求,并获得回复
- replys = json.loads(req)['text'] #loads方法是把json对象转化为python对象,dumps方法是把pyhon对象转化为json对象
- return replys #返回回复数据
- @robot.register()#灵图机器人注册注册
- def tuling_reply(msg):#回复来自其他好友、群聊和公众号的消息
- defaultReply = '我接受: ' + msg.text #为了保证在图灵Key出现问题的时候仍旧可以回复,这里设置一个默认回复
- robots = ['——By机器人李', '——By反正不是本人','我是灵图的机器人']#防止误解追加解释,可以去掉
- message = '{}'.format(msg.text)#格式转换,转换为字符串
- replys = talks_robot(info=message)+random.choice(robots)
- return replys or defaultReply
- if __name__ == '__main__':
- robot.start() #开始监听和自动处理消息
- embed() #进入 Python 命令行、让程序保持运行
基于itchat代码实现:
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- #time: 2017/08/15 20:53:19
- #version 1.0
- #__author__:lanlong
- import requests
- import itchat
- # 向api发送请求
- def get_response(msg):
- apiUrl = 'http://www.tuling123.com/openapi/api'
- apikey = '图灵api密钥' #图灵api密钥
- data = {
- 'key' : apikey,
- 'info' : msg,
- 'userid' : 'pth-robot',
- }
- try:
- r = requests.post(apiUrl, data=data).json()
- return r.get('text')
- except:
- return
- # 注册方法
- @itchat.msg_register(itchat.content.TEXT)
- def tuling_reply(msg):
- # 为了保证在图灵Key出现问题的时候仍旧可以回复,这里设置一个默认回复
- defaultReply = 'I received: ' + msg['Text']
- # 如果图灵Key出现问题,那么reply将会是None
- reply = get_response(msg['Text'])
- # a or b的意思是,如果a有内容,那么返回a,否则返回b
- return reply or defaultReply
- # 为了让修改程序不用多次扫码,使用热启动
- itchat.auto_login(hotReload=True)
- itchat.run()
测试结果显示: