安基网 首页 IT技术 编程开发 查看内容

用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技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部