微信机器人,实现自动回复

今天突然看到了PyWeChatSpy ,众所周知,微信网页版不能登录,之前的微信机器人都不能用了,用以下代码,可以实现自动回复。详情可以去github搜,注意微信的版本,目前好像只支持2.8.0.133

我在别人的基础上修改了一下代码,具体如下:

from PyWeChatSpy import WeChatSpy
import random
import re
import json
import requests
import time

# 只支持2.8.0.133

userid = str(1)
# 1 可以替换成任何长度小于32的字符串哦
apikey = str('e75a3b457d4b48eabea084b0b1006a2a')
# 这里的apikey,记得替换成你自己的apikey(图灵机器人)

# 指定某些给我发了--start的用户才自动回复。输入--stop停止自动回复
friends = []


def my_parser(data):
    if data["type"] == 5:  # 判断是微信消息数据
        for msg in data["data"]:
            if (msg["self"] == 0):
                # 遍历微信消息
                print(msg["content"])
                if msg["msg_type"] == 10000:  # 判断是微信拍一拍系统提示
                    m = re.search('.*?拍了拍我。', msg["content"])
                    if m:  # 判断为拍一拍
                        image_path = f"./images/{random.randint(1, 4)}.jpg"  # 随机选一张回复用的图片
                        itchat.send_file(msg["wxid1"], image_path)
                        itchat.send_text(msg["wxid1"], "我可能在学习吧(自动回复)")


                elif msg["msg_type"] == 1:  # 判断为文本消息
                    if (re.search('.*?@chatroom', msg["wxid1"]) == None):  # 判断不是群消息
                        if (msg["content"] == '--start'):  #输入--start 开始机器人
                            friends.append(msg['wxid1'])
                            itchat.send_text(msg["wxid1"], "机器人打开。", )
                            continue
                        if (msg["content"] == '--stop'):  #输入--stop 关闭机器人
                            friends.remove(msg['wxid1'])
                            itchat.send_text(msg["wxid1"], "机器人关闭。", )
                            continue
                        print(msg)
                        m = re.search('在吗', msg["content"])
                        if msg["wxid1"] in friends:  # 如果在friends数组中就自动回复,不在就不回复
                            if m:
                                itchat.send_text(msg["wxid1"], "我是机器人,有事请留言。", )
                            # print(msg["msg_type"])
                            # print(msg["self"])
                            # print(msg["wxid1"])
                            # print(data["pid"])

                            else:
                                api = r'http://openapi.tuling123.com/openapi/api/v2'
                                # 创建post提交的数据
                                data = {
                                    "perception": {
                                        "inputText": {
                                            "text": msg["content"]
                                        }
                                    },
                                    "userInfo": {
                                        "apiKey": apikey,
                                        "userId": userid,
                                    }
                                }
                                # 转化为json格式
                                jsondata = json.dumps(data)
                                # 发起post请求
                                response = requests.post(api, data=jsondata)
                                # 将返回的json数据解码
                                robot_res = json.loads(response.content)
                                # 提取对话数据
                                print(robot_res["results"][0]['values']['text'])
                                # content = msg["content"]
                                # 输入对话内容
                                # robot(content)
                                itchat.send_text(msg["wxid1"], '[' + robot_res["results"][0]['values']['text'] + '(自动回复)]')


itchat = WeChatSpy(parser=my_parser)  # 实例化WeChatSpy类

if __name__ == '__main__':
    itchat.run()  # 运行代码

posted @ 2020-12-14 08:41  吴雄  阅读(2199)  评论(0编辑  收藏  举报