• 微信聊天机器人2019


    代码部分

    新建一个名为wechatRobot.py的文件,内容如下:

    import urllib.parse
    import urllib.request
    from os import remove

    import itchat
    import requests
    from aip import AipImageClassify
    from itchat.content import *


    class Robot:

    def __init__(self, whiteList, robot):
    """填写你的baidu-aip信息"""
    APP_ID = '你的APP_ID'
    API_KEY = '你的API_KEY'
    SECRET_KEY = '你的SECRET_KEY'
    self._client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
    self._whiteList = whiteList
    self._robot = 'tuling' # 默认使用图灵机器人
    self._pic_class = 'general'

    def run(self):
    client = self._client
    whiteList = self._whiteList

    @itchat.msg_register(TEXT)
    def text_reply(msg):
    nickName = msg.user.nickName
    if(msg.text[0:1]=="#"):
    print('本人消息,忽略。')
    return
    if(nickName not in whiteList):
    print('非白名单用户')
    return
    if(msg.text=="动物识别"):
    self._pic_class = 'animal'
    return '发张小动物的图看看~'
    elif(msg.text=='呼叫小冰'):
    self._robot = 'ice'
    return '我是小冰,什么事儿呀~'
    elif(msg.text=='呼叫图灵'):
    self._robot = 'tuling'
    return '我是图灵机器人,什么事儿呀~'
    else:
    robotChat(msg)

    def robotChat(msg): # 机器人选择
    if self._robot=='ice':
    iceChat(msg)
    return
    if self._robot=='tuling':
    tulingChat(msg)
    return

    def iceChat(msg): # 微软小冰
    print('ice chat')
    print(msg['Text'])
    chatter = msg.user
    sendMsg = msg['Text'].strip()
    try:
    r = requests.get('https://www4.bing.com/socialagent/chat?q=' + sendMsg+'&anid=123456') #小冰接口
    try:
    r1 = r.json()
    info = urllib.parse.unquote(r1['InstantMessage']['ReplyText'])
    print(info)
    chatter.send(info)
    except Exception as e2:
    print(e2)
    except Exception as e:
    print(e)

    def tulingChat(msg): # 图灵机器人
    print('tuling chat')
    print(msg['Text'])
    chatter = msg.user
    sendMsg = msg['Text'].strip()
    try:
    api_url = 'http://www.tuling123.com/openapi/api'
    data = {
    'key': '你的图灵机器人key',
    'info': sendMsg,
    'userid': 'wechat-robot',
    }
    r = requests.post(api_url, data=data)
    try:
    r1 = r.json()
    info = r1.get('text')
    print(info)
    chatter.send(info)
    except Exception as e2:
    print(e2)
    except Exception as e:
    print(e)

    @itchat.msg_register(PICTURE)
    def picture_reply(msg):
    chatter = msg.user
    msg.download(msg.fileName)
    image = get_file_content(msg.fileName)
    if(self._pic_class=='general'):
    general(chatter, image)
    elif(self._pic_class=='animal'):
    animal(chatter, image)
    self._pic_class = 'general'
    remove(msg.fileName)

    # 通用识别
    def general(chatter, image):
    options = {}
    options["baike_num"] = 5
    info = client.advancedGeneral(image, options)
    print(info)
    root = info['result'][0]['root']
    keyword = info['result'][0]['keyword']
    baike_info = info['result'][0]['baike_info']
    reply_str = '这是%s ' % keyword
    if(baike_info):
    reply_str += '百科:%s ' % baike_info['description']
    reply_str += '百科链接:%s' % baike_info['baike_url']
    if(baike_info['image_url']):
    urllib.request.urlretrieve(baike_info['image_url'], 'reply.png')
    chatter.send('@img@%s' % 'reply.png')
    chatter.send(reply_str)

    # 动物识别
    def animal(chatter, image):
    options = {}
    options["top_num"] = 3
    options["baike_num"] = 5
    info = client.animalDetect(image, options)
    print(info)
    name = info['result'][0]['name']
    baike_info = info['result'][0]['baike_info']
    reply_str = '这是%s ' % name
    if(baike_info):
    reply_str += '百科:%s ' % baike_info['description']
    reply_str += '百科链接:%s' % baike_info['baike_url']
    if(baike_info['image_url']):
    urllib.request.urlretrieve(baike_info['image_url'], 'reply.png')
    chatter.send('@img@%s' % 'reply.png')
    chatter.send(reply_str)

    # 读取图片
    def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
    return fp.read()

    itchat.auto_login(hotReload=True)
    itchat.run()
    再新建一个名为main.py的文件,内容如下:

    from wechatRobot import Robot


    whiteList = ['昵称1','昵称2','昵称3','昵称4'] # 聊天白名单,名字是微信昵称

    myRobot = Robot(whiteList=whiteList) # 创建一个自己的聊天机器人
    myRobot.run(http://www.my516.com) # 启动聊天机器人
    运行

    在命令行输入:

    python3 main.py
    会弹出一个二维码,用手机微信扫描此二维码登录微信,之后你的微信账号就变成了聊天机器人,白名单中的用户和你聊天就会触发聊天机器人~

    默认是图灵机器人跟你聊,如果你发送“呼叫小冰”,就会换成小冰跟你聊,如果再发送“呼叫图灵”,就会换回图灵机器人。
    ---------------------

  • 相关阅读:
    Leetcode#179 Largest Number
    Leetcode#155 Min Stack
    Leetcode#14 Longest Common Prefix
    Leetcode#101 Symmetric Tree
    Leetcode#172 Fractorial Trailing Zero
    Leetcode#28 Implement strStr()
    Leetcode#46 Permutations
    Leetcode#48 Rotate Image
    Leetcode#134 Gas station
    Leetcode#137 Single Number II
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11211003.html
Copyright © 2020-2023  润新知