前言:
自从微信禁止网页版登陆之后,itchat 库也就都不能用了,新号不能再登录网页版,而且itchat 库在headers里面只放了UserAgent,其他字段都没有放。所以在你登录的瞬间,微信就已经知道你这个账号没有用浏览器登录了!
这篇博客就简单来介绍一个wxauto库来操作微信。
地址:
cluic/wxauto: Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,持续更新中 (github.com)
一个简单的样例:
from wxauto import *send_msg = '你好' # 发送消息内容
who = '文件传输助手' # 指定发送对象# 获取当前微信客户端
wx = WeChat()# 向某人发送消息(以`文件传输助手`为例)
wx.ChatWith(who) # 打开`文件传输助手`聊天窗口
wx.SendMsg(send_msg) # 向`文件传输助手`发送消息:你好~
自动回复样例:
import requests
from wxauto import *
import time
import re
send_msg = '你好' # 发送消息内容
who = '文件传输助手' # 指定发送对象# 获取当前微信客户端
wx = WeChat()# 获取会话列表
SessionList=wx.GetSessionList()print(wx.GetAllMessage[-1][1][:4])print(wx.GetSessionList()[4])
# 群聊白名单,此将不会触发自动回复名单内
rigthlist={"没太多对错":0,"":0}while (True):# 自动回复print(wx.GetAllMessage[-1])# wx.GetSessionList()[4] != SessionList[4] andif ( wx.GetAllMessage[-1][0]!='你的id'if(wx.GetSessionList()[4] in rigthlist.keys() ):print("触发白名单,该群不做回复!")else:print(SessionList[4] + wx.GetSessionList()[4] + "\n")SessionList = wx.GetSessionList()who = wx.GetSessionList()[4]wx.ChatWith(who)wx.SendMsg("自动回复:我的主人暂时不在电脑前,请稍候联系!")# ai回复#此处利用了微信对话开放平台的apiurl = 'https://openai.weixin.qq.com/openapi/sign/'data = {'userid': "",}r = requests.post(url, data, )url = "https://openai.weixin.qq.com/openapi/aibot/"# 最近的消息query = wx.GetAllMessage[-1][1]data = {"signature":r.json()["signature"],"query": query}r = requests.post(url, data, )print(r.json()["answer"])who = SessionList[4]wx.ChatWith(who)wx.SendMsg("来自助手ai小微的消息:" + r.json()["answer"])#有人艾特你if(wx.GetAllMessage[-1][1][:4]=="你的群昵称"#此处使用了另一个免费的ai回复apiurl = 'http://api.qingyunke.com/api.php'data = {'key': "free",'appid': '0',"msg": wx.GetAllMessage[-1][1][4:]}r = requests.get(url, data, )print(r.json())senddata=r.json()["content"]who = wx.GetSessionList()[4]wx.ChatWith(who)wx.SendMsg("来自助手小皮的消息:"+senddata)time.sleep(2)
这段代码使用 wxauto 库与电脑上的微信客户端交互的脚本。脚本首先导入必要的库,包括 requests 和 wxauto。然后,它初始化一个 WeChat 对象,该对象代表微信客户端,并定义要发送的消息和收件人。
脚本然后进入无限循环,不断检查新消息。如果收到了新消息,并且该消息不是来自特定用户(由 if 语句指示),脚本将使用预定义的消息回复该消息,然后使用 requests 库发送请求到 web API。然后将 API 的响应提取出来并作为消息发送回收件人。
其中脚本还有一些代码,检查群聊“白名单”,如果群聊在列表中,则跳过自动响应。
需要注意的是:
使用ui进行操作,功能有限,比如只能监听一个窗口的消息,需要一定的手工操作,不能完全自动。
使用ui进行操作,动作较慢,不能立即回复,并且回复消息时需要窗口在前端。
使用时请确保微信是在登录状态。
更多内容请关注: