继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python-微信图灵机器人

隔江千里
关注TA
已关注
手记 299
粉丝 39
获赞 182

今天写个好玩的~图灵机器人
这个参考了http://www.jianshu.com/p/5d4de51f5375这篇文章
用的库是之前爬取微信好友头像的那个库itchat,这个库可以很方便的获取微信里的一些信息
首先要到图灵机器人网站去注册开通一个机器人,图灵机器人也是可以直接接入微信公众号的
图灵机器人接入微信其实就是我们发送一个请求到图灵机器人,然后返回给我们一个信息给我,调用接口地址是它官网的API
http://doc.tuling123.com/openapi2/263611
就是发送一个post请求而已,这个是2.0版本的接口,1.0是get请求的
参考API可以知道请求数据格式:

    {    "reqType":1,    "perception": {        "inputText": {            "text": "附近的酒店"
        },        "inputImage": {            "url": "imageUrl"
        },        "selfInfo": {            "location": {                "city": "北京",                "latitude": "39.45492",                "longitude": "119.239293",                "nearest_poi_name": "上地环岛南",                "province": "北京",                "street": "信息路"
            }
        }
    },    "userInfo": {        "apiKey": "",        "userId": ""
    }
}

如果只要发送文字,只要perception中的inputText和 userInfo就欧科了
apikey是在图灵机器人官网获取,userId自己定义一个即可

    userId = '123456'
    inputText = {'text': text}
    key = 'your apiKey'
    userInfo = {'apiKey': key, 'userId': userId}
    perception = {'inputText': inputText}
    data = {'perception': perception, 'userInfo': userInfo}

然后用requests发送一个post请求

url = 'http://openapi.tuling123.com/openapi/api/v2'
    response = requests.post(url=url, data=json.dumps(data))
    response.encoding = 'utf-8'
    result = response.json()
    answer = result['results'][0]['values']['text']

这个answer就是机器人返回给我们的
然后我们用itchat发送到微信好友,就可以实现和机器人聊天了

@itchat.msg_register(itchat.content.TEXT)def text_reply(msg):
    myself = itchat.get_friends(update=True)[0]['NickName']
    content = msg['Content']
    friend = msg['User']['NickName']
    answer = get_answer(msg['Text'])
    itchat.send(answer, msg['FromUserName'])

如果发送群里,也差不多,这需要换成小组的ID

@itchat.msg_register(itchat.content.TEXT, isGroupChat=True)def group_text_reply(msg):
    group_name = msg['User']['NickName'] # 获取群聊名称
    group = ['群聊测试', 'itchat'] # 设置聊天的群
    group_info = itchat.search_chatrooms(name=name)
    item = group_info[0]['UserName']    if group_name in group:
        itchat.send(get_answer(msg['Text']), item)

如下是两个机器人间的对话 哈哈哈


https://img3.mukewang.com/5d58133c0001cdf604550904.png

image.png

最后惯例,贴下完整代码

#!usr/bin/env python3# -*- coding:utf-8-*-import itchatimport jsonimport requestsdef get_data(text):
    userId = '123456'
    inputText = {'text': text}
    key = 'your apiKey'
    userInfo = {'apiKey': key, 'userId': userId}
    perception = {'inputText': inputText}
    data = {'perception': perception, 'userInfo': userInfo}    return datadef get_answer(text):
    data = get_data(text)
    url = 'http://openapi.tuling123.com/openapi/api/v2'
    response = requests.post(url=url, data=json.dumps(data))
    response.encoding = 'utf-8'
    result = response.json()
    answer = result['results'][0]['values']['text']    return answer# 回复好友@itchat.msg_register(itchat.content.TEXT)def text_reply(msg):
    myself = itchat.get_friends(update=True)[0]['NickName']
    content = msg['Content']
    friend = msg['User']['NickName']    # 给特定的人的回复,并且自己发的 不回复
    if friend != myself and friend!= 'FRIEND':
        print('%s: %s' % (friend, content))
        answer = get_answer(msg['Text'])
        itchat.send(answer, msg['FromUserName'])
        print('我:%s' % answer)    else:
        itchat.send('你是猪', msg['FromUserName'])# 获得群聊IDdef group_id(name):
    df = itchat.search_chatrooms(name=name)    return df[0]['UserName']# 发送群聊@itchat.msg_register(itchat.content.TEXT, isGroupChat=True)def group_text_reply(msg):
    group_name = msg['User']['NickName']
    group = ['群聊测试', 'itchat']
    igroup_info = itchat.search_chatrooms(name=name)
    item = group_info[0]['UserName']    if group_name in group:
        itchat.send(get_answer(msg['Text']), item)

itchat.auto_login(hotReload=True)
itchat.run()



作者:mocokoo
链接:https://www.jianshu.com/p/62fe9dbe64c6

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP