<dl id="wqg5j"></dl>

    1. <menuitem id="wqg5j"></menuitem>

      <dl id="wqg5j"><font id="wqg5j"></font></dl>
    2. <dl id="wqg5j"><ins id="wqg5j"></ins></dl>
    3. <dl id="wqg5j"><ins id="wqg5j"><thead id="wqg5j"></thead></ins></dl>
      <li id="wqg5j"><ins id="wqg5j"></ins></li>
      安基網 首頁 編程 軟件學院 查看內容

      用itchat打造屬于自己的微信聊天機器人,掛在服務器上24小時運行

      2018-10-7 00:56| 投稿: xiaotiger |來自: 互聯網


      免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

      摘要: 前幾天逛GitHub看見python上的一個開源項目itchat,可以用來豐富個人微信號或者微信公眾號,于是乎點進去看了看,這是成功的示意圖:下面來具體介紹一下。一.對itchat的調用(源碼不是自己寫的,不用花費太多時間在 ...

      前幾天逛GitHub看見python上的一個開源項目itchat,可以用來豐富個人微信號或者微信公眾號,于是乎點進去看了看,

      這是成功的示意圖:

      下面來具體介紹一下。

      一.對itchat的調用

      (源碼不是自己寫的,不用花費太多時間在看表面代碼上,知道大致的功能即可)

      首先我們要安裝itchat包,使用代碼:

      pip install itchat
      

      雖然包的源碼不是我們寫的,但是還是要想一想,這個包為什么能夠自動連接到微信號。 后來查詢得知,微信有網頁版的,這樣就顯而易見了。http協議的一些基本常識我們之前是了解過的。

      首先看一下,如果我們要給文件助手發一條消息應該怎樣做。

      import itchat
      itchat.auto_login() #連接微信號
      itchat.send(這是一個測試, toUserName=filehelper)#發送內容
      

      當執行上面的命令之后,會自動生成一個二維碼,你自己掃一下,之后就可以給文件助手發消息就行了。

      如果需要自動回復的話:

      #!/usr/bin/python
      #coding=utf8
      import itchat
      import time
      # 自動回復
      # 封裝好的裝飾器,當接收到的消息是Text,即文字消息
      @itchat.msg_register(Text)
      def text_reply(msg):
       # 當消息不是由自己發出的時候
       return u"[主人暫時不在,我是周小秘]{}".format(msg[Text])
       # 回復給好友
      if __name__ == __main__:
       itchat.auto_login(enableCmdQR=2)#enablecmdqr參數是用于在命令行上生成二維碼,用于linux服務器
       itchat.run(debug=True)
      

      二.調用圖靈機器人接口

      圖靈機器人接口:圖靈機器人-智能好用的聊天機器人,自己登錄注冊,然后就會生成一個apikey,如下圖(建議不要把密鑰打開,因為打開之后調用api需要進行算法加密,很復雜,沒有必要)

      下面,我們來看看api接口的文檔

      可以看見,請求方式是post請求,一共需要post4個參數:apikey,請求的內容(也就是收到好友所發的消息),自己的地理位置(用于調用高級功能,比如查看天氣等等,userid(自己隨意設置的一個唯一標識符)),看一下返回的狀態碼的意思:

      下面,我們來自己寫一個調用函數:

      import requests
      import json
      def tulin_robot(text):
       url="http://www.tuling123.com/openapi/api"
       data={
       "key":"*****************",#自己機器人apikey值
       "info":text,#從微信傳輸過來的文本內容
       userid: wechat-robot,
       loc:"武漢"
       }
       r=requests.post(url,data=data).json()
       code=r["code"]
       """100000 文本類
       200000 鏈接類
       302000 新聞類
       308000 菜譜類
       313000 兒歌類
       314000 詩詞類"""
       if code== 302000:
       return r["text"],r["list"]
       if code== 100000:
       return r["text"]
       if code==200000:
       return r["text"],r["url"]
       if code==313000:
       return r["text"],r["function"]
       if code==314000:
       return r["text"],r["function"]
       if code==308000:
       return r["text"],r["list"]
      print(tulin_robot("武漢天氣"))#調用函數tulin_robot,并輸出返回內容
      

      如上所示,當我輸入的內容是“武漢天氣”時,返回內容為:

      也就是說,圖靈機器人的函數已經寫好了。(對requests不太熟悉的話,可以看看我之前的爬蟲文章)

      將上面兩部分結合起來的話,代碼如下:

      #!/usr/bin/python
      #coding=utf8
      import itchat
      import time
      import requests
      import json
      def tulin_robot(text):
       url="http://www.tuling123.com/openapi/api"
       data={
       "key":"e4ad535f0eef4674a7b1ccd34643398b",
       "info":text,
       userid: wechat-robot,
       loc:"武漢"
       }
      #!/usr/bin/python
      #coding=utf8
      import itchat
      import time
      import requests
      import json
      def tulin_robot(text):
       url="http://www.tuling123.com/openapi/api"
       data={
       "key":"e4ad535f0eef4674a7b1ccd34643398b",
       "info":text,
       userid: wechat-robot,
       loc:"武漢"
       }
       r=requests.post(url,data=data).json()
       code=r["code"]
       """100000 文本類
       200000 鏈接類
       302000 新聞類
       308000 菜譜類
       313000 兒歌類
       314000 詩詞類"""
       if code== 302000:
       return r["text"],r["list"]
       if code== 100000:
       return r["text"]
       if code==200000:
       return r["text"],r["url"]
       if code==313000:
       return r["text"],r["function"]
       if code==314000:
       return r["text"],r["function"]
       if code==308000:
       return r["text"],r["list"]
      # 自動回復
      # 封裝好的裝飾器,當接收到的消息是Text,即文字消息
      @itchat.msg_register(Text)
      def text_reply(msg):
       # 當消息不是由自己發出的時候
       return u"[主人暫時不在,我是周小秘]{}".format(tulin_robot(msg[Text]))
       # 回復給好友
      if __name__ == __main__:
       itchat.auto_login(enableCmdQR=2)
       # 獲取自己的UserName
       myUserName = itchat.get_friends(update=True)[0]["UserName"]
       itchat.run(debug=True)
       
      

      三.在Linux服務器上運行該腳本

      自己花10塊錢在阿里云或者騰訊云上買一個Linux服務器,稍微配置一下

      然后用vim創建一個auto_wechat.py文件,寫入上述代碼。

      那么最關鍵的一部分來了,如何讓程序在服務器上24小時運行呢?

      我們知道如果僅僅是運行的話,只需

      python3 auto_wechat.py
      

      即可。

      但是如果終端關閉的話,程序也會終止,那么就要涉及到linux的一個十分強大的命令:screen。 按照我個人的理解,這個命令就是能夠在linux中創造出多個終端,在已有的窗口內部再創造更多的窗口,結合命令符號$,能夠讓內部終端保持在Linux的后臺運行,而不會因為終端的關閉而關閉。(個人linux才剛剛入門,可能理解不是特別深入,大家可以看看更多的攻略)

      所以只需用命令:

      screen python3 auto_wechat.py $
      

      即可保持程序一直在服務器后臺運行。

      掃描二維碼,即可登錄。

      輸入ctrl+A切出終端,輸入命令

      screen ls
      

      即可看見后臺運行的screen進程

      弄到這里,就大功告成啦!


      Tag標簽:

      小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

      本文出自:https://www.toutiao.com/a6609168459488035332/

      免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


      鮮花

      握手

      雷人

      路過

      雞蛋

      相關閱讀

      最新評論

       最新
      返回頂部
      玄机图
      <dl id="wqg5j"></dl>

        1. <menuitem id="wqg5j"></menuitem>

          <dl id="wqg5j"><font id="wqg5j"></font></dl>
        2. <dl id="wqg5j"><ins id="wqg5j"></ins></dl>
        3. <dl id="wqg5j"><ins id="wqg5j"><thead id="wqg5j"></thead></ins></dl>
          <li id="wqg5j"><ins id="wqg5j"></ins></li>
          <dl id="wqg5j"></dl>

            1. <menuitem id="wqg5j"></menuitem>

              <dl id="wqg5j"><font id="wqg5j"></font></dl>
            2. <dl id="wqg5j"><ins id="wqg5j"></ins></dl>
            3. <dl id="wqg5j"><ins id="wqg5j"><thead id="wqg5j"></thead></ins></dl>
              <li id="wqg5j"><ins id="wqg5j"></ins></li>