首页 > 技术文章 > 微信的自动回复&接入聊天机器人

Ragd0ll 2018-04-04 20:20 原文

 今天偶尔发现了一个有趣的python库--itchat,可以实现微信的自动回复、防撤回,结合图灵机器人还能实现聊天机器人的作用

简单介绍一下配置与工具

win7旗舰版  pycharm  python2.7(我在用python3版本运行时png.py会发生报错,不知道大家那怎么样)

这次用到的是python的itchat模块,关于itchat这里有很详细的介绍,同时也给出官方介绍:itchat

首先就是安装itchat模块,直接在cmd中运行

 

pip install itchat

 

安装完成后就能静静的装逼了

先给出防撤回以及自动回复的代码:

#coding:utf-8
import re
import time

import itchat
from itchat.content import *
import sys 
reload(sys)
sys.setdefaultencoding('utf8')  #由于我们返回的是中文,Unicode的编码问题,读取文件时使用的编码默认是ascii而不是utf8,所以这里我们要把默认编码设为utf8

@itchat.msg_register([TEXT])   #这里我们先选择注册文本
def reply(msg):   #首先设置防撤回,接着ruturn后的内容就是自动回复的内容,这个自动回复仅对好友生效,群里不会生效
    friend = itchat.search_friends(userName=msg['FromUserName'])
    itchat.send(r"Friend:%s -- %s    "
                r"Time:%s    "
                r" Message:%s" % (friend['NickName'], friend['RemarkName'], time.ctime(), msg['Text']),
                toUserName='filehelper')

    return '快还钱'


if __name__ == '__main__':#启动微信自动登录,二维码登录
    itchat.auto_login(True)
    itchat.run()

防撤回功能是原理是将消息备份发送到文件助手toUserName='filehelper',由于是接入微信API,读取消息会比手机端快一些。

如果要针对特定的人进行自动回复,这就就应该将return语句换为itchat.send(msg,toUserName=你的好友)

 

 

接下来就是接入聊天机器人的环节了(贼好玩)

首先要先去图灵机器人注册一个账号去整个机器人

注册以后选择机器人管理-->创建机器人

 

创建完成后,机器人设置-->终端设置,把页面往下拉能看到apikey,这个数据后面需要用到

接下来编写我们的代码:

# coding:utf-8
import requests
from wxpy import *
import itchat
import requests
import json

def get_response(_info):
    print(_info)                                       # 从好友发过来的消息
    api_url = 'http://www.tuling123.com/openapi/api'   # 图灵机器人网址
    data = {
        'key': '你的key',     
        'info': _info,                                 # 这是我们从好友接收到的消息 然后转发给图灵机器人
        'userid': 'wechat-robot',                      # 这里你想改什么都可以
    }
    r = requests.post(api_url, data=data).json()       # 把data数据发
    print(r.get('text'))                               # 机器人回复给好友的消息
    return r

@itchat.msg_register(itchat.content.TEXT)      
def text_reply(msg):
    return get_response(msg["Text"])["text"]           # 将信息转发给好友
if __name__ == '__main__': itchat.auto_login(True) itchat.run()

大家玩的开心!

 

 

 

 

 

friend = itchat.search_friends(userName=msg['FromUserName'])
    itchat.send(r"Friend:%s -- %s    "
                r"Time:%s    "
                r" Message:%s" % (friend['NickName'], friend['RemarkName'], time.ctime(), reply_content),
                toUserName='filehelper')

    itchat.send(r"我已经收到你在【%s】发送的消息【%s】稍后回复。--微信助手(Python版)" % (time.ctime(), reply_content),
                toUserName=msg['FromUserName'])


itchat.auto_login()
itchat.run()

推荐阅读