热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

能用来做微信自动聊天机器人的itchat接口

文档:http:itchat.readthedocs.iozhlatest朋友给我发了一个大神做的自动聊天机器人程序,短短的几时行代码就能实现聊天机器人,甚是惊讶羡慕。惊

文档:http://itchat.readthedocs.io/zh/latest/

朋友给我发了一个大神做的自动聊天机器人程序,短短的几时行代码就能实现聊天机器人,甚是惊讶羡慕。惊讶之余思考它的原理,如果微信官方提供了聊天接口我咋就不知道它的原理呢,难道是利用爬虫爬取网页版微信进行的聊天消息获取?还是用python模拟了微信网页版的运行环境。


然后就发现这个python程序运用了一个包 itchat,网上一搜,发现它是个好东西

代码出自上方官方文档:pip install itchat之后就可以运行如下代码,微信扫码登陆,即可让图灵机器人替你回复信息了

#coding=utf8
import requests
import itchat

KEY = '8edce3ce905a4c1dbb965e6b35c3834d'

def get_response(msg):
    # 这里我们就像在“3. 实现最简单的与图灵机器人的交互”中做的一样
    # 构造了要发送给服务器的数据
    apiUrl = 'http://www.tuling123.com/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捕获了异常
    # 如果服务器没能正常交互(返回非json或无法连接),那么就会进入下面的return
    except:
        # 将会返回一个None
        return

# 这里是我们在“1. 实现微信消息的获取”中已经用到过的同样的注册方法
@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()

推荐阅读
author-avatar
mobiledu2502871243
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有