<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的调用

      £¨源码不是自己写的£¬不用花费太多时间在看表面代码上£¬知?#26469;?#33268;的功能即可£©

      首先我们要安装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?#38382;?#26159;用于在命令行上生成二维码£¬用于linux服务器
       itchat.run(debug=True)
      

      二.调用图灵机器人接口

      图灵机器人接口£º图灵机器人-智能好用的聊天机器人£¬自己登录注册£¬然后?#31361;?#29983;成一个apikey£¬如下图£¨建议不要把密钥打开£¬因为打开之后调用api需要进行算法?#29992;Ü£?#24456;复杂£¬没有必要£©

      下面£¬我们来看看api接口的文档

      可以看见£¬请求方式是post请求£¬一共需要post4个?#38382;ý£º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块钱在阿里云或者腾?#23545;?#19978;买一个Linux服务器,稍微配置一下

      然后用vim创建一个auto_wechat.py文件£¬写入上述代码¡£

      那么最关键的一部分来了£¬如何让程序在服务器上24小时运行呢£¿

      我们知道如果仅仅是运行的话£¬只需

      python3 auto_wechat.py
      

      即可¡£

      但是如果终端关闭的话£¬程序?#19981;?#32456;止£¬那么就要涉及到linux的一个十分?#30475;?#30340;命令£ºscreen¡£ 按照我个人的理解£¬这个命令就是能够在linux?#20889;?#36896;出多个终端£¬在已有的窗口内部再创造更多的窗口£¬结合命令符号$£¬能够让内部终端保持在Linux的后台运行£¬而不会因为终端的关闭而关闭¡££¨个人linux才刚刚入门£¬可能理解不是特别深入£¬大家可以看看更多的攻略£©

      所以只需用命令£º

      screen python3 auto_wechat.py $
      

      即可保持程序一直在服务器后台运?#23567;?/p>

      扫描二维码£¬即可登录¡£

      输入ctrl+A切出终端£¬输入命令

      screen ls
      

      即可看见后台运行的screen进程

      弄到这里£¬就大功告成啦£¡


      Tag标签:

      小编推荐£º欲学习电脑技术¡¢系统维护¡¢网络管理¡¢编程开发和安全攻防等高端IT技术£¬请 点击这里 注册账号£¬公开课频道价值万元IT培训教程免费学£¬让您少走弯路¡¢事半功倍£¬好工作升职?#26377;„¦?/font>

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

      免责声明£º本站系公益性非盈利IT技术普及网£¬本文由投稿者转载自互联网的公开文章£¬文末均已注明出处£¬其内容和图片版权归原网站或作者所有£¬文中所述不代表本站观点£¬若有无意侵权或转载不当之处请从网站右下角联系我们处理£¬谢谢合作£¡


      鲜花

      ?#24080;?/a>

      雷人

      路过

      鸡蛋

      相关阅读

      最新评论

       最新
      返回顶部
      Ðþ»úͼ
      <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>