python微信机器人自动回复

点点圈 提交于 2020-05-02 04:52:01

python3环境

一.需要的包

import itchat
import requests
import re

图灵机器人api

  所需的包安装都比较简单,re是python自带的模块,itchat是python与微信交互的一个第三方库,直接pip install itchat即可,但是需要注意的是,如果你的微信不能登录微信网页版,那么很遗憾,本篇文章的功能将不能实现;requests是一个网络请求的模块,也只需要pip install requests即可;要实现自动回复并聊天功能,需要连接机器人接口,这里我们调用图灵的api,可以进行免费注册,需要注意的是必须要认证,否则一天只能调用一两次,调用方法可以参考:https://www.cnblogs.com/wangtaobiu/p/10603924.html 中的第三部分.

二.主要思路

  首先通过python的itchat登录微信,每当接收到消息时,后台会通过图灵接口生成要回复的话(对于图片表情需做特别处理,感兴趣的可以自己研究),如果不是本人回复,可在回复前加上机器人标识.

三.参考代码

import itchat
import requests
import re


# 抓取网页
def getHtmlText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""


# 自动回复
# 封装好的装饰器,当接收到的消息是Text,即文字消息
@itchat.msg_register(['Text', 'Map', 'Card', 'Note', 'Sharing', 'Picture'])
def text_reply(msg):
    # 当消息不是由自己发出的时候
    if not msg['FromUserName'] == Name["屁桃🍑"]:   # 这里是你自己的微信昵称
        # 回复给好友
        url = "http://www.tuling123.com/openapi/api?key=6c2cf***************b89c26&info="  # 图灵的接口
        print(msg['Text'])
        url = url + msg['Text']
        html = getHtmlText(url)
        message = re.findall(r'\"text\"\:\".*?\"', html)
        reply = '机器人: ' + eval(message[0].split(':')[1])
        return reply


if __name__ == '__main__':
    itchat.auto_login()

    # 获取自己的UserName
    friends = itchat.get_friends(update=True)[0:]
    Name = {}
    Nic = []
    User = []
    for i in range(len(friends)):
        Nic.append(friends[i]["NickName"])
        User.append(friends[i]["UserName"])
    for i in range(len(friends)):
        Name[Nic[i]] = User[i]
    itchat.run()

 

  

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!