1. 程式人生 > >【Py大法系列--01】20多行代碼生成你的微信聊天機器人

【Py大法系列--01】20多行代碼生成你的微信聊天機器人

tps 自動機 efault 分析 Language 機器人接口 fff except 之一

前言

近期Stack Overflow公布了一項調查顯示,Python已經成了發展最快的主流編程語言,Python搭乘著數據科學和機器學習以及人工智能的浪潮,席卷了整個技術圈。越來越多的人想了解、想學Python,從程序猿到數據分析師,從已退休的耄耋老者到乳臭未幹的小學生,是的,你沒聽錯,有圖有真相:
技術分享圖片
到底Python的魅力在於哪?到底它有著什麽神奇的力量?尼克決定以一個較為輕松的專題,帶大家認識Python。

今天幹什麽

有天剛好發現了一個好玩的Python庫(活躍的開源社區,各種第三方庫也是Python能過流行起來的原因):itchat。itchat是一個開源的微信Python Api,貌似是基於網頁版微信做的。主要支持以下幾種場景:消息獲取、消息發送和應用多開。既然可以獲取消息和回復消息,那我們剛好可以做一個自動回復消息的機器人。話不多說,看看itchat怎麽用。

itchat簡單介紹

  • 登陸
    itchat.auto_login
    
  • itchat安裝
    可以通過本命令安裝itchat:
    pip install itchat
    
  • 給特定的人(如文件助手)發送消息
    import itchat 
    itchat.auto_login() itchat.send(‘Hello, filehelper‘, toUserName=‘filehelper‘)
    
  • 回復消息
    import itchat
    @itchat.msg_register(itchat.content.TEXT)
    def text_reply(msg):
        return msg.text itchat.auto_login() itchat.run()
    

其余接口和Api各位可參考itchat的官方文檔。有了這三個接口,我們就可以做一個自己的機器人了。

如何定制自己的機器人

  • 選擇機器人Api
    我選擇的機器人Api是圖靈,一款免費的機器人接口,官方地址為:圖靈機器人。我用到的Api接口為消息回復接口:
    api_url = ‘http://www.tuling123.com/openapi/api‘
    data = {
        ‘key‘: KEY,
        ‘info‘: msg,
    }
    
    其中api_url為api調用地址,KEY為應用appkey,我的key為
    KEY = ‘9826d3b387c9483badb65992bfbf63bc‘
    
    大家可以隨便用。
  • 所有的代碼
    # coding=utf8
    
    
    import requests
    import itchat
    
    
    KEY = ‘9826d3b387c9483badb65992bfbf63bc‘
    
    
    def get_response(msg):
        print("bei diaoyong!")
        api_url = ‘http://www.tuling123.com/openapi/api‘
        data = {
            ‘key‘: KEY,
            ‘info‘: msg,
        }
        try:
            r = requests.post(api_url, data=data).json()
            return r.get(‘text‘)
        except:
            return
    
    
    @itchat.msg_register(itchat.content.TEXT)
    def tuling_reply(msg):
        print(msg.User)
        print(msg.User[‘NickName‘] + msg[‘Text‘])
        defaultReply = ‘I received: ‘ + msg[‘Text‘]
        reply = "I am a Robot:" + get_response(msg[‘Text‘])
        return reply or defaultReply
    
    
    itchat.auto_login(hotReload=False)
    itchat.run()
    
    

實際上所有的核心代碼不到30行,即可實現了自動機器人的功能。

  • 代碼講解
    get_response函數的參數為msg,將msg發送給圖靈api,將返回消息回復;tuling_reply函數的作用是,收到消息後,將消息轉發給圖靈api,再將圖靈機器人的回復回復給消息的發送人。@itchat.msg_register(itchat.content.TEXT)是回復消息的裝飾器。在以後的Python學習中會給大家講解。

機器人演示效果

我的女神瑾瑾和機器人快樂的聊天記錄:
技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片
不過它似乎有點笨,還有點傲嬌。瑾瑾問它顏值打幾分都不知道怎麽回答,當然是99分啦。叉車出租哪家公司好

它還能做什麽

單調實用的api巧妙的運用即可創造出很多價值,這也是眾多Python庫的特點之一,簡單來說就是Python大法好~目前我能想到的是以下幾種:

  • 防止消息撤回,所有的消息都會被備案
  • 自動回復消息:加入我們有自己的預置消息庫,可以拿itchat做個值班小秘書
  • 監控群聊,別趁我不在偷偷開車嘿嘿嘿嘿… …
  • 搶紅包就不用想了,微信網頁版不支持搶紅包
  • … …

【Py大法系列--01】20多行代碼生成你的微信聊天機器人