Python-微信圖靈機器人

今天寫個好玩的~圖靈機器人
這個參考了http://www.lxweimin.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)

如下是兩個機器人間的對話 哈哈哈


image.png

最后慣例,貼下完整代碼

#!usr/bin/env python3
# -*- coding:utf-8-*-

import itchat
import json
import requests


def 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 data


def 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'])

# 獲得群聊ID
def 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()
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,206評論 4 61
  • # Python 資源大全中文版 我想很多程序員應該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,563評論 6 427
  • 因為周一沒休息好,周二又胡思亂想~弄得今天累累的,差點不去上班~糟糕的狀態,所以明天還是請個假,把報告寫了,還有就...
    桌子和1106閱讀 188評論 0 0
  • 成長記錄 【清空腦子】 我當下的情緒有點焦慮,因為雖然早上論文作業已完成,但感覺沒有多大價值或許說是我根本沒有太多...
    無敵瘋婆娘閱讀 176評論 2 0
  • 1.線程概述 線程是進程的執行單元,進程具有:獨立性,動態性,并發性三個特征。線程是進程的組成部分,一個進程...
    are_you_不服閱讀 358評論 0 2