采用python编写微信自动回复程序(基于图灵机器人)

采用python编写微信自动回复程序(基于图灵机器人),第1张

写在开头,注册CSDN这么久,第一次发博客,难免有写得不明白的地方,请读者们谅解!

一、要实现微信自动回复,需要如下准备:

1.注册一个图灵机器人(现在是要收费的,不过一个月的费用也不是很贵),注册好后,会有一个apikey,这个是以后连接图灵机器人需要到的;
采用python编写微信自动回复程序(基于图灵机器人),在这里插入图片描述,第2张

2.安装python(本人是采用python3.7.4进行代码的编写),python安装教程很多,这里不多说了;
3.安装python的itchat和re两个安装包,安装包的教程也很多,这里也不多说了;
4.一个使用年限比较久的微信号(本人的微信号使用了7年),貌似注册一年的微信号是登录不了微信的网页版。因为本程序时基于网页版微信的自动回复。

二、程序中主要的函数解析

1.@itchat.msg_register(['Text’,'Map’, 'Card’, 'Note’, 'Sharing’, 'Picture’, 'Video’])
def tuling_reply(msg):
该函数主要是连接微信和图灵机器人,在两者之间传递消息。使用该函数,先要注册消息的类型。
使用itchat模块读取微信消息的内容时,消息的格式如下:
{
'MsgId’: '204068301817265407’,
'FromUserName’: '@b61d******************************8572f9f’,
'ToUserName’: 'filehelper’,
'MsgType’: 1,
'Content’: '你好’,
'Status’: 3,
'ImgStatus’: 1,
'CreateTime’: 1612185614,
'VoiceLength’: 0,
'PlayLength’: 0,
'FileName’: '’,
'FileSize’: '’,
'MediaId’: '’,
'Url’: '’,
'AppMsgType’: 0,
'StatusNotifyCode’: 0,
'StatusNotifyUserName’: '’,
'RecommendInfo’:
{'UserName’: '’,
'NickName’: '’,
'QQNum’: 0,
'Province’: '’,
'City’: '’,
'Content’: '’,
'Signature’: '’,
'Alias’: '’,
'Scene’: 0,
'VerifyFlag’: 0,
'AttrStatus’: 0,
'Sex’: 0,
'Ticket’: '’,
'OpCode’: 0},
'ForwardFlag’: 0,
'AppInfo’:
{'AppID’: '’, 'Type’: 0},
'HasProductId’: 0,
'Ticket’: '’,
'ImgHeight’: 0,
'ImgWidth’: 0,
'SubMsgType’: 0,
'NewMsgId’: 204068301817265407,
'OriContent’: '’,
'EncryFileName’: '’,
'Type’: 'Text’,
'Text’: '你好’
}

2.def is_right_id(targe_char, string): #在字符串string中,查找单个字符targe_char。
targe_char一般是字符’@'因为使用itchat模块读取微信消息的内容时,FromUserName对应的值是以’@'开头的,通过判断是否存在’@'来区别发送的消息是不是FromUserName或ToUserName类型。
可能是因为微信的保密原因,FromUserName或ToUserName是以字符串形式给出,不是明文形式。每一次重新扫码登录网页版微信时,同一个朋友的UserName都是不一样的,但是登录后是保持不变的。

3.def get_response(msg): #将微信的消息发给图灵机器人
函数中的KEY就是注册图灵机器人是的apikey。

三、功能讲解

1.通过微信的文件传输助手(filehelper)获取需要自动回复的小伙伴的FromUserName,一般是'@b61d******************************8572f9f'这种格式,再将这个数据发给文件传输助手,文件传输助手将会提示”更新聊天小伙伴成功“。
2.如果需要更换聊天小伙伴,发送“更新”或“更新聊天小伙伴'到文件传输助手,文件传输助手将会提示”更新设置已开启,等待设置新的聊天小伙伴“,这是讲收到的FromUserName(@b61d******************************8572f9f)发给文件传输助手,文件传输助手将提示”更新聊天小伙伴成功“。
3.选择好聊天小伙伴,就可以实现自动回复了

四、程序的测试

本人使用python3.7.4,32位,电脑系统是win10,64位。程序测试有效。
1.开启程序时,第一次选择聊天小伙伴
采用python编写微信自动回复程序(基于图灵机器人),在这里插入图片描述,第3张
2. 更新聊天小伙伴
采用python编写微信自动回复程序(基于图灵机器人),在这里插入图片描述,第4张
3.和聊天小伙伴的聊天内容,就不截图了,哈哈哈!

五、完整代码如下

#-*- coding:utf-8 -*-
import requests
import itchat
import re

KEY = '850***************2f'  #可以到图灵机器人官网申请一个apikey,现在要收费,一个月的费用不高
Target_user = 'filehander'
flag = 1

def is_right_id(targe_char, string):         # 在字符串string中,查找单个字符targe_char
    a = re.search(targe_char, string)        # 采用正则表达式查找,如果找到返回True,否则返回False
    if a:
        return True
    else:
        return False

def get_response(msg):
    apiUrl = '/openapi/api'
    data = {
        'key'    : KEY,
        'info'   : msg,
        'userid' : 'wechat-robot',
    }
    try:
        r = requests.post(apiUrl, data=data).json()   # 字典的get方法在字典没有'text'值的时候会返回None而不会抛出异常
        return r.get('text')                          # 为了防止服务器没有正常响应导致程序异常退出,这里用try-except捕获了异常
    except:                                           # 如果服务器没能正常交互(返回非json或无法连接),那么就会进入下面的return
        return                                        # 将会返回一个None


@itchat.msg_register(['Text','Map', 'Card', 'Note', 'Sharing', 'Picture', 'Video'])
def tuling_reply(msg):
    global Target_user, flag
    if flag == 1:
        itchat.send('收到的消息:' + msg['Text'] + '\n' + '消息来自:' + msg['FromUserName'], toUserName='filehelper')
    if msg['FromUserName'] == Target_user or msg['ToUserName'] == 'filehelper':
        if is_right_id('@', msg['Content']):
            Target_user = msg['Content']
            flag = 0
            itchat.send('更新聊天小伙伴成功', toUserName='filehelper')
        if msg['ToUserName'] == 'filehelper' and msg['Content'] == '更新聊天小伙伴' or msg['Content'] == '更新':
            flag = 1
            itchat.send('更新设置已开启,等待设置新的聊天小伙伴', toUserName='filehelper')
        if msg['FromUserName'] == Target_user:
            reply = get_response(msg['Text'])
            itchat.send(reply, toUserName=Target_user)

itchat.auto_login(hotReload=True)
itchat.run()

六、参考资料

1.itchat——使用python登录网页版微信
2.微信的自动回复&接入聊天机器人

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 采用python编写微信自动回复程序(基于图灵机器人)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情