今天突然看到了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() # 运行代码