利用python书写微信机器人

CSDN博客:皮乾东
知乎:Htrying
微博:Htring的微博
微信公众号:自然语言处理爱好者(ID:NLP_lover)

利用python书写微信机器人

1.使用环境

系统:window10

IDE:spyder

主要程序包:itchat(直接在doc中 命令:pip install itchat)

注:本系统的环境已在之前的博客中介绍过,这里不做赘述

2.源程序

import requests
import itchat

#可以自己向图灵机器人申请,这里我已经提供
KEY = '2c242b43e94a4e0ca984629828d4e164'

def get_response(msg):
    # 构造了要发送给服务器的数据
    # 使用图灵机器人提供的接口
    apiUrl = 'http://www.tuling123.com/openapi/api'
    #一个发动的api的数据
    data = {
        'key'    : KEY,
        'info'   : msg,
        'userid' : 'wechat-robot',
    }
    try:
        #使用post方法去请求
        r = requests.post(apiUrl, data=data).json()
        # 字典的get方法在字典没有'text'值的时候会返回None而不会抛出异常
        return r.get('text')
    # 为了防止服务器没有正常响应导致程序异常退出,这里用try-except捕获了异常
    # 如果服务器没能正常交互(返回非json或无法连接),那么就会进入下面的return
    except:
        # 将会返回一个None
        return

# 使用装饰器
@itchat.msg_register(itchat.content.TEXT)
#获取图灵机器人返回的数据
#处理图灵机器人出现异常的时候
def tuling_reply(msg):
    # 为了保证在图灵Key出现问题的时候仍旧可以回复,这里设置一个默认回复
    defaultReply = 'I received: ' + msg['Text']
    # 如果图灵Key出现问题,那么reply将会是None
    reply = get_response(msg['Text'])
    # a or b的意思是,如果a有内容,那么返回a,否则返回b
    # 有内容一般就是指非空或者非None,你可以用`if a: print('True')`来测试
    return reply or defaultReply

# 为了让实验过程更加方便(修改程序不用多次扫码),我们使用热启动
itchat.auto_login(hotReload=True)
itchat.run()

3.程序运行结果

由于本程序主要是在手机上使用微信进行操作,这里对程序运行后进行简要描述:在运行本程序后,系统会自动生成一个二维码供要使用微信机器人使用,扫描后即可使用。

这里写图片描述

其中涉及到装饰器的知识,可移步:https://blog.csdn.net/meiqi0538/article/details/79690398
更多详细的可以参见:http://itchat.readthedocs.io/zh/latest/tutorial/tutorial0/

猜你喜欢

转载自blog.csdn.net/meiqi0538/article/details/79714333